@visactor/vseed 0.1.42 → 0.1.44

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 (324) hide show
  1. package/dist/cjs/index.cjs +3 -3
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/esm/builder/builder/advanced/colorItems.d.ts +4 -1
  4. package/dist/esm/builder/builder/advanced/colorItems.js +1 -1
  5. package/dist/esm/builder/builder/advanced/colorItems.js.map +1 -1
  6. package/dist/esm/builder/builder/builder.d.ts +4392 -3
  7. package/dist/esm/dataReshape/constant.d.ts +1 -0
  8. package/dist/esm/dataReshape/constant.js +2 -1
  9. package/dist/esm/dataReshape/constant.js.map +1 -1
  10. package/dist/esm/dataReshape/dataReshapeByEncoding.d.ts +1 -0
  11. package/dist/esm/dataReshape/dataReshapeByEncoding.js +3 -2
  12. package/dist/esm/dataReshape/dataReshapeByEncoding.js.map +1 -1
  13. package/dist/esm/dataReshape/foldMeasures.d.ts +1 -0
  14. package/dist/esm/dataReshape/foldMeasures.js +5 -2
  15. package/dist/esm/dataReshape/foldMeasures.js.map +1 -1
  16. package/dist/esm/dataReshape/unfoldDimensions.js +14 -9
  17. package/dist/esm/dataReshape/unfoldDimensions.js.map +1 -1
  18. package/dist/esm/dataSelector/selector.d.ts +1 -1
  19. package/dist/esm/dataSelector/selector.js +1 -2
  20. package/dist/esm/dataSelector/selector.js.map +1 -1
  21. package/dist/esm/pipeline/advanced/chart/pipeline/area.js +2 -2
  22. package/dist/esm/pipeline/advanced/chart/pipeline/area.js.map +1 -1
  23. package/dist/esm/pipeline/advanced/chart/pipeline/areaPercent.js +2 -2
  24. package/dist/esm/pipeline/advanced/chart/pipeline/areaPercent.js.map +1 -1
  25. package/dist/esm/pipeline/advanced/chart/pipeline/bar.js +2 -2
  26. package/dist/esm/pipeline/advanced/chart/pipeline/bar.js.map +1 -1
  27. package/dist/esm/pipeline/advanced/chart/pipeline/barParallel.js +2 -2
  28. package/dist/esm/pipeline/advanced/chart/pipeline/barParallel.js.map +1 -1
  29. package/dist/esm/pipeline/advanced/chart/pipeline/barPercent.js +2 -2
  30. package/dist/esm/pipeline/advanced/chart/pipeline/barPercent.js.map +1 -1
  31. package/dist/esm/pipeline/advanced/chart/pipeline/boxplot.js +2 -2
  32. package/dist/esm/pipeline/advanced/chart/pipeline/boxplot.js.map +1 -1
  33. package/dist/esm/pipeline/advanced/chart/pipeline/column.js +2 -2
  34. package/dist/esm/pipeline/advanced/chart/pipeline/column.js.map +1 -1
  35. package/dist/esm/pipeline/advanced/chart/pipeline/columnParallel.js +2 -2
  36. package/dist/esm/pipeline/advanced/chart/pipeline/columnParallel.js.map +1 -1
  37. package/dist/esm/pipeline/advanced/chart/pipeline/columnPercent.js +2 -2
  38. package/dist/esm/pipeline/advanced/chart/pipeline/columnPercent.js.map +1 -1
  39. package/dist/esm/pipeline/advanced/chart/pipeline/donut.js +2 -2
  40. package/dist/esm/pipeline/advanced/chart/pipeline/donut.js.map +1 -1
  41. package/dist/esm/pipeline/advanced/chart/pipeline/dualAxis.js +2 -2
  42. package/dist/esm/pipeline/advanced/chart/pipeline/dualAxis.js.map +1 -1
  43. package/dist/esm/pipeline/advanced/chart/pipeline/funnel.js +2 -2
  44. package/dist/esm/pipeline/advanced/chart/pipeline/funnel.js.map +1 -1
  45. package/dist/esm/pipeline/advanced/chart/pipeline/heatmap.js +2 -2
  46. package/dist/esm/pipeline/advanced/chart/pipeline/heatmap.js.map +1 -1
  47. package/dist/esm/pipeline/advanced/chart/pipeline/histogram.js +4 -2
  48. package/dist/esm/pipeline/advanced/chart/pipeline/histogram.js.map +1 -1
  49. package/dist/esm/pipeline/advanced/chart/pipeline/line.js +2 -2
  50. package/dist/esm/pipeline/advanced/chart/pipeline/line.js.map +1 -1
  51. package/dist/esm/pipeline/advanced/chart/pipeline/pie.js +2 -2
  52. package/dist/esm/pipeline/advanced/chart/pipeline/pie.js.map +1 -1
  53. package/dist/esm/pipeline/advanced/chart/pipeline/radar.js +2 -2
  54. package/dist/esm/pipeline/advanced/chart/pipeline/radar.js.map +1 -1
  55. package/dist/esm/pipeline/advanced/chart/pipeline/rose.js +2 -2
  56. package/dist/esm/pipeline/advanced/chart/pipeline/rose.js.map +1 -1
  57. package/dist/esm/pipeline/advanced/chart/pipeline/roseParallel.js +2 -2
  58. package/dist/esm/pipeline/advanced/chart/pipeline/roseParallel.js.map +1 -1
  59. package/dist/esm/pipeline/advanced/chart/pipeline/scatter.js +2 -2
  60. package/dist/esm/pipeline/advanced/chart/pipeline/scatter.js.map +1 -1
  61. package/dist/esm/pipeline/advanced/chart/pipes/analysis/sortLegend.js +3 -6
  62. package/dist/esm/pipeline/advanced/chart/pipes/analysis/sortLegend.js.map +1 -1
  63. package/dist/esm/pipeline/advanced/chart/pipes/config/histogram.d.ts +1 -0
  64. package/dist/esm/pipeline/advanced/chart/pipes/config/histogram.js +35 -2
  65. package/dist/esm/pipeline/advanced/chart/pipes/config/histogram.js.map +1 -1
  66. package/dist/esm/pipeline/advanced/chart/pipes/default/{defaultMeasureName.d.ts → defaultMeasureId.d.ts} +1 -1
  67. package/dist/esm/pipeline/advanced/chart/pipes/default/defaultMeasureId.js +16 -0
  68. package/dist/esm/pipeline/advanced/chart/pipes/default/defaultMeasureId.js.map +1 -0
  69. package/dist/esm/pipeline/advanced/chart/pipes/default/index.d.ts +1 -1
  70. package/dist/esm/pipeline/advanced/chart/pipes/default/index.js +2 -2
  71. package/dist/esm/pipeline/advanced/chart/pipes/encoding/bar.js +6 -6
  72. package/dist/esm/pipeline/advanced/chart/pipes/encoding/bar.js.map +1 -1
  73. package/dist/esm/pipeline/advanced/chart/pipes/encoding/boxplot.js +7 -7
  74. package/dist/esm/pipeline/advanced/chart/pipes/encoding/boxplot.js.map +1 -1
  75. package/dist/esm/pipeline/advanced/chart/pipes/encoding/color/addColorToEncoding.d.ts +1 -1
  76. package/dist/esm/pipeline/advanced/chart/pipes/encoding/color/addColorToEncoding.js +4 -4
  77. package/dist/esm/pipeline/advanced/chart/pipes/encoding/color/addColorToEncoding.js.map +1 -1
  78. package/dist/esm/pipeline/advanced/chart/pipes/encoding/column.js +6 -6
  79. package/dist/esm/pipeline/advanced/chart/pipes/encoding/column.js.map +1 -1
  80. package/dist/esm/pipeline/advanced/chart/pipes/encoding/dualAxis.js +6 -6
  81. package/dist/esm/pipeline/advanced/chart/pipes/encoding/dualAxis.js.map +1 -1
  82. package/dist/esm/pipeline/advanced/chart/pipes/encoding/funnel.js +5 -5
  83. package/dist/esm/pipeline/advanced/chart/pipes/encoding/funnel.js.map +1 -1
  84. package/dist/esm/pipeline/advanced/chart/pipes/encoding/heatmap.js +7 -7
  85. package/dist/esm/pipeline/advanced/chart/pipes/encoding/heatmap.js.map +1 -1
  86. package/dist/esm/pipeline/advanced/chart/pipes/encoding/histogram.js +6 -6
  87. package/dist/esm/pipeline/advanced/chart/pipes/encoding/histogram.js.map +1 -1
  88. package/dist/esm/pipeline/advanced/chart/pipes/encoding/line.js +5 -5
  89. package/dist/esm/pipeline/advanced/chart/pipes/encoding/line.js.map +1 -1
  90. package/dist/esm/pipeline/advanced/chart/pipes/encoding/pie.js +5 -5
  91. package/dist/esm/pipeline/advanced/chart/pipes/encoding/pie.js.map +1 -1
  92. package/dist/esm/pipeline/advanced/chart/pipes/encoding/radar.js +5 -5
  93. package/dist/esm/pipeline/advanced/chart/pipes/encoding/radar.js.map +1 -1
  94. package/dist/esm/pipeline/advanced/chart/pipes/encoding/rose.js +6 -6
  95. package/dist/esm/pipeline/advanced/chart/pipes/encoding/rose.js.map +1 -1
  96. package/dist/esm/pipeline/advanced/chart/pipes/encoding/scatter.js +7 -7
  97. package/dist/esm/pipeline/advanced/chart/pipes/encoding/scatter.js.map +1 -1
  98. package/dist/esm/pipeline/advanced/chart/pipes/regressionLine/regressionLine.js +1 -1
  99. package/dist/esm/pipeline/advanced/chart/pipes/regressionLine/regressionLine.js.map +1 -1
  100. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.js +6 -3
  101. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.js.map +1 -1
  102. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithEncoding.js +4 -1
  103. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithEncoding.js.map +1 -1
  104. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithHistogramEncoding.js +22 -2
  105. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithHistogramEncoding.js.map +1 -1
  106. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithScatterEncoding.js +6 -3
  107. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithScatterEncoding.js.map +1 -1
  108. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithHistogramEncoding.js +22 -3
  109. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithHistogramEncoding.js.map +1 -1
  110. package/dist/esm/pipeline/advanced/table/pipeline/pivotTable.js +3 -2
  111. package/dist/esm/pipeline/advanced/table/pipeline/pivotTable.js.map +1 -1
  112. package/dist/esm/pipeline/advanced/table/pipeline/table.js +2 -1
  113. package/dist/esm/pipeline/advanced/table/pipeline/table.js.map +1 -1
  114. package/dist/esm/pipeline/advanced/table/pipes/{default/defaultMeasureName.d.ts → cellStyle/cellStyle.d.ts} +1 -1
  115. package/dist/esm/pipeline/advanced/table/pipes/cellStyle/cellStyle.js +16 -0
  116. package/dist/esm/pipeline/advanced/table/pipes/cellStyle/cellStyle.js.map +1 -0
  117. package/dist/esm/pipeline/advanced/table/pipes/cellStyle/index.d.ts +1 -0
  118. package/dist/esm/pipeline/advanced/table/pipes/cellStyle/index.js +2 -0
  119. package/dist/esm/pipeline/advanced/table/pipes/default/defaultMeasureId.d.ts +2 -0
  120. package/dist/esm/pipeline/advanced/table/pipes/default/{defaultMeasureName.js → defaultMeasureId.js} +5 -5
  121. package/dist/esm/pipeline/advanced/table/pipes/default/defaultMeasureId.js.map +1 -0
  122. package/dist/esm/pipeline/advanced/table/pipes/default/index.d.ts +1 -1
  123. package/dist/esm/pipeline/advanced/table/pipes/default/index.js +2 -2
  124. package/dist/esm/pipeline/advanced/table/pipes/index.d.ts +1 -0
  125. package/dist/esm/pipeline/advanced/table/pipes/index.js +1 -0
  126. package/dist/esm/pipeline/spec/chart/pipeline/histogram.js.map +1 -1
  127. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationArea.js +2 -0
  128. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationArea.js.map +1 -1
  129. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationAreaBand.js +2 -0
  130. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationAreaBand.js.map +1 -1
  131. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationHorizontalLine.js +22 -3
  132. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationHorizontalLine.js.map +1 -1
  133. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationPoint.js +2 -0
  134. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationPoint.js.map +1 -1
  135. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationVerticalLine.js +20 -1
  136. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationVerticalLine.js.map +1 -1
  137. package/dist/esm/pipeline/spec/chart/pipes/annotation/splitLine.js +24 -11
  138. package/dist/esm/pipeline/spec/chart/pipes/annotation/splitLine.js.map +1 -1
  139. package/dist/esm/pipeline/spec/chart/pipes/axes/xBand.js +2 -1
  140. package/dist/esm/pipeline/spec/chart/pipes/axes/xBand.js.map +1 -1
  141. package/dist/esm/pipeline/spec/chart/pipes/axes/xLinear.js +2 -1
  142. package/dist/esm/pipeline/spec/chart/pipes/axes/xLinear.js.map +1 -1
  143. package/dist/esm/pipeline/spec/chart/pipes/axes/yBand.js +2 -1
  144. package/dist/esm/pipeline/spec/chart/pipes/axes/yBand.js.map +1 -1
  145. package/dist/esm/pipeline/spec/chart/pipes/axes/yLinear.js +2 -1
  146. package/dist/esm/pipeline/spec/chart/pipes/axes/yLinear.js.map +1 -1
  147. package/dist/esm/pipeline/spec/chart/pipes/axes/yLinearPrimary.js +2 -1
  148. package/dist/esm/pipeline/spec/chart/pipes/axes/yLinearPrimary.js.map +1 -1
  149. package/dist/esm/pipeline/spec/chart/pipes/axes/yLinearSecondary.js +2 -1
  150. package/dist/esm/pipeline/spec/chart/pipes/axes/yLinearSecondary.js.map +1 -1
  151. package/dist/esm/pipeline/spec/chart/pipes/color/color.d.ts +4 -1
  152. package/dist/esm/pipeline/spec/chart/pipes/color/color.js +2 -2
  153. package/dist/esm/pipeline/spec/chart/pipes/color/color.js.map +1 -1
  154. package/dist/esm/pipeline/spec/chart/pipes/init/barParallel.js +2 -2
  155. package/dist/esm/pipeline/spec/chart/pipes/init/barParallel.js.map +1 -1
  156. package/dist/esm/pipeline/spec/chart/pipes/init/boxplot.js +2 -2
  157. package/dist/esm/pipeline/spec/chart/pipes/init/boxplot.js.map +1 -1
  158. package/dist/esm/pipeline/spec/chart/pipes/init/columnParallel.js +2 -2
  159. package/dist/esm/pipeline/spec/chart/pipes/init/columnParallel.js.map +1 -1
  160. package/dist/esm/pipeline/spec/chart/pipes/init/histogram.js +4 -0
  161. package/dist/esm/pipeline/spec/chart/pipes/init/histogram.js.map +1 -1
  162. package/dist/esm/pipeline/spec/chart/pipes/init/roseParallel.js +2 -2
  163. package/dist/esm/pipeline/spec/chart/pipes/init/roseParallel.js.map +1 -1
  164. package/dist/esm/pipeline/spec/chart/pipes/label/label.js +4 -3
  165. package/dist/esm/pipeline/spec/chart/pipes/label/label.js.map +1 -1
  166. package/dist/esm/pipeline/spec/chart/pipes/legend/discreteLegend.js +1 -1
  167. package/dist/esm/pipeline/spec/chart/pipes/legend/discreteLegend.js.map +1 -1
  168. package/dist/esm/pipeline/spec/chart/pipes/legend/pivotDiscreteLegend.js +2 -1
  169. package/dist/esm/pipeline/spec/chart/pipes/legend/pivotDiscreteLegend.js.map +1 -1
  170. package/dist/esm/pipeline/spec/chart/pipes/markStyle/barStyle.js +5 -7
  171. package/dist/esm/pipeline/spec/chart/pipes/markStyle/barStyle.js.map +1 -1
  172. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotAxisStyle.js +23 -6
  173. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotAxisStyle.js.map +1 -1
  174. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotGridStyle.js +39 -34
  175. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotGridStyle.js.map +1 -1
  176. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotIndicators.js +10 -3
  177. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotIndicators.js.map +1 -1
  178. package/dist/esm/pipeline/spec/chart/pipes/regressionLine/ecdfRegressionLine.js +1 -1
  179. package/dist/esm/pipeline/spec/chart/pipes/regressionLine/ecdfRegressionLine.js.map +1 -1
  180. package/dist/esm/pipeline/spec/chart/pipes/regressionLine/kdeRegressionLine.js +1 -1
  181. package/dist/esm/pipeline/spec/chart/pipes/regressionLine/kdeRegressionLine.js.map +1 -1
  182. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.js +6 -3
  183. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.js.map +1 -1
  184. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipBoxplot.js +2 -0
  185. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipBoxplot.js.map +1 -1
  186. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js +2 -0
  187. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js.map +1 -1
  188. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.js +2 -0
  189. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.js.map +1 -1
  190. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHistogram.js +2 -0
  191. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHistogram.js.map +1 -1
  192. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipScatter.js +2 -0
  193. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipScatter.js.map +1 -1
  194. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipStyle.d.ts +3 -0
  195. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipStyle.js +31 -0
  196. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipStyle.js.map +1 -0
  197. package/dist/esm/pipeline/spec/table/pipeline/pivotTable.js +3 -2
  198. package/dist/esm/pipeline/spec/table/pipeline/pivotTable.js.map +1 -1
  199. package/dist/esm/pipeline/spec/table/pipeline/table.js +3 -2
  200. package/dist/esm/pipeline/spec/table/pipeline/table.js.map +1 -1
  201. package/dist/esm/pipeline/spec/table/pipes/cellStyle/common.d.ts +2 -0
  202. package/dist/esm/pipeline/spec/table/pipes/cellStyle/common.js +14 -0
  203. package/dist/esm/pipeline/spec/table/pipes/cellStyle/common.js.map +1 -0
  204. package/dist/esm/pipeline/spec/table/pipes/cellStyle/index.d.ts +2 -0
  205. package/dist/esm/pipeline/spec/table/pipes/cellStyle/index.js +2 -0
  206. package/dist/esm/pipeline/spec/table/pipes/cellStyle/pivot.d.ts +2 -0
  207. package/dist/esm/pipeline/spec/table/pipes/cellStyle/pivot.js +49 -0
  208. package/dist/esm/pipeline/spec/table/pipes/cellStyle/pivot.js.map +1 -0
  209. package/dist/esm/pipeline/spec/table/pipes/cellStyle/table.d.ts +2 -0
  210. package/dist/esm/pipeline/spec/table/pipes/cellStyle/table.js +41 -0
  211. package/dist/esm/pipeline/spec/table/pipes/cellStyle/table.js.map +1 -0
  212. package/dist/esm/pipeline/spec/table/pipes/index.d.ts +1 -0
  213. package/dist/esm/pipeline/spec/table/pipes/index.js +1 -0
  214. package/dist/esm/pipeline/spec/table/pipes/rows/pivotRows.js +13 -3
  215. package/dist/esm/pipeline/spec/table/pipes/rows/pivotRows.js.map +1 -1
  216. package/dist/esm/pipeline/utils/constant.d.ts +3 -1
  217. package/dist/esm/pipeline/utils/constant.js +4 -2
  218. package/dist/esm/pipeline/utils/constant.js.map +1 -1
  219. package/dist/esm/pipeline/utils/measures/depth.js.map +1 -1
  220. package/dist/esm/pipeline/utils/measures/find.js.map +1 -1
  221. package/dist/esm/pipeline/utils/tree/traverse.d.ts +1 -11
  222. package/dist/esm/pipeline/utils/tree/traverse.js +3 -4
  223. package/dist/esm/pipeline/utils/tree/traverse.js.map +1 -1
  224. package/dist/esm/theme/common/axes.js +2 -2
  225. package/dist/esm/theme/common/axes.js.map +1 -1
  226. package/dist/esm/theme/common/table.d.ts +30 -22
  227. package/dist/esm/theme/common/table.js +12 -2
  228. package/dist/esm/theme/common/table.js.map +1 -1
  229. package/dist/esm/theme/common/tooltip.d.ts +3 -2
  230. package/dist/esm/theme/common/tooltip.js +24 -2
  231. package/dist/esm/theme/common/tooltip.js.map +1 -1
  232. package/dist/esm/theme/dark/dark.js +2 -2
  233. package/dist/esm/theme/dark/dark.js.map +1 -1
  234. package/dist/esm/theme/light/light.js +2 -2
  235. package/dist/esm/theme/light/light.js.map +1 -1
  236. package/dist/esm/types/advancedVSeed.d.ts +3446 -1
  237. package/dist/esm/types/advancedVSeed.js +2 -0
  238. package/dist/esm/types/advancedVSeed.js.map +1 -1
  239. package/dist/esm/types/builder/builder.d.ts +4 -1
  240. package/dist/esm/types/builder/builder.js.map +1 -1
  241. package/dist/esm/types/chartType/area/zArea.d.ts +80 -0
  242. package/dist/esm/types/chartType/areaPercent/zAreaPercent.d.ts +80 -0
  243. package/dist/esm/types/chartType/bar/zBar.d.ts +80 -0
  244. package/dist/esm/types/chartType/barParallel/zBarParallel.d.ts +80 -0
  245. package/dist/esm/types/chartType/barPercent/zBarPercent.d.ts +80 -0
  246. package/dist/esm/types/chartType/boxplot/zBoxplot.d.ts +80 -0
  247. package/dist/esm/types/chartType/column/zColumn.d.ts +82 -0
  248. package/dist/esm/types/chartType/columnParallel/zColumnParallel.d.ts +80 -0
  249. package/dist/esm/types/chartType/columnPercent/zColumnPercent.d.ts +80 -0
  250. package/dist/esm/types/chartType/donut/zDonut.d.ts +80 -0
  251. package/dist/esm/types/chartType/dualAxis/zDualAxis.d.ts +80 -0
  252. package/dist/esm/types/chartType/funnel/zFunnel.d.ts +80 -0
  253. package/dist/esm/types/chartType/heatmap/zHeatmap.d.ts +80 -0
  254. package/dist/esm/types/chartType/histogram/histogram.d.ts +2 -2
  255. package/dist/esm/types/chartType/histogram/zHistogram.d.ts +88 -4
  256. package/dist/esm/types/chartType/histogram/zHistogram.js +2 -2
  257. package/dist/esm/types/chartType/histogram/zHistogram.js.map +1 -1
  258. package/dist/esm/types/chartType/line/zLine.d.ts +80 -0
  259. package/dist/esm/types/chartType/pie/zPie.d.ts +80 -0
  260. package/dist/esm/types/chartType/pivotTable/pivotTable.d.ts +5 -1
  261. package/dist/esm/types/chartType/pivotTable/zPivotTable.d.ts +76 -0
  262. package/dist/esm/types/chartType/pivotTable/zPivotTable.js +2 -1
  263. package/dist/esm/types/chartType/pivotTable/zPivotTable.js.map +1 -1
  264. package/dist/esm/types/chartType/radar/zRadar.d.ts +80 -0
  265. package/dist/esm/types/chartType/rose/zRose.d.ts +80 -0
  266. package/dist/esm/types/chartType/roseParallel/zRoseParallel.d.ts +80 -0
  267. package/dist/esm/types/chartType/scatter/zScatter.d.ts +88 -0
  268. package/dist/esm/types/chartType/table/table.d.ts +5 -1
  269. package/dist/esm/types/chartType/table/zTable.d.ts +76 -0
  270. package/dist/esm/types/chartType/table/zTable.js +2 -1
  271. package/dist/esm/types/chartType/table/zTable.js.map +1 -1
  272. package/dist/esm/types/properties/cellStyle/bodyCellStyle.d.ts +138 -0
  273. package/dist/esm/types/properties/cellStyle/bodyCellStyle.js +16 -0
  274. package/dist/esm/types/properties/cellStyle/bodyCellStyle.js.map +1 -0
  275. package/dist/esm/types/properties/cellStyle/cellStyle.d.ts +80 -0
  276. package/dist/esm/types/properties/cellStyle/cellStyle.js +8 -0
  277. package/dist/esm/types/properties/cellStyle/cellStyle.js.map +1 -0
  278. package/dist/esm/types/properties/cellStyle/index.d.ts +1 -0
  279. package/dist/esm/types/properties/cellStyle/index.js +1 -0
  280. package/dist/esm/types/properties/config/area.d.ts +164 -0
  281. package/dist/esm/types/properties/config/bar.d.ts +246 -0
  282. package/dist/esm/types/properties/config/boxplot.d.ts +82 -0
  283. package/dist/esm/types/properties/config/column.d.ts +258 -0
  284. package/dist/esm/types/properties/config/config.d.ts +1676 -0
  285. package/dist/esm/types/properties/config/dualAxis.d.ts +82 -0
  286. package/dist/esm/types/properties/config/funnel.d.ts +82 -0
  287. package/dist/esm/types/properties/config/heatmap.d.ts +82 -0
  288. package/dist/esm/types/properties/config/histogram.d.ts +94 -0
  289. package/dist/esm/types/properties/config/label/label.d.ts +5 -0
  290. package/dist/esm/types/properties/config/label/zLabel.d.ts +69 -0
  291. package/dist/esm/types/properties/config/label/zLabel.js +6 -1
  292. package/dist/esm/types/properties/config/label/zLabel.js.map +1 -1
  293. package/dist/esm/types/properties/config/label/zPieLabel.d.ts +69 -0
  294. package/dist/esm/types/properties/config/line.d.ts +82 -0
  295. package/dist/esm/types/properties/config/pie.d.ts +246 -0
  296. package/dist/esm/types/properties/config/pivotGrid/pivotGrid.d.ts +2 -0
  297. package/dist/esm/types/properties/config/pivotGrid/pivotGrid.js +3 -1
  298. package/dist/esm/types/properties/config/pivotGrid/pivotGrid.js.map +1 -1
  299. package/dist/esm/types/properties/config/rose.d.ts +164 -0
  300. package/dist/esm/types/properties/config/scatter.d.ts +94 -0
  301. package/dist/esm/types/properties/config/tooltip/tooltip.d.ts +12 -0
  302. package/dist/esm/types/properties/config/tooltip/tooltip.js +12 -1
  303. package/dist/esm/types/properties/config/tooltip/tooltip.js.map +1 -1
  304. package/dist/esm/types/properties/datasetReshapeInfo/datasetReshapeInfo.d.ts +4 -1
  305. package/dist/esm/types/properties/datasetReshapeInfo/zDatasetReshapeInfo.d.ts +8 -2
  306. package/dist/esm/types/properties/datasetReshapeInfo/zDatasetReshapeInfo.js +4 -1
  307. package/dist/esm/types/properties/datasetReshapeInfo/zDatasetReshapeInfo.js.map +1 -1
  308. package/dist/esm/types/properties/index.d.ts +1 -0
  309. package/dist/esm/types/properties/index.js +1 -0
  310. package/dist/esm/types/properties/markStyle/barStyle.d.ts +5 -0
  311. package/dist/esm/types/properties/markStyle/barStyle.js.map +1 -1
  312. package/dist/esm/types/properties/regressionLine/ecdfRegressionLine.d.ts +4 -0
  313. package/dist/esm/types/properties/regressionLine/kdeRegressionLine.d.ts +4 -0
  314. package/dist/esm/types/properties/regressionLine/zRegressionLine.d.ts +18 -0
  315. package/dist/esm/types/properties/regressionLine/zRegressionLine.js +1 -0
  316. package/dist/esm/types/properties/regressionLine/zRegressionLine.js.map +1 -1
  317. package/dist/esm/types/properties/theme/customTheme.d.ts +3352 -0
  318. package/dist/esm/types/zVseed.d.ts +1890 -124
  319. package/dist/umd/index.js +840 -446
  320. package/dist/umd/index.js.map +1 -1
  321. package/package.json +3 -3
  322. package/dist/esm/pipeline/advanced/chart/pipes/default/defaultMeasureName.js +0 -16
  323. package/dist/esm/pipeline/advanced/chart/pipes/default/defaultMeasureName.js.map +0 -1
  324. package/dist/esm/pipeline/advanced/table/pipes/default/defaultMeasureName.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["webpack://@visactor/vseed/webpack/runtime/create_fake_namespace_object","webpack://@visactor/vseed/webpack/runtime/define_property_getters","webpack://@visactor/vseed/webpack/runtime/has_own_property","webpack://@visactor/vseed/webpack/runtime/make_namespace_object","webpack://@visactor/vseed/./src/pipeline/utils/pipeline.ts","webpack://@visactor/vseed/./src/i18n/i18n.ts","webpack://@visactor/vseed/./src/builder/builder/buildAdvanced.ts","webpack://@visactor/vseed/./src/builder/builder/buildSpec.ts","webpack://@visactor/vseed/./src/builder/builder/build.ts","webpack://@visactor/vseed/./src/pipeline/utils/tree/traverse.ts","webpack://@visactor/vseed/./src/pipeline/utils/measures/depth.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/utils.ts","webpack://@visactor/vseed/./src/pipeline/utils/constant.ts","webpack://@visactor/vseed/./src/pipeline/utils/chatType.ts","webpack://@visactor/vseed/./src/builder/builder/advanced/colorItems.ts","webpack://@visactor/vseed/./src/builder/builder/builder.ts","webpack://@visactor/vseed/./src/pipeline/utils/valid/checkVSeed.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/init/initAdvancedVSeed.ts","webpack://@visactor/vseed/./src/pipeline/utils/measures/typeGuard.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/default/defaultMeasures.ts","webpack://@visactor/vseed/./src/pipeline/utils/dimensions/typeGuard.ts","webpack://@visactor/vseed/./src/pipeline/utils/measures/find.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/default/defaultDimensions.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/records/records.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/config/tableConfig.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/theme/theme.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipeline/table.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/init/table.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/columns/dimensionsToColumns.ts","webpack://@visactor/vseed/./src/pipeline/utils/format/createNumFormatter.ts","webpack://@visactor/vseed/./src/pipeline/utils/format/createFormatter.ts","webpack://@visactor/vseed/./src/pipeline/utils/format/createFormatterByMeasure.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/columns/measuresToColumns.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/theme/bodyStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/theme/headerStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/theme/frameStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/theme/selectionStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipeline/table.ts","webpack://@visactor/vseed/./src/builder/register/chartType/table.ts","webpack://@visactor/vseed/./src/dataReshape/constant.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/default/defaultMeasureName.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/encoding/pivotTable.ts","webpack://@visactor/vseed/./src/dataReshape/foldMeasures.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/reshape/reshapePivotTable.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/config/pivotTableConfig.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipeline/pivotTable.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/init/pivotTable.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/columns/pivotColumns.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/rows/pivotRows.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/corner/titleOnDimension.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/indicators/pivotIndicators.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/theme/rowHeaderStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/theme/cornerHeaderStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/indicators/pivotDataConfig.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipeline/pivotTable.ts","webpack://@visactor/vseed/./src/builder/register/chartType/pivotTable.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/init/initAdvancedVSeed.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/default/defaultMeasures.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/default/defaultDimensions.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/default/defaultMeasureName.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/adapter/encodingAdapter.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/color/addColorToEncoding.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/line.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/buildMeasures.ts","webpack://@visactor/vseed/./src/pipeline/utils/measures/delete.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/deleteEncodingForMeasure.ts","webpack://@visactor/vseed/./src/pipeline/utils/dimensions/delete.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/dimensions/deleteTooltipAndLabelDimensions.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/pivot/pivotAdapter.ts","webpack://@visactor/vseed/./src/dataReshape/unfoldDimensions.ts","webpack://@visactor/vseed/./src/dataReshape/dataReshapeByEncoding.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/colorAdapter.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeWithEncoding.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithEncoding.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/analysis/common.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/analysis/sortXBand.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/analysis/sortLegend.ts","webpack://@visactor/vseed/./src/pipeline/utils/replaceNullToUndefined.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/config/line.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/markStyle/markStyle.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/annotation/annotation.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/line.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/line.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/color.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/linearColor.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/backgroundColor/background.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/datasetXY.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/progressive.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/title/defaultTitleText.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/xBand.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/format/linearFormat.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/yLinear.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/crosshair/verticalCrosshairLine.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/legend/discreteLegend.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/legend/colorLegend.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/colorPointStyleFill.ts","webpack://@visactor/vseed/./src/dataSelector/selector.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/pointStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/pointState.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/colorLineStyleFill.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/curve/curve.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/lineStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/label/label.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltip.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/utils.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/annotationPoint.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/annotationVerticalLine.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/annotationHorizontalLine.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/annotationArea.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/splitLine.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/pivot.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/pivotChart/pivotGridStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/pivotChart/pivotIndicators.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/datasetPivot.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/pivotChart/pivotAxisStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/pivotChart/pivotRowDimensions.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/pivotChart/pivotColumnDimensions.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/pivotChart/pivotTitle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/legend/pivotDiscreteLegend.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/legend/pivotColorLegend.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/pivotChart/pivotAdapter.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/line.ts","webpack://@visactor/vseed/./src/builder/register/chartType/line.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/column.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/config/column.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/regressionLine/regressionLine.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/column.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/column.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/stack/stackCornerRadius.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/barWidth/barMaxWidth.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/stack/stack.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/crosshair/verticalCrosshairRect.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/colorBarStyleFill.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/barStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/annotationAreaBand.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/regressionLine/common.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/regressionLine/columnRegressionLine.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/column.ts","webpack://@visactor/vseed/./src/builder/register/chartType/column.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/config/pie.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/config/index.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/columnParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/columnParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/barWidth/barGapInGroup.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/columnParallel.ts","webpack://@visactor/vseed/./src/builder/register/chartType/columnParallel.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/columnPercent.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/percent/percent.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/columnPercent.ts","webpack://@visactor/vseed/./src/builder/register/chartType/columnPercent.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/bar.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/analysis/sortYBand.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/bar.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/bar.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/datasetYX.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/xLinear.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/yBand.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/crosshair/horizontalCrosshairRect.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/bar.ts","webpack://@visactor/vseed/./src/builder/register/chartType/bar.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/barParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/barParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/barParallel.ts","webpack://@visactor/vseed/./src/builder/register/chartType/barParallel.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/barPercent.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/barPercent.ts","webpack://@visactor/vseed/./src/builder/register/chartType/barPercent.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/area.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/area.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/colorAreaStyleFill.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/areaStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/area.ts","webpack://@visactor/vseed/./src/builder/register/chartType/area.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/areaPercent.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/areaPercent.ts","webpack://@visactor/vseed/./src/builder/register/chartType/areaPercent.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/scatter.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/buildMeasuresForScatter.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/config/scatter.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeWithScatterEncoding.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithScatterEncoding.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/scatter.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/scatter.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/datasetScatter.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/size/scatterSize.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/label/labelScatter.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipScatter.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/crosshair/horizontalCrosshairLine.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/regressionLine/linearRegressionLine.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/scatter.ts","webpack://@visactor/vseed/./src/builder/register/chartType/scatter.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/dualAxis.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/buildMeasuresForDualAxis.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/config/dualAxis.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/dualAxis.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/series/series.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/dualAxis.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dual/dualChartType.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/datasetDualAxis.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/label/labelDualAxis.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/yLinearPrimary.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/yLinearSecondary.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/linearColorForDualAxis.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/dualAxis.ts","webpack://@visactor/vseed/./src/builder/register/chartType/dualAxis.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/pie.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/pie.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/pie.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/colorPieStyleFill.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/pieStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/label/labelPie.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/pivotChart/pivotHideIndicatorName.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/region/addRegionPadding.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/pie.ts","webpack://@visactor/vseed/./src/builder/register/chartType/pie.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/donut.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/donut.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/donut.ts","webpack://@visactor/vseed/./src/builder/register/chartType/donut.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/rose.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/rose.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/rose.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/radius.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/colorRoseStyleFill.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/roseStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/rose.ts","webpack://@visactor/vseed/./src/builder/register/chartType/rose.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/roseParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/roseParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/roseParallel.ts","webpack://@visactor/vseed/./src/builder/register/chartType/roseParallel.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/radar.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/radar.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/radar.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/radarAngle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/radarRadius.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/radar.ts","webpack://@visactor/vseed/./src/builder/register/chartType/radar.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/funnel.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/funnel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/funnel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/colorFunnelStyleFill.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/funnelStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/funnelTransformStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/funnel.ts","webpack://@visactor/vseed/./src/builder/register/chartType/funnel.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/heatmap.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/heatmap.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/legend/heatmapColorLegend.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/colorCellStyleFill.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/cellStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/heatmap.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/heatmap.ts","webpack://@visactor/vseed/./src/builder/register/chartType/heatmap.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/config/boxplot.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/boxplot.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeWithBoxplotEncoding.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/boxplot.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/boxplot.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/datasetBoxplot.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipBoxplot.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/boxplot.ts","webpack://@visactor/vseed/./src/builder/register/chartType/boxplot.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/config/histogram.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/histogram.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeWithHistogramEncoding.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithHistogramEncoding.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/histogram.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/histogram.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/datasetHistogram.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipHistogram.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/regressionLine/kdeRegressionLine.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/regressionLine/ecdfRegressionLine.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/histogram.ts","webpack://@visactor/vseed/./src/builder/register/chartType/histogram.ts","webpack://@visactor/vseed/./src/theme/common/crosshair.ts","webpack://@visactor/vseed/./src/theme/common/color.ts","webpack://@visactor/vseed/./src/theme/common/label.ts","webpack://@visactor/vseed/./src/theme/common/legend.ts","webpack://@visactor/vseed/./src/theme/common/table.ts","webpack://@visactor/vseed/./src/theme/common/tooltip.ts","webpack://@visactor/vseed/./src/theme/common/axes.ts","webpack://@visactor/vseed/./src/theme/common/annotaion.ts","webpack://@visactor/vseed/./src/theme/common/funnelTransform.ts","webpack://@visactor/vseed/./src/theme/common/heatmapCell.ts","webpack://@visactor/vseed/./src/theme/common/regressionLine.ts","webpack://@visactor/vseed/./src/theme/light/light.ts","webpack://@visactor/vseed/./src/theme/dark/dark.ts","webpack://@visactor/vseed/./src/builder/register/theme/custom.ts","webpack://@visactor/vseed/./src/builder/register/theme/light.ts","webpack://@visactor/vseed/./src/builder/register/theme/dark.ts","webpack://@visactor/vseed/./src/builder/register/all.ts","webpack://@visactor/vseed/./src/builder/register/custom.ts","webpack://@visactor/vseed/./src/types/properties/chartType/chartType.ts","webpack://@visactor/vseed/./src/types/properties/chartType/dualChartType.ts","webpack://@visactor/vseed/./src/types/properties/dataset/dataset.ts","webpack://@visactor/vseed/./src/types/properties/dimensions/zDimensions.ts","webpack://@visactor/vseed/./src/types/properties/format/numFormat.ts","webpack://@visactor/vseed/./src/types/properties/measures/zMeasures.ts","webpack://@visactor/vseed/./src/types/properties/measures/zDualMeasures.ts","webpack://@visactor/vseed/./src/types/properties/measures/zScatterMeasures.ts","webpack://@visactor/vseed/./src/types/properties/datasetReshapeInfo/zDatasetReshapeInfo.ts","webpack://@visactor/vseed/./src/types/properties/encoding/zEncoding.ts","webpack://@visactor/vseed/./src/types/properties/encoding/zDimensionEncoding.ts","webpack://@visactor/vseed/./src/types/properties/encoding/zMeasureEncoding.ts","webpack://@visactor/vseed/./src/types/properties/config/backgroundColor/backgroundColor.ts","webpack://@visactor/vseed/./src/types/properties/config/table.ts","webpack://@visactor/vseed/./src/types/properties/config/axes/zBandAxis.ts","webpack://@visactor/vseed/./src/types/properties/config/axes/zLinearAxis.ts","webpack://@visactor/vseed/./src/types/properties/config/crosshair/zCrosshair.ts","webpack://@visactor/vseed/./src/types/properties/config/color/color.ts","webpack://@visactor/vseed/./src/types/properties/config/label/zLabel.ts","webpack://@visactor/vseed/./src/types/properties/config/legend/legend.ts","webpack://@visactor/vseed/./src/types/properties/config/tooltip/tooltip.ts","webpack://@visactor/vseed/./src/types/dataSelector/selector.ts","webpack://@visactor/vseed/./src/types/properties/annotation/zAnnotationPoint.ts","webpack://@visactor/vseed/./src/types/properties/annotation/zAnnotationHorizontalLine.ts","webpack://@visactor/vseed/./src/types/properties/annotation/zAnnotationArea.ts","webpack://@visactor/vseed/./src/types/properties/config/annotation/zAnnotaion.ts","webpack://@visactor/vseed/./src/types/properties/config/pivotGrid/pivotGrid.ts","webpack://@visactor/vseed/./src/types/properties/config/line.ts","webpack://@visactor/vseed/./src/types/properties/config/stackCornerRadius/stackCornerRadius.ts","webpack://@visactor/vseed/./src/types/properties/config/barWidth/index.ts","webpack://@visactor/vseed/./src/types/properties/regressionLine/zRegressionLine.ts","webpack://@visactor/vseed/./src/types/properties/config/column.ts","webpack://@visactor/vseed/./src/types/properties/config/bar.ts","webpack://@visactor/vseed/./src/types/properties/config/area.ts","webpack://@visactor/vseed/./src/types/properties/config/scatter.ts","webpack://@visactor/vseed/./src/types/properties/config/dualAxis.ts","webpack://@visactor/vseed/./src/types/properties/config/label/zPieLabel.ts","webpack://@visactor/vseed/./src/types/properties/config/pie.ts","webpack://@visactor/vseed/./src/types/properties/config/rose.ts","webpack://@visactor/vseed/./src/types/properties/config/funnelTransform/zFunnelTransform.ts","webpack://@visactor/vseed/./src/types/properties/config/funnel.ts","webpack://@visactor/vseed/./src/types/properties/config/heatmap/zHeatmap.ts","webpack://@visactor/vseed/./src/types/properties/config/heatmap.ts","webpack://@visactor/vseed/./src/types/properties/config/pivotTable.ts","webpack://@visactor/vseed/./src/types/properties/config/whiskers/index.ts","webpack://@visactor/vseed/./src/types/properties/config/boxplot.ts","webpack://@visactor/vseed/./src/types/properties/config/histogram.ts","webpack://@visactor/vseed/./src/types/properties/config/config.ts","webpack://@visactor/vseed/./src/types/properties/theme/customTheme.ts","webpack://@visactor/vseed/./src/types/properties/theme/theme.ts","webpack://@visactor/vseed/./src/types/properties/markStyle/barStyle.ts","webpack://@visactor/vseed/./src/types/properties/markStyle/pointStyle.ts","webpack://@visactor/vseed/./src/types/properties/markStyle/lineStyle.ts","webpack://@visactor/vseed/./src/types/properties/markStyle/zAreaStyle.ts","webpack://@visactor/vseed/./src/types/properties/markStyle/markStyle.ts","webpack://@visactor/vseed/./src/types/properties/annotation/zAnnotationVerticalLine.ts","webpack://@visactor/vseed/./src/types/properties/annotation/annotation.ts","webpack://@visactor/vseed/./src/types/properties/analysis/sort.ts","webpack://@visactor/vseed/./src/types/properties/analysis/sortLegend.ts","webpack://@visactor/vseed/./src/types/properties/analysis/analysis.ts","webpack://@visactor/vseed/./src/types/i18n/i18n.ts","webpack://@visactor/vseed/./src/types/chartType/table/zTable.ts","webpack://@visactor/vseed/./src/types/chartType/pivotTable/zPivotTable.ts","webpack://@visactor/vseed/./src/types/chartType/line/zLine.ts","webpack://@visactor/vseed/./src/types/chartType/column/zColumn.ts","webpack://@visactor/vseed/./src/types/chartType/columnParallel/zColumnParallel.ts","webpack://@visactor/vseed/./src/types/chartType/columnPercent/zColumnPercent.ts","webpack://@visactor/vseed/./src/types/chartType/bar/zBar.ts","webpack://@visactor/vseed/./src/types/chartType/barParallel/zBarParallel.ts","webpack://@visactor/vseed/./src/types/chartType/barPercent/zBarPercent.ts","webpack://@visactor/vseed/./src/types/chartType/area/zArea.ts","webpack://@visactor/vseed/./src/types/chartType/areaPercent/zAreaPercent.ts","webpack://@visactor/vseed/./src/types/chartType/scatter/zScatter.ts","webpack://@visactor/vseed/./src/types/chartType/dualAxis/zDualAxis.ts","webpack://@visactor/vseed/./src/types/chartType/histogram/zHistogram.ts","webpack://@visactor/vseed/./src/types/chartType/rose/zRose.ts","webpack://@visactor/vseed/./src/types/chartType/roseParallel/zRoseParallel.ts","webpack://@visactor/vseed/./src/types/chartType/pie/zPie.ts","webpack://@visactor/vseed/./src/types/chartType/donut/zDonut.ts","webpack://@visactor/vseed/./src/types/chartType/radar/zRadar.ts","webpack://@visactor/vseed/./src/types/chartType/funnel/zFunnel.ts","webpack://@visactor/vseed/./src/types/chartType/heatmap/zHeatmap.ts","webpack://@visactor/vseed/./src/types/chartType/boxplot/zBoxplot.ts","webpack://@visactor/vseed/./src/types/zVseed.ts","webpack://@visactor/vseed/./src/types/advancedVSeed.ts"],"sourcesContent":["var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n __webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => { def[key] = () => (value[key]) });\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import type { ExecPipelineType, Pipe } from 'src/types'\n\n/**\n * 执行pipeline, 每个pipe负责构建结果的一部分, 构建完成后得到完整的目标结果\n * @param pipeline pipeline数组, 每个pipe负责构建结果的一部分\n * @param initialValue 初始值\n * @param context 上下文\n * @returns 执行后的结果\n */\nexport const execPipeline: ExecPipelineType = <T, U>(\n pipeline: Array<Pipe<T, U>>,\n context: U,\n initialValue: Partial<T> = {},\n): T => {\n const result = pipeline.reduce((prev, cur) => {\n return cur(prev, context)\n }, initialValue)\n return result as T\n}\n","import { isNullish } from 'remeda'\nimport * as translateMap from './i18nData.json'\nimport type { Locale, TranslateRecordType } from '../types'\n\nclass Intl {\n private static instance: Intl\n\n private translateMap: TranslateRecordType = translateMap as unknown as TranslateRecordType\n private locale: Locale = 'zh-CN'\n\n canTranslate = (value: string) => !!this.translateMap[value]\n\n /**\n * @example i18n`指标名称`\n */\n i18n = (segments: TemplateStringsArray, ...values: Array<number | string>) => {\n const text = segments.map((segment, index) => segment + (values[index] || '')).join('')\n const translatedText = this.translateMap?.[text]?.[this.locale]\n if (isNullish(translatedText)) {\n console.warn(`i18n ${this.locale} no translate: ${text}`)\n return text\n }\n return translatedText\n }\n\n setLocale = (locale: Locale): void => {\n this.locale = locale\n }\n\n getLocale: () => Locale = () => this.locale\n\n public static getInstance() {\n if (!Intl.instance) {\n Intl.instance = new Intl()\n }\n\n return Intl.instance\n }\n}\n\nconst intl = Intl.getInstance()\n\nexport { intl }\n","import type { AdvancedPipelineContext, AdvancedVSeed } from 'src/types'\nimport { execPipeline } from '../../pipeline'\nimport { Builder } from './builder'\nimport { intl } from 'src/i18n'\n\nexport const buildAdvanced = (builder: Builder): AdvancedVSeed | null => {\n const start = typeof performance !== 'undefined' ? performance.now() : Date.now()\n const { chartType } = builder.vseed\n if (!chartType) {\n throw new Error('chartType is nil in buildAdvanced')\n }\n\n const pipeline = Builder.getAdvancedPipeline(chartType)\n if (!pipeline) {\n throw new Error(\n `please invoke registerAll or register ${chartType} before build, no advanced pipeline for chartType ${chartType}`,\n )\n }\n\n const context: AdvancedPipelineContext = {\n vseed: builder.vseed,\n customTheme: Builder.getThemeMap(),\n }\n if (builder.vseed.locale) {\n intl.setLocale(builder.vseed.locale)\n }\n\n try {\n const advancedVSeed = execPipeline<AdvancedVSeed, AdvancedPipelineContext>(pipeline, context)\n builder.advancedVSeed = advancedVSeed\n return advancedVSeed\n } catch (e) {\n console.error(e)\n throw new Error(`buildAdvanced error: ${(e as Error).message}.\\ndetails info in console`)\n } finally {\n const end = typeof performance !== 'undefined' ? performance.now() : Date.now()\n builder.performance['buildAdvanced'] = `${(end - start).toFixed(4)}ms`\n }\n}\n","import type { Spec } from 'src/types'\nimport { Builder } from './builder'\nimport type { AdvancedVSeed, SpecPipelineContext } from 'src/types'\nimport { execPipeline } from '../../pipeline'\nimport { intl } from 'src/i18n'\n\nexport const buildSpec = (builder: Builder, advancedVSeed: AdvancedVSeed): Spec => {\n const start = typeof performance !== 'undefined' ? performance.now() : Date.now()\n\n const { chartType } = builder.vseed\n\n const pipeline = Builder.getSpecPipeline(chartType)\n if (!pipeline) {\n throw new Error(\n `please invoke registerAll or register ${chartType} before build, no spec pipeline for chartType ${chartType}`,\n )\n }\n\n const context: SpecPipelineContext = {\n vseed: builder.vseed,\n advancedVSeed,\n }\n if (builder.vseed.locale) {\n intl.setLocale(builder.vseed.locale)\n }\n\n try {\n const spec = execPipeline<Spec, SpecPipelineContext>(pipeline, context)\n builder.spec = spec\n return spec\n } catch (e) {\n console.error(e)\n throw new Error(`buildSpec error: ${(e as Error).message}.\\ndetails info in console`)\n } finally {\n const end = typeof performance !== 'undefined' ? performance.now() : Date.now()\n builder.performance['buildSpec'] = `${(end - start).toFixed(4)}ms`\n }\n}\n","import type { Spec } from 'src/types'\nimport type { Builder } from './builder'\n\nexport const build = (builder: Builder): Spec => {\n const advancedVSeed = builder.buildAdvanced()\n if (!advancedVSeed) {\n throw new Error('advancedVSeed is null')\n }\n const spec = builder.buildSpec(advancedVSeed)\n return spec\n}\n","/**\n * 支持泛型的非递归前序遍历\n * @param tree 根节点数组\n * @param callback 遍历时对每个节点执行的回调,返回 true 时停止遍历\n */\nexport const preorderTraverse = <T extends { id: string }, U extends { id: string; children?: (T | U)[] }>(\n tree: (T | U)[],\n callback: (node: T | U) => boolean,\n) => {\n if (!tree || tree.length === 0) return\n\n const stack: (T | U)[] = [...tree].reverse()\n\n while (stack.length > 0) {\n const node = stack.pop()!\n const stop = callback(node)\n if (stop === true) {\n return\n }\n if (!('children' in node)) {\n continue\n }\n const children = node.children\n if (children && children.length > 0) {\n for (let i = children.length - 1; i >= 0; i--) {\n const child = children[i]\n stack.push(child)\n }\n }\n }\n}\n","import type { Measure, MeasureGroup, MeasureTree } from 'src/types'\nimport { preorderTraverse } from '../tree/traverse'\n\n/**\n * 获取measures的深度\n * @param measures\n * @param id\n * @returns\n */\nexport const measureDepth = (measures: MeasureTree = []): number => {\n if (!measures) return 0\n let depth = 1\n preorderTraverse<Measure, MeasureGroup>(measures, (node) => {\n if ('children' in node) {\n depth = Math.max(depth, 1 + measureDepth(node.children))\n }\n return false\n })\n return depth\n}\n","import type { MeasureGroup, MeasureTree } from 'src/types'\n\n/**\n * @description 检查是否为指标树, 指标树深度大于1. 如果存在一个指标为组, 即有children配置, 则认为是指标树.\n * @param vseed vseed\n * @returns\n */\nexport const isMeasureTreeWithChildren = <T extends MeasureTree>(measures?: T) => {\n if (!measures) {\n return false\n }\n\n return measures.some((measure) => 'children' in measure)\n}\n\n/**\n * @description 检查是否为指标树, 指标树存在parentId. 如果存在一个指标有parentId, 则认为是指标树.\n * @param vseed vseed\n * @returns\n */\nexport const isMeasureTreeWithParentId = <T extends MeasureTree>(measures?: T) => {\n if (!measures) {\n return false\n }\n\n return measures.some((measure) => 'parentId' in measure)\n}\n\n/**\n * @description 保证指标树中的每一组都有children, 没有children的指标, 会被放到一个默认的指标组中.\n * @param measures 指标树\n * @returns\n */\nexport const normalizeMeasureTree = (measures: MeasureTree) => {\n const createEmptyMeasureGroup = (): MeasureGroup => {\n return {\n id: 'group',\n alias: '',\n children: [],\n }\n }\n\n let currentGroup: MeasureGroup = createEmptyMeasureGroup()\n const measureGroups: MeasureGroup[] = []\n for (const measure of measures) {\n if ('children' in measure) {\n // 当前指标组之前的所有独立指标成组\n if (currentGroup.children?.length) {\n currentGroup.id = [currentGroup.id, ...currentGroup.children.map((item) => item.id)].join('-')\n currentGroup.alias = currentGroup.children.map((item) => item.alias).join('-')\n measureGroups.push(currentGroup)\n currentGroup = createEmptyMeasureGroup()\n }\n // 当前是指标组\n measureGroups.push(measure)\n } else {\n currentGroup.children?.push(measure)\n }\n }\n\n // 最后一组\n if (currentGroup.children?.length) {\n currentGroup.id = [currentGroup.id, ...currentGroup.children.map((item) => item.id)].join('-')\n currentGroup.alias = currentGroup.children.map((item) => item.alias).join('-')\n measureGroups.push(currentGroup)\n currentGroup = createEmptyMeasureGroup()\n }\n\n return measureGroups\n}\n","// 标注层 z-index\nexport const ANNOTATION_Z_INDEX = 1000\n// 线性轴 顶部空隙 预留5px\nexport const LINEAR_AXIS_INNER_OFFSET_TOP = 7\n// 双轴图 柱图 ZIndex\nexport const DUAL_AXIS_CHART_COLUMN_Z_INDEX = 1000\n// 双轴图 非柱图 ZIndex\nexport const DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX = 1001\n// 双轴图 标注层 ZIndex\nexport const DUAL_AXIS_LABEL_Z_INDEX = 1002\n// 默认父级id\nexport const DEFAULT_PARENT_ID = '__DefaultParentId__'\n\n// 图表类型枚举\nexport const ChartTypeEnum = {\n Table: 'table',\n PivotTable: 'pivotTable',\n // cartesian\n Line: 'line',\n Column: 'column',\n ColumnPercent: 'columnPercent',\n ColumnParallel: 'columnParallel',\n Bar: 'bar',\n BarPercent: 'barPercent',\n BarParallel: 'barParallel',\n Area: 'area',\n AreaPercent: 'areaPercent',\n DualAxis: 'dualAxis',\n Scatter: 'scatter',\n // polar\n Rose: 'rose',\n RoseParallel: 'roseParallel',\n Pie: 'pie',\n Donut: 'donut',\n Radar: 'radar',\n // other\n Funnel: 'funnel',\n Heatmap: 'heatmap',\n Boxplot: 'boxPlot',\n Histogram: 'histogram',\n} as const\n\n// Heatmap hide cell\nexport const DATUM_HIDE_KEY = '__VSEED_HideItem__'\n","import { type Dimensions, type DimensionGroup, type DimensionTree, type VSeed, type Measure } from 'src/types'\nimport { measureDepth } from './measures'\nimport { isMeasureTreeWithChildren, isMeasureTreeWithParentId } from '../advanced/chart/pipes/measures/utils'\nimport { unique } from 'remeda'\nimport { ChartTypeEnum, DEFAULT_PARENT_ID } from './constant'\n\nexport const isTable = (vseed: VSeed) => {\n return vseed.chartType === ChartTypeEnum.Table\n}\nexport const isPivotTable = (vseed: VSeed) => {\n return vseed.chartType === ChartTypeEnum.PivotTable\n}\nexport const isRadar = (vseed: VSeed) => {\n return vseed.chartType === ChartTypeEnum.Radar\n}\nexport const isAreaPercent = (vseed: VSeed) => {\n return vseed.chartType === ChartTypeEnum.AreaPercent\n}\nexport const isColumnPercent = (vseed: VSeed) => {\n return vseed.chartType === ChartTypeEnum.ColumnPercent\n}\nexport const isBarPercent = (vseed: VSeed) => {\n return vseed.chartType === ChartTypeEnum.BarPercent\n}\n\nexport const isBarLikeChart = (vseed: VSeed) => {\n return (\n vseed.chartType === ChartTypeEnum.Bar ||\n vseed.chartType === ChartTypeEnum.BarPercent ||\n vseed.chartType === ChartTypeEnum.BarParallel\n )\n}\n\nexport const isVTable = (vseed: VSeed) => {\n return ['table', 'pivotTable'].includes(vseed.chartType)\n}\nexport const isVChart = (vseed: VSeed): boolean => {\n return !isVTable(vseed)\n}\n\n/**\n * @description 透视图表或组合图\n * - 透视图表定义: 存在 column 或 row的 encoding\n * - 组合图表定义: 存在多组指标的情况\n * - 透视组合图表: 存在 column 或 row的 encoding 且 存在多组指标的情况\n * 上述三者都只能使用 VTable.PivotChart 绘制\n */\nexport const isPivotChart = (vseed: VSeed) => {\n if (isVTable(vseed)) {\n return false\n }\n\n if (isPivot(vseed)) {\n return true\n }\n\n return isCombination(vseed)\n}\n\n/**\n * @description 存在column 或 row的encoding\n */\nexport const isPivot = (vseed: VSeed) => {\n const { dimensions = [] } = vseed as {\n dimensions: Dimensions\n }\n\n return dimensions && dimensions.some((dimension) => dimension.encoding === 'row' || dimension.encoding === 'column')\n}\n/**\n * @description 不存在column 或 row的encoding, 但是有多组指标的情况\n */\nexport const isCombination = (vseed: VSeed) => {\n if (isMeasureTreeWithParentId(vseed.measures)) {\n const parentIds = vseed.measures?.map((measure: Measure) => measure.parentId || DEFAULT_PARENT_ID)\n return parentIds && unique(parentIds).length > 1\n }\n\n if (vseed.chartType === 'dualAxis' || vseed.chartType === 'scatter') {\n if (vseed.chartType === 'scatter') {\n if (isMeasureTreeWithChildren(vseed.measures)) {\n const depth = measureDepth(vseed.measures)\n return depth === 3\n }\n\n if (vseed.scatterMeasures && vseed.scatterMeasures.length > 1) {\n return true\n }\n return false\n }\n if (vseed.chartType === 'dualAxis') {\n if (isMeasureTreeWithChildren(vseed.measures)) {\n const depth = measureDepth(vseed.measures)\n return depth === 3\n }\n\n if (vseed.dualMeasures && vseed.dualMeasures.length > 1) {\n return true\n }\n }\n\n return false\n }\n\n const { measures = [] } = vseed as {\n measures: DimensionTree\n dimensions: Dimensions\n }\n\n const hasMeasureGroup = measures && measures.some((measure: DimensionGroup) => measure && measure.children)\n\n return hasMeasureGroup\n}\n","import { unique } from 'remeda'\nimport type { Builder } from '../builder'\nimport { isPivotTable, isTable } from 'src/pipeline'\n\nexport const getColorItems = (builder: Builder): { id: string; alias: string }[] => {\n const advancedVSeed = builder.advancedVSeed\n\n if (!advancedVSeed || isTable(builder.vseed) || isPivotTable(builder.vseed)) {\n return []\n }\n\n const { datasetReshapeInfo } = advancedVSeed\n const colorItems = unique(datasetReshapeInfo.flatMap((d) => d.unfoldInfo.colorItems))\n const colorIdMap = datasetReshapeInfo.reduce<Record<string, string>>((prev, cur) => {\n return { ...prev, ...cur.unfoldInfo.colorIdMap }\n }, {})\n\n return colorItems.map((d) => ({\n id: d,\n alias: colorIdMap[d],\n }))\n}\n\nexport const getColorIdMap = (builder: Builder): Record<string, string> => {\n const advancedVSeed = builder.advancedVSeed\n\n if (!advancedVSeed || isTable(builder.vseed) || isPivotTable(builder.vseed)) {\n return {}\n }\n\n const { datasetReshapeInfo } = advancedVSeed\n const colorIdMap = datasetReshapeInfo.reduce<Record<string, string>>((prev, cur) => {\n return { ...prev, ...cur.unfoldInfo.colorIdMap }\n }, {})\n\n return colorIdMap\n}\n","import type {\n AdvancedPipe,\n AdvancedPipeline,\n AdvancedVSeed,\n ChartType,\n CustomThemeConfig,\n Spec,\n SpecPipe,\n SpecPipeline,\n VSeed,\n VSeedBuilder,\n} from 'src/types'\nimport { buildAdvanced } from './buildAdvanced'\nimport { buildSpec } from './buildSpec'\nimport { build } from './build'\nimport { intl } from 'src/i18n'\nimport { getColorIdMap, getColorItems } from './advanced'\n\nexport class Builder implements VSeedBuilder {\n private _vseed: VSeed\n private _advancedVSeed: AdvancedVSeed | null = null\n private _spec: Spec | null = null\n private _performance: Record<string, string | number> = {}\n\n constructor(vseed: VSeed) {\n this._vseed = vseed\n this._vseed.locale = vseed.locale || intl.getLocale()\n }\n\n /**\n * @description 构建spec\n * @returns spec\n */\n build = <T extends Spec>(): T => build(this) as T\n\n /**\n * @description 构建spec\n * @param advanced 高级配置\n * @returns spec\n */\n buildSpec = (advanced: AdvancedVSeed): Spec => buildSpec(this, advanced)\n\n /**\n * @description 构建spec\n * @returns AdvancedVSeed | null\n */\n buildAdvanced = (): AdvancedVSeed | null => buildAdvanced(this)\n\n /**\n * @description 获取颜色项, 颜色项可以重复,\n * @returns 颜色项\n */\n getColorItems = () => getColorItems(this)\n\n /**\n * @description 获取颜色id映射\n * @returns 颜色id映射\n */\n getColorIdMap = () => getColorIdMap(this)\n\n /**\n * @description 获取vseed\n * @returns vseed\n */\n get vseed() {\n return this._vseed\n }\n\n /**\n * @description 设置vseed\n * @param value vseed\n */\n set vseed(value) {\n this._vseed = value\n }\n\n /**\n * @description 获取advancedVSeed\n * @returns advancedVSeed\n */\n get advancedVSeed() {\n return this._advancedVSeed\n }\n\n /**\n *\n * @description 设置advancedVSeed\n * @param value advancedVSeed\n */\n set advancedVSeed(value) {\n this._advancedVSeed = value\n }\n\n /**\n * @description 获取spec\n * @returns spec\n */\n get spec() {\n return this._spec\n }\n\n /**\n * @description 设置spec\n * @param value spec\n */\n set spec(value) {\n this._spec = value\n }\n\n /**\n * @description 获取performance, 统计了构建spec和advancedVSeed的时间\n * @returns performance\n */\n get performance() {\n return this._performance\n }\n\n /**\n * @description 设置performance\n * @param value performance\n */\n set performance(value) {\n this._performance = value\n }\n\n /**\n * @description 获取advancedPipeline\n * @param chartType 图表类型\n * @returns advancedPipeline\n */\n static getAdvancedPipeline = (chartType: ChartType) => {\n const customPipe = Builder._customAdvancedPipe[chartType] as AdvancedPipe\n const pipeline = Builder._advancedPipelineMap[chartType] as AdvancedPipeline\n if (customPipe) {\n pipeline.push(customPipe)\n }\n return pipeline\n }\n\n /**\n * @description 获取specPipeline\n * @param chartType 图表类型\n * @returns specPipeline\n */\n\n static getSpecPipeline = (chartType: ChartType) => {\n const customPipe = Builder._customSpecPipe[chartType] as SpecPipe\n const pipeline = Builder._specPipelineMap[chartType] as SpecPipeline\n if (customPipe) {\n pipeline.push(customPipe)\n }\n return pipeline\n }\n\n /**\n * @description 根据主题key获取主题配置\n * @param themeKey 主题key\n * @example Builder.getTheme('light'), 获取浅色主题\n * @returns 主题配置\n */\n static getTheme = (themeKey?: string) => Builder._themeMap[themeKey || 'light']\n\n /**\n * @description 获取主题配置映射表\n * @example Builder.getThemeMap()\n * @returns 主题配置映射表\n */\n static getThemeMap = () => Builder._themeMap\n\n /**\n * @description 从vseed创建builder\n * @param vseed 完整的vseed DSL\n * @returns builder\n */\n static from = (vseed: VSeed) => new Builder(vseed)\n\n static _advancedPipelineMap: Partial<Record<ChartType, AdvancedPipeline>> = {}\n static _specPipelineMap: Partial<Record<ChartType, SpecPipeline>> = {}\n static _customAdvancedPipe: Partial<Record<ChartType, AdvancedPipe>> = {}\n static _customSpecPipe: Partial<Record<ChartType, SpecPipe>> = {}\n static _themeMap: Record<string, CustomThemeConfig> = {}\n}\n","import { isEmpty } from 'remeda'\nimport type { VSeed } from 'src/types'\n\nexport const checkVSeed = (vseed: VSeed) => {\n const { chartType, dataset, dimensions, measures } = vseed\n if (!chartType) {\n throw new Error('chartType is required')\n }\n if (!dataset || isEmpty(dataset)) {\n throw new Error('dataset is required, and must be an array')\n }\n if (dimensions && !Array.isArray(dimensions)) {\n throw new Error('dimensions must be an array')\n }\n if (measures && !Array.isArray(measures)) {\n throw new Error('measures must be an array')\n }\n}\n","import { checkVSeed } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed } from 'src/types'\n\nexport const initAdvancedVSeed: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType, locale } = vseed\n\n checkVSeed(vseed)\n\n return {\n ...advancedVSeed,\n chartType,\n locale: locale || 'zh-CN',\n } as AdvancedVSeed\n}\n","import type { Measure, MeasureGroup } from 'src/types'\n\nexport const isMeasure = (measure: Measure | MeasureGroup): measure is Measure => {\n return !('children' in measure)\n}\n\nexport const isMeasureGroup = (measure: Measure | MeasureGroup): measure is MeasureGroup => {\n return 'children' in measure\n}\n\nexport const isMeasures = (measures: Measure[] | MeasureGroup[]): measures is Measure[] => {\n return measures.every(isMeasure)\n}\n","import { clone } from 'remeda'\nimport { isMeasure, preorderTraverse } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Datum } from 'src/types'\n\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 preorderTraverse(clonedMeasures, (node) => {\n if (isMeasure(node)) {\n node.alias = node.alias || node.id\n }\n return false\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","import type { Dimension, DimensionGroup } from 'src/types'\n\nexport const isDimension = (dimension: Dimension | DimensionGroup): dimension is Dimension => {\n return !('children' in dimension)\n}\n\nexport const isDimensionGroup = (dimension: Dimension | DimensionGroup): dimension is DimensionGroup => {\n return 'children' in dimension\n}\n\n// export const isDimensions = (dimensions: Dimension[] | DimensionGroup[]): dimensions is Dimension[] => {\n// return dimensions.every(isDimension)\n// }\n","import type { Measure, MeasureGroup, MeasureTree } from 'src/types'\nimport { preorderTraverse } from '../tree'\n\nexport const findMeasureById = (measures: MeasureTree = [], id: string): Measure | undefined => {\n if (!measures) return undefined\n let result: Measure | undefined\n preorderTraverse<Measure, MeasureGroup>(measures, (node) => {\n if (!('children' in node)) {\n if (node.id === id) {\n result = node as Measure\n return true\n }\n }\n return false\n })\n return result\n}\n\nexport const findFirstMeasure = (measures: MeasureTree = []): Measure | undefined => {\n if (!measures) return undefined\n let result: Measure | undefined\n preorderTraverse<Measure, MeasureGroup>(measures, (node) => {\n if (!('children' in node)) {\n result = node as Measure\n return true\n }\n return false\n })\n return result\n}\n\nexport const findAllMeasures = (measures: MeasureTree = []): Measure[] => {\n if (!measures) return []\n const result: Measure[] = []\n preorderTraverse<Measure, MeasureGroup>(measures, (node) => {\n if (!('children' in node)) {\n result.push(node as Measure)\n }\n return false\n })\n return result\n}\n","import { clone } from 'remeda'\nimport { findAllMeasures, isDimension, preorderTraverse } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Datum, Dimensions, DimensionTree } from 'src/types'\n\nexport const defaultDimensions: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dimensions, dataset } = vseed\n\n if (dimensions && dimensions.length > 0) {\n const clonedDimensions = clone(dimensions)\n preorderTraverse(clonedDimensions, (node) => {\n if (isDimension(node)) {\n node.alias = node.alias || node.id\n }\n return false\n })\n return {\n ...advancedVSeed,\n dimensions: clonedDimensions,\n }\n }\n\n const measures = findAllMeasures(advancedVSeed.measures as DimensionTree)\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n const newDimensions = Object.keys(sample)\n .filter(\n (key) =>\n top100dataset.some((item) => typeof item[key] === 'string') &&\n !['', null, undefined].includes(key) &&\n !measures.some((measure) => measure.id === key),\n )\n .map((dim) => ({\n id: dim,\n alias: dim,\n })) as Dimensions\n\n return {\n ...result,\n dimensions: newDimensions,\n }\n}\n","import type { AdvancedPipe } from 'src/types'\n\nexport const records: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { dataset } = vseed\n return {\n ...advancedVSeed,\n dataset,\n }\n}\n","import { pick } from 'remeda'\nimport type { AdvancedPipe, Config } from 'src/types'\n\nexport const tableConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const config = pick(vseed, [\n 'backgroundColor',\n 'bodyFontSize',\n 'bodyFontColor',\n 'bodyBackgroundColor',\n 'headerFontSize',\n 'headerFontColor',\n 'headerBackgroundColor',\n 'hoverHeaderBackgroundColor',\n 'hoverHeaderInlineBackgroundColor',\n 'selectedBorderColor',\n 'selectedBackgroundColor',\n ]) as Config['pivotTable']\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result\n}\n","import { clone, isNullish, isNumber, isObjectType, isString, merge, mergeDeep } from 'remeda'\nimport type { AdvancedPipe, AdvancedVSeed } from 'src/types'\n\nexport const theme: AdvancedPipe = (advancedVSeed, context) => {\n const { customTheme, vseed } = context\n const { theme = 'light', chartType } = vseed\n const result = {\n ...advancedVSeed,\n } as AdvancedVSeed\n\n if (!customTheme || !customTheme[theme]) {\n return result\n }\n\n const chartConfigTheme = customTheme?.[theme].config?.[chartType]\n if (chartConfigTheme) {\n const chartConfig = result.config?.[chartType] || {}\n const mergedConfig = mergeDeep(chartConfigTheme, clone(chartConfig))\n\n // 数组项不会被Merge, 需要将1个主题配置, 合并到数组的每一项\n for (const _k in mergedConfig) {\n const key = _k as keyof typeof mergedConfig\n // 配置的第一层, 如果是数组, 则数组的每一项目和主题配置合并\n if (Array.isArray(mergedConfig[key])) {\n mergedConfig[key] = mergeArray(mergedConfig[key], chartConfigTheme[key])\n }\n }\n\n result.config = {\n [chartType]: mergedConfig,\n }\n }\n\n const chartCustomTheme = customTheme?.[theme]?.config?.[chartType]\n\n result.customTheme = {\n config: {\n [chartType]: chartCustomTheme,\n },\n }\n\n return result\n}\n\nconst mergeArray = <Destination extends Array<object>, Source extends object | number | string | undefined | null>(\n arr: Destination,\n themeItem: Source,\n): Destination => {\n if (isNullish(themeItem) || isString(themeItem) || isNumber(themeItem)) {\n return arr\n }\n\n if (!Array.isArray(arr)) {\n return arr\n }\n\n if (arr.some((d) => !isObjectType(d))) {\n return arr\n }\n\n return arr.map((item) => {\n return merge(themeItem, item)\n }) as Destination\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport { initAdvancedVSeed, records, tableConfig, defaultMeasures, defaultDimensions } from '../pipes'\nimport { theme } from '../../chart/pipes'\n\nexport const tableAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n\n records,\n tableConfig,\n theme,\n]\n","import type { ListTableConstructorOptions } from '@visactor/vtable'\nimport type { SpecPipe } from 'src/types'\n\nexport const initTable: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { dataset } = advancedVSeed\n const { config } = advancedVSeed\n const { backgroundColor = 'transparent' } = config.table || {}\n\n return {\n ...spec,\n records: dataset,\n widthMode: 'standard',\n defaultHeaderColWidth: 'auto',\n heightMode: 'autoHeight',\n autoWrapText: true,\n columnResizeMode: 'all',\n showHeader: true,\n tooltip: {\n isShowOverflowTextTooltip: true,\n },\n animationAppear: {\n duration: 300,\n delay: 250,\n type: 'one-by-one',\n direction: 'row',\n },\n hover: {\n highlightMode: 'row',\n },\n theme: {\n cellInnerBorder: false,\n underlayBackgroundColor: backgroundColor,\n },\n } as ListTableConstructorOptions\n}\n","import type { ColumnsDefine, ListTableConstructorOptions } from '@visactor/vtable'\nimport { isMeasure } from 'src/pipeline/utils'\nimport type { Dimension, DimensionGroup, DimensionTree, SpecPipe } from 'src/types'\n\nexport const dimensionTreeToColumns: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const dimensions = (advancedVSeed as unknown as { dimensions: DimensionTree }).dimensions\n const result = { ...spec } as ListTableConstructorOptions\n const eachNode = (node: Dimension | DimensionGroup) => {\n if (isMeasure(node)) {\n return {\n width: 'auto',\n }\n }\n\n return {}\n }\n const columns = treeTreeToColumns<Dimension, DimensionGroup>(dimensions, eachNode)\n\n return {\n ...result,\n columns: [...(result.columns || []), ...columns] as ListTableConstructorOptions['columns'],\n }\n}\n\nconst treeTreeToColumns = <\n T extends { id: string; alias?: string },\n U extends { id: string; alias?: string; children?: (T | U)[] },\n>(\n tree: (T | U)[],\n callback?: (node: T | U) => object,\n): ColumnsDefine[] => {\n const result = tree.map((item) => {\n if ('children' in item && Array.isArray(item.children)) {\n const groupNode = item as unknown as U\n const field = groupNode.id\n const title = groupNode.alias ?? groupNode.id\n const props = callback?.(groupNode) || {}\n // group\n return {\n field,\n title,\n columns: treeTreeToColumns(item.children, callback),\n ...props,\n }\n } else {\n const field = item.id\n const title = item.alias ?? item.id\n const props = callback?.(item) || {}\n // leaf\n return {\n field,\n title,\n ...props,\n }\n }\n }) as unknown as ColumnsDefine[]\n\n return result || []\n}\n","import { isNumber } from 'remeda'\nimport { intl } from '../../../i18n'\nimport type { Formatter, Locale, NumFormat } from 'src/types'\n\nexport const createNumFormatter = (format?: Partial<NumFormat>, locale: Locale = intl.getLocale()): Formatter => {\n const {\n type = 'number',\n ratio = 1,\n thousandSeparator = true,\n prefix = '',\n suffix = '',\n symbol = '',\n fractionDigits = 2,\n significantDigits,\n roundingMode = 'halfExpand',\n roundingPriority = 'auto',\n } = format || {}\n\n const numFormatterOptions: Intl.NumberFormatOptions = {\n style: 'decimal',\n notation: type === 'scientific' ? 'scientific' : 'standard',\n // @ts-expect-error roundingMode is not in NumberFormatOptions\n roundingMode,\n roundingPriority,\n }\n\n if (isNumber(fractionDigits)) {\n if (fractionDigits >= 0) {\n numFormatterOptions.minimumFractionDigits = fractionDigits\n numFormatterOptions.maximumFractionDigits = fractionDigits\n }\n }\n if (isNumber(significantDigits) && significantDigits > 0) {\n if (significantDigits > 0) {\n numFormatterOptions.minimumSignificantDigits = significantDigits\n numFormatterOptions.maximumSignificantDigits = significantDigits\n }\n }\n\n const numFormatter = new Intl.NumberFormat(locale, { ...numFormatterOptions, useGrouping: thousandSeparator })\n\n return (value?: number | string) => {\n let num = Number(value)\n let typeSymbol = ''\n if (Number.isNaN(num)) {\n return String(value)\n }\n\n // apply ratio for percent/permille\n if (type === 'percent') {\n num *= 100\n typeSymbol = '%'\n } else if (type === 'permille') {\n num *= 1000\n typeSymbol = '‰'\n } else if (type === 'number') {\n num = num / (ratio || 1)\n }\n\n // format value\n let numStr = numFormatter.format(num)\n\n // add thousand separator\n if (thousandSeparator) {\n const parts = numStr.split('.')\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')\n numStr = parts.join('.')\n }\n\n const validSymbol = symbol ?? ''\n\n // add symbol, typeSymbol, prefix and suffix\n return `${prefix}${numStr}${typeSymbol}${validSymbol}${suffix}`\n }\n}\n\nexport const autoNumFormatter = (value?: number | string, locale: Locale = intl.getLocale()): string => {\n if (value === undefined || value === null) return String(value)\n const num = Number(value)\n if (Number.isNaN(num)) return String(value)\n\n const numFormatterOptions: Intl.NumberFormatOptions = {\n style: 'decimal',\n notation: 'compact',\n useGrouping: true,\n }\n numFormatterOptions.minimumFractionDigits = 0\n numFormatterOptions.maximumFractionDigits = 2\n\n const numFormatter = new Intl.NumberFormat(locale, { ...numFormatterOptions })\n\n return numFormatter.format(Number(value))\n}\n","import type { Formatter, Locale, NumFormat } from 'src/types'\nimport { autoNumFormatter, createNumFormatter } from './createNumFormatter'\nimport { intl } from 'src/i18n'\n\nexport const createFormatter = (format: Partial<NumFormat>, locale?: Locale): Formatter => {\n return createNumFormatter(format, locale)\n}\n\nexport const autoFormatter = (value?: number | string, locale: Locale = intl.getLocale()): string => {\n return autoNumFormatter(value, locale)\n}\n","import type { Formatter, Measure } from 'src/types'\nimport { autoFormatter, createFormatter } from './createFormatter'\nimport { isEmpty, isNullish } from 'remeda'\n\nexport const createFormatterByMeasure = (measure?: Measure): Formatter => {\n if (!measure) {\n return (v) => String(v)\n }\n const { numFormat, format, autoFormat } = measure\n\n const formatterFormat = numFormat || format || {}\n\n if (autoFormat === true) {\n return autoFormatter\n }\n\n if (isNullish(autoFormat) && isEmpty(formatterFormat)) {\n return autoFormatter\n }\n\n if (!isEmpty(formatterFormat)) {\n return createFormatter(formatterFormat)\n }\n\n return (v) => String(v)\n}\n","import type { ColumnsDefine, ListTableConstructorOptions } from '@visactor/vtable'\nimport { createFormatterByMeasure, isMeasure } from 'src/pipeline/utils'\nimport type { MeasureGroup, Measure, MeasureTree, SpecPipe, Datum } from 'src/types'\n\nexport const measureTreeToColumns: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const measures = (advancedVSeed as unknown as { measures: MeasureTree }).measures\n const result = { ...spec } as ListTableConstructorOptions\n\n const eachNode = (node: Measure | MeasureGroup) => {\n if (isMeasure(node)) {\n return {\n width: 'auto',\n fieldFormat: fieldFormat(node),\n }\n }\n\n return {}\n }\n const columns = treeTreeToColumns<Measure, MeasureGroup>(measures, eachNode)\n return {\n ...result,\n columns: [...(result.columns || []), ...columns] as ListTableConstructorOptions['columns'],\n }\n}\n\nconst fieldFormat = (node: Measure) => {\n const formatter = createFormatterByMeasure(node)\n\n return (datum: Datum) => {\n const { id } = node\n const value = datum[id] as number | string | undefined\n return formatter(value)\n }\n}\nconst treeTreeToColumns = <\n T extends { id: string; alias?: string },\n U extends { id: string; alias?: string; children?: (T | U)[] },\n>(\n tree: (T | U)[],\n callback?: (node: T | U) => object,\n): ColumnsDefine[] => {\n const result = tree.map((item) => {\n if ('children' in item && Array.isArray(item.children)) {\n const groupNode = item as unknown as U\n const field = groupNode.id\n const title = groupNode.alias ?? groupNode.id\n const props = callback?.(groupNode) || {}\n // group\n return {\n field,\n title,\n columns: treeTreeToColumns(item.children, callback),\n ...props,\n }\n } else {\n const field = item.id\n const title = item.alias ?? item.id\n const props = callback?.(item) || {}\n // leaf\n return {\n field,\n title,\n ...props,\n }\n }\n }) as unknown as ColumnsDefine[]\n\n return result || []\n}\n","import type { SpecPipe, TableConfig } from 'src/types'\nimport type { ThemeLike, WithTheme } from './type'\n\nexport const bodyStyle: SpecPipe = (spec, context) => {\n const result = { ...spec } as Partial<typeof spec> & WithTheme\n const { advancedVSeed } = context\n const { chartType, config } = advancedVSeed\n const themeConfig = config?.[chartType] as TableConfig\n\n if (!result.theme || !themeConfig) return result\n\n // basic\n const borderColor = themeConfig.borderColor || 'rgb(224, 224, 224)'\n const backgroundColor = themeConfig.bodyBackgroundColor || '#fff'\n const fontColor = themeConfig.bodyFontColor || '#1B1F23'\n const fontSize = themeConfig.bodyFontSize || 12\n // Interaction\n const hoverCellBgColor = themeConfig.hoverBodyBackgroundColor || '#bedaff'\n const hoverInlineColor = themeConfig.hoverBodyInlineBackgroundColor || '#bedaff'\n\n if (!result.theme) result.theme = {}\n ;(result.theme as ThemeLike).bodyStyle = {\n borderColor: borderColor,\n borderLineWidth: 1,\n padding: [8, 12, 8, 12],\n textAlign: 'right',\n hover: {\n cellBgColor: hoverCellBgColor,\n inlineRowBgColor: hoverInlineColor,\n inlineColumnBgColor: hoverInlineColor,\n },\n color: fontColor,\n fontSize: fontSize,\n fontStyle: 'normal',\n fontWeight: 'normal',\n fontVariant: 'normal',\n bgColor: backgroundColor,\n lineHeight: fontSize * 1.5,\n }\n\n return result\n}\n","import type { SpecPipe, TableConfig } from 'src/types'\nimport type { ThemeLike, WithTheme } from './type'\n\nexport const headerStyle: SpecPipe = (spec, context) => {\n const result = { ...spec } as Partial<typeof spec> & WithTheme\n const { advancedVSeed } = context\n const { config, chartType } = advancedVSeed\n const themConfig = config?.[chartType] as TableConfig\n\n if (!result.theme || !themConfig) return result\n\n // basic\n const borderColor = themConfig.borderColor || 'rgb(224, 224, 224)'\n const backgroundColor = themConfig.headerBackgroundColor || '#EEF1F5'\n const fontColor = themConfig.headerFontColor || '#1B1F23'\n const fontSize = themConfig.headerFontSize || 12\n // Interaction\n const hoverCellBgColor = themConfig.hoverHeaderBackgroundColor || '#bedaff'\n const hoverInlineColor = themConfig.hoverHeaderInlineBackgroundColor || '#bedaff'\n\n ;(result.theme as ThemeLike).headerStyle = {\n borderColor: borderColor,\n borderLineWidth: 1,\n padding: [8, 12, 8, 12],\n textAlign: 'center',\n hover: {\n cellBgColor: hoverCellBgColor,\n inlineRowBgColor: hoverInlineColor,\n inlineColumnBgColor: hoverInlineColor,\n },\n frameStyle: {\n borderColor: borderColor,\n borderLineWidth: [0, 0, 1, 0],\n },\n fontSize: fontSize,\n fontVariant: 'normal',\n fontStyle: 'normal',\n fontWeight: 'bold',\n color: fontColor,\n bgColor: backgroundColor,\n lineHeight: fontSize * 1.5,\n }\n\n return result\n}\n","import type { SpecPipe, TableConfig } from 'src/types'\nimport type { ThemeLike, WithTheme } from './type'\n\nexport const frameStyle: SpecPipe = (spec, context) => {\n const result = { ...spec } as Partial<typeof spec> & WithTheme\n const { advancedVSeed } = context\n const { config, chartType } = advancedVSeed\n const themConfig = config?.[chartType] as TableConfig\n\n if (!result.theme || !themConfig) return result\n\n const borderColor = themConfig.borderColor || 'rgb(224, 224, 224)'\n\n ;(result.theme as ThemeLike).frameStyle = {\n borderColor,\n borderLineWidth: 1,\n cornerRadius: 4,\n }\n\n return result\n}\n","import type { SpecPipe, TableConfig } from 'src/types'\nimport type { ThemeLike, WithTheme } from './type'\n\nexport const selectionStyle: SpecPipe = (spec, context) => {\n const result = { ...spec } as Partial<typeof spec> & WithTheme\n const { advancedVSeed } = context\n const { config, chartType } = advancedVSeed\n const themConfig = config?.[chartType] as TableConfig\n\n if (!result.theme || !themConfig) return result\n\n const borderColor = themConfig.selectedBorderColor || 'rgb(224, 224, 224)'\n const backgroundColor = themConfig.selectedBackgroundColor || 'rgb(224, 224, 224, 0.5)'\n\n ;(result.theme as ThemeLike).selectionStyle = {\n cellBorderColor: borderColor,\n cellBorderLineWidth: 2,\n cellBgColor: backgroundColor,\n }\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n initTable,\n dimensionTreeToColumns,\n measureTreeToColumns,\n bodyStyle,\n headerStyle,\n frameStyle,\n selectionStyle,\n} from '../pipes'\n\nexport const tableSpecPipeline: SpecPipeline = [\n initTable,\n dimensionTreeToColumns,\n measureTreeToColumns,\n bodyStyle,\n headerStyle,\n frameStyle,\n selectionStyle,\n]\n","import { tableAdvancedPipeline, tableSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerTable = () => {\n Builder._advancedPipelineMap['table'] = tableAdvancedPipeline\n Builder._specPipelineMap['table'] = tableSpecPipeline\n}\n","// Reshape\nexport const ORIGINAL_DATA = '__OriginalData__'\nexport const Separator = '-'\n\n// Measures\nexport const FoldMeasureName = '__MeaName__'\nexport const FoldMeasureId = '__MeaId__'\nexport const FoldMeasureValue = '__MeaValue__'\nexport const MeasureName = FoldMeasureName\n\n// Measures For DualAxis\nexport const FoldPrimaryMeasureValue = '__MeaPrimaryValue__'\nexport const FoldSecondaryMeasureValue = '__MeaSecondaryValue__'\n\n// Measures For Scatter\nexport const FoldXMeasureValue = '__MeaXValue__'\nexport const FoldYMeasureValue = '__MeaYValue__'\nexport const FoldXMeasureId = '__MeaXId__'\nexport const FoldYMeasureId = '__MeaYId__'\n// Encoding\nexport const XEncoding = '__Dim_X__'\nexport const YEncoding = '__Dim_Y__'\nexport const AngleEncoding = '__Dim_Angle__'\nexport const DetailEncoding = '__Dim_Detail__'\nexport const ColorEncoding = '__Dim_Color__'\nexport const ColorIdEncoding = '__Dim_ColorId__'\n\n// Measures For boxPlot\nexport const Q1MeasureValue = '__Q1__'\nexport const Q3MeasureValue = '__Q3__'\nexport const MinMeasureId = '__Min__'\nexport const MaxMeasureId = '__Max__'\nexport const OutliersMeasureId = '__Outliers__'\nexport const MedianMeasureId = '__Meadian__'\n\n// Measures For Histogram\nexport const BinStartMeasureId = '__BinStart__'\nexport const BinEndMeasureId = '__BinEnd__'\nexport const BinCountMeasureId = '__BinCount__'\nexport const BinPercentageMeasureId = '__BinPercentage__'\n","import { MeasureName } from 'src/dataReshape'\nimport { intl } from 'src/i18n'\nimport { findAllMeasures } from 'src/pipeline/utils/measures/find'\nimport type { AdvancedPipe, Dimension, DimensionTree } from 'src/types'\n\nexport const defaultMeasureName: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const measures = findAllMeasures(advancedVSeed.measures as DimensionTree)\n\n // 如果没有指标名称维度,则默认添加指标名称维度\n if (measures.length > 1 && !result.dimensions?.some((dim) => dim.id === MeasureName)) {\n result.dimensions?.push({\n id: MeasureName,\n alias: intl.i18n`指标名称`,\n encoding: 'row',\n } as Dimension)\n }\n\n return result\n}\n","import { unique } from 'remeda'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\n\nexport const encodingForPivotTable: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\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) => {\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.tooltip = uniqueDimIds\n encoding.row = []\n encoding.column = []\n\n uniqueDimIds.forEach((item, index) => {\n if (index % 2 === 0) {\n encoding.column!.push(item)\n } else {\n encoding.row!.push(item)\n }\n })\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.tooltip = uniqueDimIds\n encoding.row = []\n encoding.column = []\n\n dimensions.forEach((dim, index) => {\n const id = dim.id\n if (dim.encoding === 'row') {\n encoding.row!.push(id)\n } else if (dim.encoding === 'column') {\n encoding.column!.push(id)\n } else {\n if (index % 2 === 0) {\n encoding.column!.push(id)\n } else {\n encoding.row!.push(id)\n }\n }\n })\n}\n\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.tooltip = unique(measures.map((item) => item.id))\n encoding.detail = unique(\n measures.filter((item) => item.encoding === 'detail' || !item.encoding).map((item) => item.id),\n )\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.tooltip = measures.map((item) => item.id)\n encoding.detail = unique(\n measures.filter((item) => item.encoding === 'detail' || !item.encoding).map((item) => item.id),\n )\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Dataset, FoldInfo, Measures } from 'src/types'\nimport { ColorEncoding, ColorIdEncoding, ORIGINAL_DATA } from './constant'\nimport { omit } from 'remeda'\n\n/**\n * 折叠指定的指标\n * @description 合并指定的指标为1个, 无论多少个, 都能转换为1个, 取名为fold, 意为折叠后混合在一起.\n */\nexport const foldMeasures = (\n dataset: Dataset,\n measures: Measures,\n options: {\n measureId: string\n measureName: string\n measureValue: string\n colorMeasureId?: string\n allowEmptyFold?: boolean\n },\n): {\n dataset: Dataset\n foldInfo: FoldInfo\n} => {\n const { measureId, measureName, measureValue, colorMeasureId, allowEmptyFold = true } = options || {}\n\n const foldInfo: FoldInfo = {\n measureId,\n measureName,\n measureValue,\n statistics: {\n max: -Infinity,\n min: Infinity,\n sum: 0,\n count: 0,\n colorMin: Infinity,\n colorMax: -Infinity,\n },\n foldMap: {},\n }\n\n if (!allowEmptyFold && measures.length === 0) {\n return {\n dataset,\n foldInfo,\n }\n }\n\n const result: Dataset = new Array(dataset.length * measures.length) as Dataset\n let index = 0\n const ids = measures.map((d) => d.id)\n for (let i = 0; i < dataset.length; i++) {\n for (let j = 0; j < measures.length; j++) {\n const datum: Record<string, any> = omit({ ...dataset[i] }, ids)\n\n datum[ORIGINAL_DATA] = dataset[i]\n\n const measure = measures[j]\n const { id, alias } = measure\n\n datum[id] = dataset[i][id] as unknown\n datum[measureId] = id\n datum[measureName] = alias || id\n datum[measureValue] = dataset[i][id] as unknown\n\n if (colorMeasureId) {\n const value = (datum[ORIGINAL_DATA] as Record<string, string | number>)[colorMeasureId]\n datum[ColorEncoding] = value\n datum[ColorIdEncoding] = colorMeasureId\n\n const valueNumber = Number(value)\n foldInfo.statistics.colorMin = Math.min(foldInfo.statistics.colorMin, valueNumber)\n foldInfo.statistics.colorMax = Math.max(foldInfo.statistics.colorMax, valueNumber)\n }\n\n const valueNumber = Number(datum[id])\n foldInfo.statistics.min = Math.min(foldInfo.statistics.min, valueNumber)\n foldInfo.statistics.max = Math.max(foldInfo.statistics.max, valueNumber)\n foldInfo.statistics.sum += valueNumber\n foldInfo.statistics.count++\n\n foldInfo.foldMap[id] = alias\n result[index++] = datum\n }\n }\n\n return {\n dataset: result,\n foldInfo,\n }\n}\n","import { FoldMeasureId, FoldMeasureName, foldMeasures, FoldMeasureValue } from 'src/dataReshape'\nimport {} from 'src/pipeline/spec/chart/pipes'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, DatasetReshapeInfo, PivotTable } from 'src/types'\n\nexport const reshapePivotTable: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset, chartType } = vseed as PivotTable\n const { dimensions, measures } = advancedVSeed\n const { dataset: newDatasets, foldInfo } = foldMeasures(dataset, findAllMeasures(measures), {\n measureId: FoldMeasureId,\n measureName: FoldMeasureName,\n measureValue: FoldMeasureValue,\n allowEmptyFold: false,\n })\n\n const datasetReshapeInfo = [\n {\n id: String(chartType),\n index: 0,\n foldInfo,\n },\n ] as unknown as DatasetReshapeInfo\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: datasetReshapeInfo,\n dimensions,\n measures,\n }\n}\n","import { pick } from 'remeda'\nimport type { AdvancedPipe, Config } from 'src/types'\n\nexport const pivotTableConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const config = pick(vseed, [\n 'backgroundColor',\n 'bodyFontSize',\n 'bodyFontColor',\n 'bodyBackgroundColor',\n 'headerFontSize',\n 'headerFontColor',\n 'headerBackgroundColor',\n 'hoverHeaderBackgroundColor',\n 'hoverHeaderInlineBackgroundColor',\n 'selectedBorderColor',\n 'selectedBackgroundColor',\n ]) as Config['table']\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport { theme } from '../../chart/pipes'\nimport {\n defaultDimensions,\n defaultMeasureName,\n defaultMeasures,\n encodingForPivotTable,\n initAdvancedVSeed,\n pivotTableConfig,\n reshapePivotTable,\n} from '../pipes'\n\nexport const pivotTableAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingForPivotTable,\n reshapePivotTable,\n pivotTableConfig,\n theme,\n]\n","import type { PivotTableConstructorOptions } from '@visactor/vtable'\nimport type { SpecPipe } from 'src/types'\n\nexport const initPivotTable: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { dataset } = advancedVSeed\n const { config } = advancedVSeed\n const { backgroundColor = 'transparent' } = config.pivotTable || {}\n return {\n ...spec,\n records: dataset,\n widthMode: 'standard',\n defaultHeaderColWidth: 'auto',\n heightMode: 'autoHeight',\n autoWrapText: true,\n columnResizeMode: 'all',\n columnResizeType: 'column',\n showColumnHeader: true,\n showRowHeader: true,\n select: {\n highlightMode: 'cell',\n headerSelectMode: 'inline',\n },\n hover: {\n highlightMode: 'cross',\n },\n tooltip: {\n isShowOverflowTextTooltip: true,\n },\n corner: {\n titleOnDimension: 'all',\n },\n widthAdaptiveMode: 'all',\n animationAppear: {\n duration: 300,\n delay: 250,\n type: 'one-by-one',\n direction: 'row',\n },\n theme: {\n cellInnerBorder: false,\n underlayBackgroundColor: backgroundColor,\n },\n } as PivotTableConstructorOptions\n}\n","import type { PivotTableConstructorOptions } from '@visactor/vtable'\nimport type { Dimensions, SpecPipe } from 'src/types'\n\nexport const pivotColumns: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n const dimensions = advancedVSeed.dimensions as Dimensions\n const columns = dimensions.filter((item) => encoding.column?.includes(item.id))\n\n return {\n ...spec,\n columns: columns.map((item) => {\n return {\n dimensionKey: item.id,\n title: item.alias || item.id,\n width: 'auto',\n }\n }),\n } as PivotTableConstructorOptions\n}\n","import type { Dimensions, SpecPipe } from 'src/types'\n\nexport const pivotRows: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const dimensions = advancedVSeed.dimensions as Dimensions\n const { encoding } = advancedVSeed\n const rows = dimensions.filter((item) => encoding.row?.includes(item.id))\n\n return {\n ...spec,\n rows: rows.map((item) => {\n return {\n dimensionKey: item.id,\n title: item.alias || item.id,\n width: 'auto',\n }\n }),\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\nimport type { SpecPipe } from 'src/types'\n\nexport const titleOnDimension: SpecPipe = (spec) => {\n const { rows = [], columns = [] } = spec as any\n\n return {\n ...spec,\n corner: {\n titleOnDimension: (rows as any[]).length <= 1 && (columns as any[]).length >= 1 ? 'column' : 'row',\n },\n }\n}\n","import type { PivotChartConstructorOptions, BaseTableAPI } from '@visactor/vtable'\nimport { isNumber } from 'remeda'\nimport { intl } from 'src/i18n'\nimport { createFormatterByMeasure, findMeasureById } from 'src/pipeline/utils'\nimport type { Datum, FoldInfo, MeasureTree, SpecPipe } from 'src/types'\n\nexport const pivotIndicators: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { measures, datasetReshapeInfo } = advancedVSeed\n const { foldInfo } = datasetReshapeInfo[0]\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n const hasRow = ((spec as any)?.rows as any[])?.length > 0\n const foldMapValues = Object.values(foldInfo.foldMap)\n\n return {\n ...spec,\n indicatorTitle: intl.i18n`指标名称`,\n indicatorsAsCol: hasRow,\n hideIndicatorName: hasRow,\n indicators: [\n {\n cellType: 'text',\n indicatorKey: foldInfo.measureValue,\n title: foldMapValues.length > 1 ? '' : foldMapValues[0],\n width: 'auto',\n format: fieldFormat(measures, foldInfo as FoldInfo),\n },\n ] as unknown as PivotChartConstructorOptions['indicators'],\n }\n}\n\nconst fieldFormat = (measures: MeasureTree, foldInfo: FoldInfo) => {\n return (value: number | string, col?: number, row?: number, table?: BaseTableAPI) => {\n if (!isNumber(col) || !isNumber(row) || !table) {\n return value\n }\n\n const datum = table.getCellOriginRecord(col, row) as Datum[]\n if (!datum[0]) {\n return value\n }\n const { measureId: foldMeasureId } = foldInfo\n const measureId = datum[0][foldMeasureId] as string\n const measure = findMeasureById(measures, measureId)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n }\n}\n","import type { SpecPipe, TableConfig } from 'src/types'\nimport type { ThemeLike, WithTheme } from './type'\n\nexport const rowHeaderStyle: SpecPipe = (spec, context) => {\n const result = { ...spec } as Partial<typeof spec> & WithTheme\n const { advancedVSeed } = context\n const { config, chartType } = advancedVSeed\n const themConfig = config?.[chartType] as TableConfig\n\n if (!result.theme || !themConfig) return result\n\n // basic\n const borderColor = themConfig.borderColor || 'rgb(224, 224, 224)'\n const backgroundColor = themConfig.headerBackgroundColor || '#EEF1F5'\n const fontColor = themConfig.headerFontColor || '#1B1F23'\n const fontSize = themConfig.headerFontSize || 12\n // Interaction\n const hoverCellBgColor = themConfig.hoverHeaderBackgroundColor || '#bedaff'\n const hoverInlineColor = themConfig.hoverHeaderInlineBackgroundColor || '#bedaff'\n\n ;(result.theme as ThemeLike).rowHeaderStyle = {\n borderColor: borderColor,\n borderLineWidth: 1,\n padding: [8, 12, 8, 12],\n textAlign: 'left',\n hover: {\n cellBgColor: hoverCellBgColor,\n inlineRowBgColor: hoverInlineColor,\n inlineColumnBgColor: hoverInlineColor,\n },\n frameStyle: {\n borderColor: borderColor,\n borderLineWidth: [0, 1, 0, 0],\n },\n fontSize: fontSize,\n fontVariant: 'normal',\n fontStyle: 'normal',\n fontWeight: 'bold',\n color: fontColor,\n bgColor: backgroundColor,\n lineHeight: fontSize * 1.5,\n }\n\n return result\n}\n","import type { SpecPipe, TableConfig } from 'src/types'\nimport type { ThemeLike, WithTheme } from './type'\n\nexport const cornerHeaderStyle: SpecPipe = (spec, context) => {\n const result = { ...spec } as Partial<typeof spec> & WithTheme\n const { advancedVSeed } = context\n const { config, chartType } = advancedVSeed\n const themConfig = config?.[chartType] as TableConfig\n\n if (!result.theme || !themConfig) return result\n\n // basic\n const borderColor = themConfig.borderColor || 'rgb(224, 224, 224)'\n const backgroundColor = themConfig.headerBackgroundColor || '#EEF1F5'\n const fontColor = themConfig.headerFontColor || '#1B1F23'\n const fontSize = themConfig.headerFontSize || 12\n // Interaction\n const hoverInlineColor = themConfig.hoverHeaderInlineBackgroundColor\n const hoverCellColor = themConfig.hoverHeaderBackgroundColor\n\n ;(result.theme as ThemeLike).cornerHeaderStyle = {\n borderColor: [borderColor, borderColor],\n borderLineWidth: 1,\n padding: [8, 12, 8, 12],\n textAlign: 'left',\n hover: {\n cellBgColor: hoverCellColor || undefined,\n inlineRowBgColor: hoverInlineColor || undefined,\n inlineColumnBgColor: hoverInlineColor || undefined,\n },\n frameStyle: {\n borderColor: borderColor,\n borderLineWidth: [0, 1, 1, 0],\n },\n fontSize: fontSize,\n fontVariant: 'normal',\n fontStyle: 'normal',\n fontWeight: 'bold',\n color: fontColor,\n bgColor: backgroundColor,\n lineHeight: fontSize * 1.5,\n }\n\n return result\n}\n","import { findAllMeasures } from 'src/pipeline/utils'\nimport type { SpecPipe } from 'src/types'\n\nexport const dataConfig: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const measures = findAllMeasures(advancedVSeed.measures)\n\n const aggregationRules = measures.map((measure) => ({\n field: measure.id,\n aggregationType: 'NONE',\n indicatorKey: measure.id,\n }))\n\n return {\n ...spec,\n dataConfig: {\n aggregationRules,\n },\n }\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n initPivotTable,\n pivotColumns,\n pivotRows,\n pivotIndicators,\n bodyStyle,\n headerStyle,\n rowHeaderStyle,\n cornerHeaderStyle,\n frameStyle,\n selectionStyle,\n titleOnDimension,\n} from '../pipes'\nimport { dataConfig } from '../pipes/indicators/pivotDataConfig'\n\nexport const pivotTableSpecPipeline: SpecPipeline = [\n initPivotTable,\n pivotColumns,\n pivotRows,\n titleOnDimension,\n pivotIndicators,\n bodyStyle,\n headerStyle,\n rowHeaderStyle,\n cornerHeaderStyle,\n frameStyle,\n selectionStyle,\n dataConfig,\n]\n","import { pivotTableAdvancedPipeline, pivotTableSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerPivotTable = () => {\n Builder._advancedPipelineMap['pivotTable'] = pivotTableAdvancedPipeline\n Builder._specPipelineMap['pivotTable'] = pivotTableSpecPipeline\n}\n","import { checkVSeed } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed } from 'src/types'\n\nexport const initAdvancedVSeed: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType, locale } = vseed\n\n checkVSeed(vseed)\n\n return {\n ...advancedVSeed,\n chartType,\n locale: locale || 'zh-CN',\n } as AdvancedVSeed\n}\n","import { clone } from 'remeda'\nimport type { AdvancedPipe, Datum } from 'src/types'\nimport { isMeasure, preorderTraverse } from 'src/pipeline/utils'\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 preorderTraverse(clonedMeasures, (node) => {\n if (isMeasure(node)) {\n node.alias = node.alias || node.id\n }\n return false\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","import { clone } from 'remeda'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Datum, Dimensions, DimensionTree } from 'src/types'\n\nexport const defaultDimensions: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dimensions, dataset } = vseed\n\n if (dimensions && dimensions.length > 0) {\n return {\n ...result,\n dimensions: clone(dimensions.map((dim) => ({ ...dim, alias: dim.alias || dim.id }))),\n }\n }\n\n const measures = findAllMeasures(advancedVSeed.measures as DimensionTree)\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n const newDimensions = Object.keys(sample)\n .filter(\n (key) =>\n top100dataset.some((item) => typeof item[key] === 'string') &&\n !['', null, undefined].includes(key) &&\n !measures.some((measure) => measure.id === key),\n )\n .map((dim) => ({\n id: dim,\n alias: dim,\n })) as Dimensions\n\n return {\n ...result,\n dimensions: newDimensions,\n }\n}\n","import { MeasureName } from 'src/dataReshape'\nimport { intl } from 'src/i18n'\nimport type { AdvancedPipe, Dimension } from 'src/types'\n\nexport const defaultMeasureName: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n\n const MeaName: Dimension = {\n id: MeasureName,\n alias: intl.i18n`指标名称`,\n }\n\n // 如果没有指标名称维度,则默认添加指标名称维度\n if (!result.dimensions?.some((dim) => dim.id === MeasureName)) {\n result.dimensions?.push(MeaName)\n }\n\n return result\n}\n","import type {\n AdvancedPipe,\n AdvancedPipeline,\n AdvancedPipelineContext,\n AdvancedVSeed,\n Dimension,\n Measure,\n} from 'src/types'\nimport { execPipeline } from 'src/pipeline/utils'\n\nexport const encodingAdapter = (\n noEncodingPipeline: AdvancedPipeline,\n hasEncodingPipeline: AdvancedPipeline,\n): AdvancedPipe => {\n return (advancedVSeed, context) => {\n const { dimensions = [], measures = [] } = advancedVSeed\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n\n const hasEncoding = hasDimensionEncoding || hasMeasureEncoding\n\n if (hasEncoding) {\n return execPipeline<AdvancedVSeed, AdvancedPipelineContext>(hasEncodingPipeline, context, advancedVSeed)\n }\n return execPipeline<AdvancedVSeed, AdvancedPipelineContext>(noEncodingPipeline, context, advancedVSeed)\n }\n}\n","import { unique } from 'remeda'\nimport { MeasureName } from 'src/dataReshape'\nimport type { Dimensions, Encoding } from 'src/types'\n\n/**\n * @description 为 encoding 添加 color 编码, 多指标场景, 会将 MeasureName 也添加到 color 编码中.\n * @param dimensions\n * @param encoding\n * @param isMultiMeasure\n */\nexport const addColorToEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\n encoding.color = unique(dimensions.filter((item) => item.encoding === 'color').map((item) => item.id))\n const measureName = dimensions.find((item) => item.id === MeasureName)\n if (isMultiMeasure && measureName && !measureName.encoding) {\n encoding.color.push(MeasureName)\n }\n if (encoding.color.length === 0) {\n encoding.color = [MeasureName]\n }\n}\n","import { unique } from 'remeda'\nimport { MeasureName } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\nimport { addColorToEncoding } from './color'\n\nexport const defaultEncodingForLine: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding)\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForLine: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding, measures.length > 1)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\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) => {\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.x = uniqueDimIds.slice(0, 1)\n encoding.color = uniqueDimIds.slice(1)\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureName) // 展示指标名称之外的所有维度\n encoding.detail = [] // 折线图暂不支持细分\n encoding.label = []\n encoding.row = []\n encoding.column = []\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\n // x\n encoding.x = unique(dimensions.filter((item) => item.encoding === 'xAxis').map((item) => item.id))\n if (encoding.x.length === 0) {\n encoding.x = [dimensions[0].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 = [MeasureName]\n }\n\n // tooltip\n encoding.tooltip = unique(dimensions.map((item) => item.id))\n encoding.tooltip = encoding.tooltip.filter((d) => d !== MeasureName)\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 !== MeasureName)\n}\n\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.y = unique(measures.filter((item) => item.encoding === 'yAxis' || !item.encoding).map((item) => item.id))\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n // y\n encoding.y = unique(measures.filter((item) => item.encoding === 'yAxis' || !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])\n}\n","import type { AdvancedPipe, MeasureGroup, Measures, MeasureTree, VSeed } from 'src/types'\nimport { isMeasureTreeWithChildren, isMeasureTreeWithParentId, normalizeMeasureTree } from './utils'\nimport { isPivotChart } from 'src/pipeline/utils'\nimport { DEFAULT_PARENT_ID } from 'src/pipeline/utils/constant'\n\nexport const buildMeasures: AdvancedPipe = (advancedVSeed) => {\n // 带Children的指标树, 不进行任何处理\n if (isMeasureTreeWithChildren(advancedVSeed.measures)) {\n advancedVSeed.measures = normalizeMeasureTree(advancedVSeed.measures as MeasureTree)\n return advancedVSeed\n }\n // 带parentId的指标树, 转换为带children的指标树\n if (isMeasureTreeWithParentId(advancedVSeed.measures)) {\n advancedVSeed.measures = generateMeasuresByParentId(advancedVSeed.measures as Measures)\n return advancedVSeed\n }\n\n /**\n * 透视图表, 自动生成指标树\n */\n if (isPivotChart(advancedVSeed as VSeed)) {\n advancedVSeed.measures = basicMeasuresToMeasureTree(advancedVSeed.measures as Measures)\n }\n\n return advancedVSeed\n}\n\nconst generateMeasuresByParentId = (measures: Measures): MeasureTree => {\n const measureTree: MeasureGroup[] = []\n\n measures.forEach((measure) => {\n const parent = measureTree.find((item) => item.id === measure.parentId)\n if (parent && 'children' in parent) {\n parent.children = parent.children || []\n parent.children.push(measure)\n } else if (measure.parentId) {\n measureTree.push({\n id: measure.parentId,\n children: [measure],\n })\n } else {\n measureTree.push({\n id: DEFAULT_PARENT_ID,\n children: [measure],\n })\n }\n })\n\n return measureTree\n}\n\nconst basicMeasuresToMeasureTree = (measures: Measures): MeasureTree => {\n const id = measures.map((item) => item.id).join('-')\n const alias = measures.map((item) => item.alias || item.id).join('-')\n return [\n {\n id,\n alias,\n children: measures,\n },\n ]\n}\n","import type { Measure, MeasureGroup, MeasureTree } from 'src/types'\nimport { isMeasure, isMeasureGroup } from './typeGuard'\n\n/**\n * @description 删除 measureTree 中符合 callback 条件的节点\n * @param measureTree 待删除的 measureTree\n * @param callback 回调函数,用于判断是否删除当前节点\n * @returns 删除后的 measureTree\n */\nexport const deleteMeasureTreeByCallback = <T extends MeasureTree>(\n measureTree?: T,\n callback?: (measure: Measure, index: number, measures: (Measure | MeasureGroup)[]) => boolean,\n) => {\n if (!measureTree) {\n return measureTree\n }\n const stack: (Measure | MeasureGroup)[] = [...measureTree].reverse()\n const parents = new Map<Measure | MeasureGroup, (Measure | MeasureGroup)[]>()\n\n measureTree.forEach((node) => {\n parents.set(node, measureTree)\n })\n\n const nodesToProcess: (Measure | MeasureGroup)[] = []\n const visited = new Set<Measure | MeasureGroup>()\n\n while (stack.length > 0) {\n const node = stack[stack.length - 1]\n\n if (isMeasureGroup(node) && node.children && !visited.has(node)) {\n visited.add(node)\n const children = node.children.slice().reverse()\n for (const child of children) {\n parents.set(child, node.children)\n stack.push(child)\n }\n } else {\n stack.pop()\n nodesToProcess.push(node)\n }\n }\n\n for (const node of nodesToProcess) {\n const parentList = parents.get(node)\n\n if (parentList) {\n const index = parentList.indexOf(node)\n if (isMeasure(node)) {\n if (callback?.(node, index, parentList)) {\n parentList.splice(index, 1)\n }\n }\n }\n }\n\n return measureTree\n}\n","import { deleteMeasureTreeByCallback } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Measure } from 'src/types'\n\nexport const deleteEncodingForMeasure = (encodingKeys: string[]): AdvancedPipe => {\n return (advancedVSeed) => {\n const deleteBy = (measure: Measure) => encodingKeys.includes(measure.encoding as string)\n\n const measureTree = deleteMeasureTreeByCallback(advancedVSeed.measures, deleteBy)\n\n return {\n ...advancedVSeed,\n measures: measureTree,\n }\n }\n}\n","import type { Dimension, DimensionGroup, DimensionTree } from 'src/types'\nimport { isDimension, isDimensionGroup } from './typeGuard'\n\n/**\n * @description 删除 dimensionTree 中符合 callback 条件的节点\n * @param dimensionTree 待删除的 dimensionTree\n * @param callback 回调函数,用于判断是否删除当前节点\n * @returns 删除后的 dimensionTree\n */\nexport const deleteDimensionTreeByCallback = <T extends DimensionTree>(\n dimensionTree?: T,\n callback?: (dimension: Dimension, index: number, dimensions: (Dimension | DimensionGroup)[]) => boolean,\n) => {\n if (!dimensionTree) {\n return dimensionTree\n }\n const stack: (Dimension | DimensionGroup)[] = [...dimensionTree].reverse()\n const parents = new Map<Dimension | DimensionGroup, (Dimension | DimensionGroup)[]>()\n\n dimensionTree.forEach((node) => {\n parents.set(node, dimensionTree)\n })\n\n const nodesToProcess: (Dimension | DimensionGroup)[] = []\n const visited = new Set<Dimension | DimensionGroup>()\n\n while (stack.length > 0) {\n const node = stack[stack.length - 1]\n\n if (isDimensionGroup(node) && node.children && !visited.has(node)) {\n visited.add(node)\n const children = node.children.slice().reverse()\n for (const child of children) {\n parents.set(child, node.children)\n stack.push(child)\n }\n } else {\n stack.pop()\n nodesToProcess.push(node)\n }\n }\n\n for (const node of nodesToProcess) {\n const parentList = parents.get(node)\n\n if (parentList) {\n const index = parentList.indexOf(node)\n if (isDimension(node)) {\n if (callback?.(node, index, parentList)) {\n parentList.splice(index, 1)\n }\n }\n }\n }\n\n return dimensionTree\n}\n","import { deleteDimensionTreeByCallback } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension } from 'src/types'\n\nexport const deleteTooltipAndLabelDimension: AdvancedPipe = (advancedVSeed) => {\n const deleteBy = (dimension: Dimension) => dimension.encoding === 'tooltip' || dimension.encoding === 'label'\n\n const dimensionTree = deleteDimensionTreeByCallback(advancedVSeed.dimensions, deleteBy)\n\n return {\n ...advancedVSeed,\n dimensions: dimensionTree,\n }\n}\n","import type { AdvancedPipe, AdvancedPipeline, AdvancedPipelineContext, AdvancedVSeed } from 'src/types'\nimport { execPipeline, isPivotChart } from 'src/pipeline/utils'\n\nexport const pivotAdapter = (pipeline: AdvancedPipeline, pivotPipeline: AdvancedPipeline): AdvancedPipe => {\n return (advancedVSeed, context) => {\n const { vseed } = context\n const usePivotChart = isPivotChart(vseed)\n\n if (usePivotChart) {\n return execPipeline<AdvancedVSeed, AdvancedPipelineContext>(pivotPipeline, context, advancedVSeed)\n }\n\n return execPipeline<AdvancedVSeed, AdvancedPipelineContext>(pipeline, context, advancedVSeed)\n }\n}\n","import type { Dataset, Datum, Dimension, Encoding, UnfoldInfo } from 'src/types'\nimport { AngleEncoding, XEncoding, YEncoding, ColorEncoding, DetailEncoding, ColorIdEncoding } from './constant'\n\n/**\n * @description 展开并合并视觉通道的维度, 在foldMeasures后合并维度, 所以不需要进行笛卡尔积\n * @param dataset 原始数据集\n * @param dimensions 维度\n * @param encoding 编码\n * @param options\n * @returns\n */\nexport const unfoldDimensions = (\n dataset: Dataset,\n dimensions: Dimension[],\n encoding: Encoding,\n options: {\n foldMeasureId: string\n separator: string\n colorItemAsId: boolean\n },\n): {\n dataset: Dataset\n unfoldInfo: UnfoldInfo\n} => {\n const { foldMeasureId, separator, colorItemAsId } = options\n\n const unfoldInfo: UnfoldInfo = {\n encodingAngle: AngleEncoding,\n encodingX: XEncoding,\n encodingY: YEncoding,\n encodingDetail: DetailEncoding,\n encodingColor: ColorEncoding,\n encodingColorId: ColorIdEncoding,\n\n colorItems: [],\n colorIdMap: {},\n }\n\n // 每个通道对应的维度\n const { color, x, y, detail, angle } = encoding\n const angleDimensions = angle ? dimensions.filter((dim) => angle.includes(dim.id)) : []\n const xDimensions = x ? dimensions.filter((dim) => x.includes(dim.id)) : []\n const yDimensions = y ? dimensions.filter((dim) => y.includes(dim.id)) : []\n const colorDimensions = color ? dimensions.filter((dim) => color.includes(dim.id)) : []\n const detailDimensions = detail ? dimensions.filter((dim) => detail.includes(dim.id)) : []\n\n // 离散图例项\n const colorItems = new Set<string>()\n const colorIdMap: Record<string, string> = {}\n\n // 遍历数据集, 按通道合并维度\n for (let i = 0; i < dataset.length; i++) {\n // 应用编码至Datum上\n const datum = dataset[i]\n\n /**\n * !important 这是全仓库, 最最最重要的五行代码, 贯穿VSeed整个生命周期, 是化繁为简的绝对核心\n * 1. 点睛之笔: 呼应foldMeasures, 此时此刻的datum一定是单点数据, 维度合并不可能造成任何冲突.\n * 2. 数据即通道\n * 3. 利用需要合并的维度, 直接进行join, 即可生成新的维度, 与指标彻底解耦;\n * 4. 以下通道均在一次遍历中完成, 不存在性能问题\n * 5. 以下通道均可放入多个维度\n */\n applyEncoding(AngleEncoding, angleDimensions, datum, separator)\n applyEncoding(XEncoding, xDimensions, datum, separator)\n applyEncoding(YEncoding, yDimensions, datum, separator)\n applyEncoding(ColorEncoding, colorDimensions, datum, separator)\n applyEncoding(DetailEncoding, detailDimensions, datum, separator)\n\n // 处理离散的颜色图例\n if (!colorDimensions.length || !datum[ColorEncoding]) {\n // 无颜色通道, 则跳过\n continue\n }\n const measureId = String(datum[foldMeasureId] ?? '')\n const colorItem = String(datum[ColorEncoding] ?? '')\n const colorId = colorItemAsId ? colorItem : measureId ? [colorItem, measureId].join(separator) : colorItem\n datum[ColorIdEncoding] = colorId\n colorIdMap[colorId] = colorItem\n colorItems.add(colorId)\n }\n\n unfoldInfo.colorItems = Array.from(colorItems)\n unfoldInfo.colorIdMap = colorIdMap\n\n return {\n dataset,\n unfoldInfo,\n }\n}\n\n/**\n * @description 应用编码至数据中, 此方法会原地修改数据\n * @param encoding 编码\n * @param dimensions 维度\n * @param datum 数据\n * @param separator 分隔符\n * @returns undefined\n */\nconst applyEncoding = (encoding: string, dimensions: Dimension[], datum: Datum, separator: string) => {\n if (encoding && dimensions.length) {\n datum[encoding] = dimensions.map((dim) => String(datum[dim.id])).join(separator)\n }\n}\n","import type { Dataset, Dimension, Encoding, FoldInfo, Measure, Measures, UnfoldInfo } from 'src/types'\nimport { foldMeasures } from './foldMeasures'\nimport { FoldMeasureId, FoldMeasureName, FoldMeasureValue, Separator } from './constant'\nimport { unfoldDimensions } from './unfoldDimensions'\n\nexport const dataReshapeByEncoding = (\n dataset: Dataset,\n dimensions: Dimension[],\n measures: Measure[],\n encoding: Encoding,\n options?: {\n foldMeasureId?: string\n foldMeasureName?: string\n foldMeasureValue?: string\n colorItemAsId?: boolean\n colorMeasureId?: string\n },\n): {\n dataset: Dataset\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n} => {\n const {\n foldMeasureId = FoldMeasureId,\n foldMeasureName = FoldMeasureName,\n foldMeasureValue = FoldMeasureValue,\n colorItemAsId = false,\n colorMeasureId,\n } = options || {}\n\n // 合并所有指标为1个指标\n const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures as Measures, {\n measureId: foldMeasureId,\n measureName: foldMeasureName,\n measureValue: foldMeasureValue,\n colorMeasureId,\n })\n\n // 展开指定的维度为指标\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dimensions, encoding, {\n foldMeasureId,\n separator: Separator,\n colorItemAsId,\n })\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n}\n","import { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedVSeed, SpecPipe, VSeed } from 'src/types'\n\nexport const colorAdapter = (ordinalPipe: SpecPipe, linearPipe: SpecPipe): SpecPipe => {\n return (spec, context) => {\n const { advancedVSeed, vseed } = context\n if (isLinearColor(advancedVSeed, vseed)) {\n return linearPipe(spec, context)\n }\n return ordinalPipe(spec, context)\n }\n}\n\nexport const isLinearColor = <T extends AdvancedVSeed, U extends VSeed>(advancedVSeed: T, vseed: U) => {\n const { encoding } = advancedVSeed\n const measures = vseed.measures || advancedVSeed.measures\n const measureIdList = findAllMeasures(measures).map((measure) => measure.id)\n const { color } = encoding\n return color?.length === 1 && measureIdList.includes(color[0])\n}\n\nexport const getColorMeasureId = <T extends AdvancedVSeed, U extends VSeed>(\n advancedVSeed: T,\n vseed: U,\n): string | undefined => {\n if (isLinearColor(advancedVSeed, vseed)) {\n const { encoding } = advancedVSeed\n const { color } = encoding\n return color?.[0]\n }\n return undefined\n}\n","import { uniqueBy } from 'remeda'\nimport { dataReshapeByEncoding } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed, ColumnParallel, Encoding } from 'src/types'\n\nexport const reshapeWithEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset, chartType } = vseed as ColumnParallel\n const { dimensions = [], measures = [], encoding } = advancedVSeed\n\n const colorMeasureId = getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed)\n const {\n dataset: newDatasets,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(findAllMeasures(measures), (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n colorMeasureId,\n },\n )\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: [\n {\n id: String(chartType),\n index: 0,\n foldInfo,\n unfoldInfo,\n },\n ],\n dimensions,\n measures,\n }\n}\n","import { uniqueBy } from 'remeda'\nimport { dataReshapeByEncoding, FoldMeasureValue } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Encoding,\n MeasureGroup,\n} from 'src/types'\n\nexport const pivotReshapeWithEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed as ColumnParallel\n const { dimensions = [], measures = [], encoding } = advancedVSeed\n\n const measureGroups: MeasureGroup[] = []\n if (measures) {\n measures.forEach((measure: MeasureGroup) => {\n if (measure.children && measure.children.length > 0) {\n measureGroups.push(measure)\n }\n })\n }\n\n const datasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n measureGroups.forEach((measureGroup, index) => {\n const measures = measureGroup.children\n if (!measures) {\n return\n }\n const groupId = measureGroup.id\n const {\n dataset: newSubDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(measures, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: `${FoldMeasureValue}${groupId}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n },\n )\n\n const reshapeInfo = {\n id: groupId,\n index,\n foldInfo,\n unfoldInfo,\n }\n datasets.push(newSubDataset)\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n return {\n ...result,\n dataset: datasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n","import { sort, unique } from 'remeda'\nimport type { Dataset, Datum } from 'src/types'\nimport type { Sort } from 'src/types/properties/analysis/sort'\n\nexport const calcOrder = (sortConfig: Sort, id: string, dataset: Dataset): string[] => {\n if (sortConfig.customOrder) {\n return sortConfig.customOrder\n }\n\n const order = sortConfig.order || 'asc'\n const orderBy = sortConfig.orderBy\n\n const res = sort(dataset, (a, b) => {\n const aValue = a[orderBy || id] as string | number\n const bValue = b[orderBy || id] as string | number\n\n if (order === 'asc') {\n if (aValue < bValue) {\n return -1\n }\n if (aValue > bValue) {\n return 1\n }\n return 0\n }\n if (aValue > bValue) {\n return -1\n }\n if (aValue < bValue) {\n return 1\n }\n return 0\n })\n\n return unique(res.map((item: Datum) => item[id] as string))\n}\n","import type { AdvancedPipe, Dataset, DatasetReshapeInfo, Line } from 'src/types'\nimport { calcOrder } from './common'\n\nexport const sortXBandAxis: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { sort: sortAxis } = vseed as Line\n const { datasetReshapeInfo, dataset } = advancedVSeed as { datasetReshapeInfo: DatasetReshapeInfo; dataset: Dataset }\n const { unfoldInfo } = datasetReshapeInfo[0]\n const xField = unfoldInfo.encodingX\n if (!sortAxis || !xField) {\n return advancedVSeed\n }\n if (!result.analysis) result.analysis = {}\n if (!result.analysis.orderMapping) result.analysis.orderMapping = {}\n\n const axisOrderResult = calcOrder(sortAxis, xField, dataset.flat(2))\n\n result.analysis.orderMapping[xField] = axisOrderResult\n\n return result\n}\n","import type { AdvancedPipe, Line } from 'src/types'\nimport { calcOrder } from './common'\n\nexport const sortLegend: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { sortLegend } = vseed as Line\n const { datasetReshapeInfo, dataset } = advancedVSeed\n const colorId = datasetReshapeInfo?.[0]?.unfoldInfo?.encodingColorId\n const colorIdMap = datasetReshapeInfo?.[0]?.unfoldInfo?.colorIdMap\n const colorItems = datasetReshapeInfo?.[0]?.unfoldInfo?.colorItems\n if (!sortLegend || !colorId || !colorIdMap || !colorItems) {\n return advancedVSeed\n }\n\n if (!result.analysis) result.analysis = {}\n if (!result.analysis.orderMapping) result.analysis.orderMapping = {}\n\n if (sortLegend.customOrder) {\n const nameMap = Object.keys(colorIdMap).reduce<Record<string, string>>((pre, cur) => {\n pre[colorIdMap[cur]] = cur\n return pre\n }, {})\n\n // 先根据名称匹配, 若名称不存在, 则根据id匹配, 从而兼容名称和id的两种情况\n const orderRes = sortLegend.customOrder.map((itemNameOrId) =>\n nameMap[itemNameOrId] ? nameMap[itemNameOrId] : itemNameOrId,\n )\n result.analysis.orderMapping[colorId] = orderRes\n return result\n }\n\n const orderRes = calcOrder(sortLegend, colorId, dataset?.flat(2) || [])\n result.analysis.orderMapping[colorId] = orderRes\n\n return result\n}\n","import { isPlainObject, mapValues, pipe } from 'remeda'\n\n// 递归类型,将所有 null 替换为 undefined\ntype NullToUndefined<T> = T extends null\n ? undefined\n : T extends (infer U)[]\n ? NullToUndefined<U>[]\n : T extends object\n ? { [K in keyof T]: NullToUndefined<T[K]> }\n : T\n\nexport const replaceNullToUndefined = <T>(obj: T): NullToUndefined<T> => {\n if (obj === null) {\n return undefined as NullToUndefined<T>\n }\n if (Array.isArray(obj)) {\n // 递归处理数组元素\n return obj.map(replaceNullToUndefined) as NullToUndefined<T>\n }\n if (isPlainObject(obj)) {\n // 使用 remeda 的 mapValues 递归处理对象属性\n return pipe(\n obj as object,\n mapValues((value) => replaceNullToUndefined(value)),\n ) as NullToUndefined<T>\n }\n return obj as NullToUndefined<T>\n}\n","import { pick } from 'remeda'\nimport { replaceNullToUndefined } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed, Config } from 'src/types'\n\nexport const lineConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const pickedConfig = pick(vseed, [\n 'backgroundColor',\n 'color',\n 'label',\n 'legend',\n 'tooltip',\n 'xAxis',\n 'yAxis',\n 'crosshairLine',\n ]) as Config['line']\n\n const config = replaceNullToUndefined(pickedConfig)\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n","import { pick } from 'remeda'\nimport { replaceNullToUndefined } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed } from 'src/types'\n\nexport const markStyle: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n\n const pickedMarkStyle = pick(vseed, [\n 'barStyle',\n 'pointStyle',\n 'lineStyle',\n 'areaStyle',\n ]) as AdvancedVSeed['markStyle']\n\n const markStyle = replaceNullToUndefined(pickedMarkStyle)\n\n return { ...advancedVSeed, markStyle }\n}\n","import { pick } from 'remeda'\nimport type { AdvancedPipe, AdvancedVSeed } from 'src/types'\n\nexport const annotation: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const annotation = pick(vseed, [\n 'annotationPoint',\n 'annotationHorizontalLine',\n 'annotationVerticalLine',\n 'annotationArea',\n ]) as AdvancedVSeed['annotation']\n\n return { ...advancedVSeed, annotation }\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n lineConfig,\n annotation,\n markStyle,\n sortXBandAxis,\n sortLegend,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n encodingForLine,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n encodingAdapter,\n defaultEncodingForLine,\n deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const lineAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForLine, buildMeasures],\n [\n encodingForLine,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n sortXBandAxis,\n sortLegend,\n lineConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from '../color/colorAdapter'\n\nexport const initLine: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { foldInfo, unfoldInfo } = datasetReshapeInfo[0]\n\n result.type = 'line'\n result.direction = 'vertical'\n result.xField = unfoldInfo.encodingX\n result.yField = foldInfo.measureValue\n result.seriesField = isLinearColor(advancedVSeed, vseed) ? unfoldInfo.encodingDetail : unfoldInfo.encodingColorId\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport type { Color, SpecPipe } from 'src/types'\n\nexport const color: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo, chartType } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n const baseConfig = advancedVSeed.config[chartType] as { color: Color }\n\n if (!baseConfig || !baseConfig.color) {\n return result\n }\n\n const colorItems = unfoldInfo.colorItems\n const colorIdMap = unfoldInfo.colorIdMap\n\n const { color } = baseConfig\n const { colorScheme, colorMapping } = color\n\n result.color = {\n type: 'ordinal',\n domain: colorItems,\n range: colorScheme,\n specified: createSpecifiedForColorMapping(colorMapping, colorIdMap, colorItems),\n } as ILineChartSpec['color']\n return result\n}\n\nexport const createSpecifiedForColorMapping = (\n colorMapping?: Record<string, string>,\n colorIdMap?: Record<string, string>,\n colorItems?: string[],\n) => {\n if (!colorMapping || !colorIdMap || !colorItems) {\n return undefined\n }\n\n const matchedList: string[] = []\n\n // 名称越长优先级越高: 按名称长度降, 优先匹配名称长的, 避免一个短的名称匹配到了超多个长的\n const colors = Object.entries(colorMapping).sort((a, b) => b[0].length - a[0].length)\n // 准确匹配\n const accurateMap = colors.reduce(\n (prev, cur) => {\n const name = cur[0]\n const colorValue = cur[1]\n\n const accurateMatchedList = Object.entries(colorIdMap).filter(([colorKey, colorAlias]) => {\n return colorKey === name || colorAlias === name\n })\n accurateMatchedList.forEach((item) => {\n prev[item[0]] = colorValue\n matchedList.push(name)\n })\n\n return prev\n },\n {} as Record<string, string>,\n )\n\n // 模糊匹配\n const fuzzyMap = colors.reduce(\n (prev, cur) => {\n const name = cur[0]\n const colorValue = cur[1]\n if (matchedList.includes(name)) {\n return prev\n }\n\n const fuzzyMatchedList = Object.entries(colorIdMap).filter(([colorKey, colorAlias]) => {\n return colorKey.includes(name) || colorAlias.includes(name)\n })\n fuzzyMatchedList.forEach((item) => {\n // 已经匹配有值, 则不重复匹配\n if (prev[item[0]]) {\n return\n }\n prev[item[0]] = colorValue\n })\n\n return prev\n },\n {} as Record<string, string>,\n )\n\n // 合并, 准确匹配的优先级高\n return {\n ...fuzzyMap,\n ...accurateMap,\n }\n}\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport type { Color, SpecPipe } from 'src/types'\n\nexport const linearColor: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo, chartType } = advancedVSeed\n const { unfoldInfo, id } = datasetReshapeInfo[0]\n const baseConfig = advancedVSeed.config[chartType] as { color: Color }\n\n if (!baseConfig || !baseConfig.color) {\n return result\n }\n\n const { color } = baseConfig\n const { colorScheme, linearColorScheme } = color\n\n result.color = {\n type: 'linear',\n range: linearColorScheme || colorScheme || [],\n domain: [\n {\n dataId: id,\n fields: [unfoldInfo.encodingColor],\n },\n ],\n }\n\n return result\n}\n","import type { ISpec } from '@visactor/vchart'\nimport type { BackgroundColor, SpecPipe } from 'src/types'\n\nexport const backgroundColor: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed } = context\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { backgroundColor: BackgroundColor }\n\n const { backgroundColor } = baseConfig\n\n return {\n ...result,\n background: backgroundColor,\n }\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { isPivotChart } from 'src/pipeline/utils'\nimport type { SpecPipe } from 'src/types'\n\nexport const datasetXY: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { analysis, datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n const orderMapping = analysis?.orderMapping || {}\n const angle = unfoldInfo.encodingAngle\n const x = unfoldInfo.encodingX\n const colorId = unfoldInfo.encodingColorId\n const id = datasetReshapeInfo[0].id\n\n const fields: Record<string, object> = {}\n if (angle) {\n fields[angle] = {\n sortIndex: 0,\n }\n }\n if (x) {\n const order = orderMapping[x]\n if (order) {\n fields[x] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[x] = {\n sortIndex: 0,\n }\n }\n }\n\n if (colorId) {\n const order = orderMapping[colorId]\n if (order) {\n fields[colorId] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[colorId] = {\n sortIndex: 0,\n }\n }\n }\n\n return {\n ...spec,\n data: {\n id,\n // 透视表不使用 dataValues\n values: isPivotChart(vseed) ? undefined : advancedVSeed.dataset,\n fields: fields,\n },\n } as ISpec\n}\n","import type { ILineSeriesSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const progressive: SpecPipe = (spec) => {\n const result = { ...spec } as ILineSeriesSpec\n // const { advancedVSeed } = context\n // const { dataset = [] } = advancedVSeed\n // const size = dataset.length\n\n // if (size < 5000) {\n // return result\n // }\n\n result.large = false\n result.largeThreshold = Infinity\n result.progressiveStep = 400\n result.progressiveThreshold = Infinity\n\n return result\n}\n","import { findAllMeasures } from 'src/pipeline/utils'\nimport type { Dimensions, MeasureTree } from 'src/types'\n\nexport const defaultTitleText = (measures: MeasureTree, dimensions: Dimensions, idList: string[] = []) => {\n const allMeasures = findAllMeasures(measures)\n return idList\n .map((id) => {\n const alias = [...allMeasures, ...dimensions].find((f) => f.id === id)?.alias || ''\n return alias\n })\n .join(' & ')\n}\n","import type { ICartesianBandAxisSpec, ISpec } from '@visactor/vchart'\nimport type { SpecPipe, XBandAxis } from 'src/types'\nimport { defaultTitleText } from './title/defaultTitleText'\n\nexport const xBand: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { measures, dimensions, encoding } = advancedVSeed\n const config = advancedVSeed.config?.[chartType as 'column']?.xAxis as XBandAxis\n\n if (!result.axes) {\n result.axes = []\n }\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n labelAutoHide,\n labelAutoHideGap,\n labelAutoLimit,\n labelAutoLimitLength = 80,\n labelAutoRotate,\n labelAutoRotateAngleRange,\n } = config\n\n const sampling = !(labelAutoHide || labelAutoRotate || labelAutoLimit)\n\n const bandAxis = {\n visible,\n type: 'band',\n orient: 'bottom',\n maxHeight: labelAutoLimitLength + 60,\n sampling,\n hover: true,\n label: {\n visible: label?.visible,\n flush: true,\n space: 8,\n style: {\n maxLineWidth: labelAutoLimitLength,\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n\n // 防重叠相关\n minGap: labelAutoHideGap,\n autoHide: labelAutoHide,\n autoHideMethod: 'greedy',\n autoHideSeparation: labelAutoHideGap,\n autoLimit: labelAutoLimit,\n autoRotate: labelAutoRotate,\n autoRotateAngle: labelAutoRotateAngleRange,\n lastVisible: true,\n },\n title: {\n visible: title?.visible,\n text: title?.titleText || defaultTitleText(measures, dimensions, encoding.x as string[]),\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n lineDash: grid?.gridLineDash,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n paddingInner: [0.15, 0.1],\n paddingOuter: [0.075, 0.1],\n } as ICartesianBandAxisSpec\n\n result.axes = [...result.axes, bandAxis] as ISpec['axes']\n return result\n}\n","import { isEmpty, isNullish } from 'remeda'\nimport { autoFormatter } from 'src/pipeline/utils'\nimport type { Formatter, NumFormat } from 'src/types'\n\nexport const createLinearFormat = (\n value: string | number,\n autoFormat: boolean | undefined,\n numFormat: NumFormat,\n formatter: Formatter,\n) => {\n if (isNullish(autoFormat) && isEmpty(numFormat)) {\n return autoFormatter(value)\n }\n\n if (autoFormat === true) {\n return autoFormatter(value)\n }\n\n if (!isEmpty(numFormat)) {\n return formatter(value)\n }\n\n return String(value)\n}\n\nexport const createLinearPercentFormat = (\n value: string | number,\n autoFormat: boolean | undefined,\n numFormat: NumFormat,\n formatter: Formatter,\n percentFormatter: Formatter,\n) => {\n if (isNullish(autoFormat) && isEmpty(numFormat)) {\n return percentFormatter(value)\n }\n\n if (autoFormat === true) {\n return percentFormatter(value)\n }\n\n if (!isEmpty(numFormat)) {\n return formatter(value)\n }\n\n return String(value)\n}\n","import type { ISpec } from '@visactor/vchart'\nimport {\n createNumFormatter,\n isAreaPercent,\n isBarPercent,\n isColumnPercent,\n LINEAR_AXIS_INNER_OFFSET_TOP,\n} from 'src/pipeline/utils'\nimport type { SpecPipe, YLinearAxis } from 'src/types'\nimport { createLinearFormat, createLinearPercentFormat } from './format/linearFormat'\nimport { defaultTitleText } from './title/defaultTitleText'\n\nexport const yLinear: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { measures, dimensions, encoding } = advancedVSeed\n const config = advancedVSeed.config?.[chartType as 'column']?.yAxis as YLinearAxis\n\n if (!result.axes) {\n result.axes = []\n }\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n\n zero,\n nice,\n inverse,\n max,\n min,\n log,\n logBase = 10,\n autoFormat,\n numFormat = {},\n } = config\n\n const formatter = createNumFormatter(numFormat)\n const percentFormatter = createNumFormatter({\n type: 'percent',\n })\n\n const linearAxis = {\n visible,\n type: log ? 'log' : 'linear',\n base: logBase,\n orient: 'left',\n nice,\n zero: log ? false : zero,\n inverse,\n max,\n min,\n label: {\n visible: label?.visible,\n formatMethod: (value: string) => {\n if (isBarPercent(vseed) || isColumnPercent(vseed) || isAreaPercent(vseed)) {\n return createLinearPercentFormat(value, autoFormat, numFormat, formatter, percentFormatter)\n }\n return createLinearFormat(value, autoFormat, numFormat, formatter)\n },\n style: {\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n },\n title: {\n visible: title?.visible,\n text: title?.titleText || defaultTitleText(measures, dimensions, encoding.y as string[]),\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n lineDash: grid?.gridLineDash,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n innerOffset: {\n top: LINEAR_AXIS_INNER_OFFSET_TOP,\n // bottom: LINEAR_AXIS_INNER_OFFSET_TOP,\n },\n }\n\n result.axes = [...result.axes, linearAxis] as ISpec['axes']\n\n return result\n}\n","import type { ICartesianCrosshairSpec, ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const verticalCrosshairLine: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n\n const config = advancedVSeed.config?.[chartType as 'line']?.crosshairLine\n if (!config) {\n return result\n }\n\n if (!result.crosshair) {\n result.crosshair = {}\n }\n\n const visible = config.visible || true\n const lineColor = config.lineColor || undefined\n const labelColor = config.labelColor || undefined\n const labelVisible = config.labelVisible || undefined\n const labelBackgroundColor = config.labelBackgroundColor || undefined\n\n const crosshair = result.crosshair as ICartesianCrosshairSpec\n crosshair.xField = {\n visible,\n line: {\n type: 'line',\n style: {\n lineWidth: 1,\n opacity: 1,\n stroke: lineColor,\n lineDash: config.lineDash ?? [4, 2],\n },\n },\n label: {\n visible: labelVisible,\n labelBackground: {\n visible: labelVisible,\n style: {\n fill: labelBackgroundColor,\n },\n },\n style: {\n fill: labelColor,\n },\n },\n }\n\n return result\n}\n","import type { Legend, SpecPipe } from 'src/types'\n\nexport const discreteLegend: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { datasetReshapeInfo, chartType } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n const baseConfig = advancedVSeed.config[chartType] as { legend: Legend }\n if (!baseConfig || !baseConfig.legend) {\n return result\n }\n\n const { legend } = baseConfig\n const {\n enable,\n position = 'bottom',\n labelFontColor,\n labelColor,\n labelFontSize = 12,\n labelFontWeight,\n maxSize = 1,\n border,\n shapeType = 'rectRound',\n } = legend || {}\n\n const orient = ['bottom', 'bottomLeft', 'bottomRight', 'bl', 'br'].includes(position)\n ? 'bottom'\n : ['top', 'topLeft', 'topRight', 'tl', 'tr'].includes(position)\n ? 'top'\n : ['left', 'leftTop', 'leftBottom', 'lt', 'lb'].includes(position)\n ? 'left'\n : 'right'\n\n const legendPosition = ['topLeft', 'bottomLeft', 'leftTop', 'rightTop', 'lt', 'rt', 'tl', 'bl'].includes(position)\n ? 'start'\n : ['topRight', 'bottomRight', 'leftBottom', 'rightBottom', 'lb', 'rb', 'rt', 'br'].includes(position)\n ? 'end'\n : 'middle'\n\n result.legends = {\n type: 'discrete',\n visible: enable,\n maxCol: Math.max(1, maxSize),\n maxRow: Math.max(1, maxSize),\n autoPage: true,\n orient,\n position: legendPosition,\n item: {\n focus: true,\n maxWidth: '30%',\n focusIconStyle: {\n size: labelFontSize + 2,\n fill: labelColor || labelFontColor,\n fontWeight: labelFontWeight,\n },\n shape: {\n space: border ? 6 : 4,\n style: (item) => {\n return {\n symbolType: shapeType,\n size: border ? 8 : 10,\n fillOpacity: 1,\n opacity: 1,\n stroke: false,\n outerBorder: border\n ? {\n stroke: item.shape.fill,\n distance: 3,\n lineWidth: 1,\n }\n : null,\n }\n },\n state: {\n unSelected: {\n opacity: 0.2,\n fillOpacity: 1, // 覆盖 vchart 里的默认值\n },\n },\n },\n label: {\n formatMethod: (value) => {\n return unfoldInfo.colorIdMap[String(value)] ?? value\n },\n style: {\n fontSize: labelFontSize,\n fill: labelColor || labelFontColor,\n fontWeight: labelFontWeight,\n },\n state: {\n unSelected: {\n fill: labelColor || labelFontColor, // 覆盖vchart里面的默认值\n fillOpacity: 0.8, // 覆盖 vchart 里的默认值\n },\n },\n },\n background: {\n state: {\n selectedHover: {\n fill: labelColor || labelFontColor,\n fillOpacity: 0.05,\n },\n unSelectedHover: {\n fill: null,\n },\n },\n },\n },\n padding: 0,\n }\n return result\n}\n","import type { Legend, SpecPipe } from 'src/types'\n\nexport const colorLegend: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { datasetReshapeInfo, chartType } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n const baseConfig = advancedVSeed.config[chartType] as { legend: Legend }\n if (!baseConfig || !baseConfig.legend) {\n return result\n }\n\n const { legend } = baseConfig\n const { enable, position = 'bottom', labelFontColor, labelColor, labelFontSize = 12, labelFontWeight } = legend || {}\n\n const orient = ['bottom', 'bottomLeft', 'bottomRight', 'bl', 'br'].includes(position)\n ? 'bottom'\n : ['top', 'topLeft', 'topRight', 'tl', 'tr'].includes(position)\n ? 'top'\n : ['left', 'leftTop', 'leftBottom', 'lt', 'lb'].includes(position)\n ? 'left'\n : 'right'\n\n const legendPosition = ['topLeft', 'bottomLeft', 'leftTop', 'rightTop', 'lt', 'rt', 'tl', 'bl'].includes(position)\n ? 'start'\n : ['topRight', 'bottomRight', 'leftBottom', 'rightBottom', 'lb', 'rb', 'rt', 'br'].includes(position)\n ? 'end'\n : 'middle'\n\n result.legends = {\n type: 'color',\n visible: enable,\n orient,\n position: legendPosition,\n padding: 0,\n field: unfoldInfo.encodingColor,\n maxWidth: '30%',\n handlerText: {\n visible: true,\n style: {\n fill: labelColor || labelFontColor,\n fontSize: labelFontSize,\n fontWeight: labelFontWeight,\n },\n },\n }\n return result\n}\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from './colorAdapter'\n\nexport const colorPointStyleFill = (stylePipe: SpecPipe): SpecPipe => {\n return (spec, context) => {\n const result = stylePipe(spec, context) as ILineChartSpec\n\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed, vseed)) {\n if (result?.point?.style) {\n result.point.style.fill = {\n field: unfoldInfo.encodingColor,\n scale: 'color',\n }\n }\n }\n\n return result\n }\n}\n","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\nexport const selector = (vchartDatum: Datum, selector: Selector | Selectors | undefined | null) => {\n // 无有效选择器, 则认为全部匹配成功\n if (!selector) {\n return true\n }\n\n const selectorMode = 'And'\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 if (Object.values(datum).find((v) => v === selector)) {\n return true\n }\n }\n\n // 2. 指标选择器\n else if (isMeasureSelector(selector)) {\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 (String(datum[selector.field]) === String(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 (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 (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 (datum[selector.field] <= selectorValueArr[0]) {\n return true\n }\n break\n case 'between':\n if (\n Array.isArray(selector.value) &&\n datum[selector.field] >= selectorValueArr[0] &&\n datum[selector.field] <= selectorValueArr[1]\n ) {\n return true\n }\n break\n }\n }\n // 3. 维度选择器\n else if (isDimensionSelector(selector)) {\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 // 4. 部分数据对象选择器\n else if (isPartialDatumSelector(selector)) {\n if (Object.keys(selector).every((key) => datum[key] === selector[key])) {\n return true\n }\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","import type { IAreaChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, PointStyle, SpecPipe } from 'src/types'\nimport { isEmpty, isNullish } from 'remeda'\n\nexport const pointStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle } = advancedVSeed\n const { pointStyle } = markStyle\n const result = {\n ...spec,\n point: {\n style: {},\n },\n } as IAreaChartSpec\n\n if (isNullish(pointStyle) || isEmpty(pointStyle)) {\n return result\n }\n\n const pointStyles = (Array.isArray(pointStyle) ? pointStyle : [pointStyle]) as PointStyle[]\n\n const customMap = pointStyles.reduce<object>((result, style, index) => {\n const {\n pointBorderColor,\n pointBorderStyle,\n pointBorderWidth = 1,\n pointColor,\n pointColorOpacity,\n pointSize,\n pointVisible = true,\n } = style\n\n const lineDash = pointBorderStyle === 'dashed' ? [5, 2] : pointBorderStyle === 'dotted' ? [2, 5] : [0, 0]\n return {\n ...result,\n [`custom${index + 1}`]: {\n // 优先级: 后者覆盖前者\n level: index + 1,\n filter: (datum: Datum) => {\n if (selector(datum, style.selector)) {\n return true\n }\n return false\n },\n style: {\n visible: pointVisible,\n size: pointSize,\n fill: pointColor,\n fillOpacity: pointColorOpacity,\n innerBorder: {\n stroke: pointBorderColor,\n lineWidth: pointBorderWidth,\n distance: (pointBorderWidth || 0) / 2,\n lineDash: lineDash,\n },\n },\n },\n }\n }, {})\n\n return {\n ...result,\n point: {\n ...result.point,\n state: {\n ...customMap,\n },\n },\n }\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-call */\nimport type { IScatterChartSpec } from '@visactor/vchart'\nimport type { Datum, SpecPipe } from 'src/types'\n\nexport const pointStateDimensionHover: SpecPipe = (spec) => {\n const point = (spec as IScatterChartSpec).point || {}\n const result = {\n ...spec,\n point: {\n ...point,\n state: {\n ...(point.state || {}),\n dimension_hover: {\n scaleX: 1.4,\n scaleY: 1.4,\n outerBorder: {\n lineWidth: 4,\n strokeOpacity: 0.25,\n distance: 2,\n },\n },\n },\n },\n } as IScatterChartSpec\n return result\n}\n\nexport const pointStateHover: SpecPipe = (spec, context) => {\n const point = (spec as IScatterChartSpec).point || {}\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n const result = {\n ...spec,\n point: {\n ...point,\n state: {\n ...(point.state || {}),\n hover: {\n scaleX: 1.4,\n scaleY: 1.4,\n stroke: (datum: Datum, context: unknown) => {\n const field = unfoldInfo.encodingColorId\n const color = (context as any).seriesColor(datum[field] as string)\n return color\n },\n fillOpacity: 0.6,\n lineWidth: 1,\n },\n },\n },\n } as IScatterChartSpec\n return result\n}\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from './colorAdapter'\n\nexport const colorLineStyleFill = (stylePipe: SpecPipe): SpecPipe => {\n return (spec, context) => {\n const result = stylePipe(spec, context) as ILineChartSpec\n\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed, vseed)) {\n if (result?.line?.style) {\n result.line.style.stroke = {\n field: unfoldInfo.encodingColor,\n scale: 'color',\n }\n }\n }\n\n return result\n }\n}\n","import { isRadar } from 'src/pipeline/utils'\nimport type { VSeed } from 'src/types'\n\nexport const getCurveType = (vseed: VSeed, lineSmooth: boolean = false): string => {\n if (!lineSmooth) {\n return 'linear'\n }\n\n /**\n * Tip: 长期来看, 由VChart封装好雷达图与面积图的曲线类型差异, 是一个更好的选择.\n */\n return isRadar(vseed) ? 'catmullRomClosed' : 'monotone'\n}\n\nexport const getCurveTension = (vseed: VSeed, lineSmooth: boolean = false): number => {\n if (!lineSmooth) {\n return 0\n }\n\n /**\n * Tip: 长期来看, 由VChart封装好雷达图与面积图的曲线类型差异, 是一个更好的选择.\n */\n return isRadar(vseed) ? 0.4 : 0\n}\n","import type { IAreaChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, LineStyle, SpecPipe } from 'src/types'\nimport { isEmpty, isNullish } from 'remeda'\nimport { getCurveTension, getCurveType } from './curve'\n\nexport const lineStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle } = advancedVSeed\n const { lineStyle } = markStyle\n const result = {\n ...spec,\n line: {\n style: {},\n },\n } as IAreaChartSpec\n\n if (isNullish(lineStyle) || isEmpty(lineStyle)) {\n return result\n }\n\n const lineStyles = (Array.isArray(lineStyle) ? lineStyle : [lineStyle]) as LineStyle[]\n\n const customMap = lineStyles.reduce<object>((result, style, index) => {\n const { lineColor, lineColorOpacity, lineSmooth, lineStyle, lineWidth = 2, lineVisible = true } = style\n\n const dashSegment = lineWidth * 2\n const dashGap = lineWidth\n\n const lineDash =\n lineStyle === 'dashed' ? [dashSegment, dashSegment] : lineStyle === 'dotted' ? [dashGap / 2, dashGap * 2] : [0, 0]\n\n const curveType = getCurveType(context.vseed, lineSmooth)\n const curveTension = getCurveTension(context.vseed, lineSmooth)\n\n return {\n ...result,\n [`custom${index + 1}`]: {\n // 优先级: 后者覆盖前者\n level: index + 1,\n filter: (\n _: Datum,\n node: {\n renderNode: {\n context: {\n data: Datum[]\n }\n }\n },\n ) => {\n const lineData = node.renderNode.context.data\n for (const d of lineData) {\n if (selector(d, style.selector)) {\n return true\n }\n }\n return false\n },\n style: {\n visible: lineVisible,\n curveType: curveType,\n curveTension: curveTension,\n strokeOpacity: lineColorOpacity,\n stroke: lineColor,\n lineWidth: lineWidth,\n lineDash: lineDash,\n },\n },\n }\n }, {})\n\n return {\n ...result,\n line: {\n ...result.line,\n state: {\n ...customMap,\n },\n },\n }\n}\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport { createFormatter, createFormatterByMeasure, DATUM_HIDE_KEY, findMeasureById } from '../../../../utils'\nimport type {\n Datum,\n Dimension,\n Dimensions,\n Encoding,\n FoldInfo,\n Formatter,\n Label,\n Measure,\n Measures,\n NumFormat,\n SpecPipe,\n} from 'src/types'\nimport { isNumber, merge, uniqueBy } from 'remeda'\nimport { MeasureName } from 'src/dataReshape/constant'\n\nexport const label: SpecPipe = (spec, context) => {\n const result = { ...spec } 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 foldInfo = datasetReshapeInfo[0].foldInfo as FoldInfo\n\n const { label } = baseConfig\n\n result.label = buildLabel(\n label,\n vseed.measures,\n vseed.dimensions,\n advancedVSeed.dimensions,\n advancedVSeed.measures,\n encoding as Encoding,\n [foldInfo],\n ) as unknown as ILineChartSpec['label']\n\n return result\n}\n\nexport const generateMeasureValue = (\n value: number | string,\n measure: Measure,\n labelAutoFormat?: boolean,\n numFormat: NumFormat = {},\n) => {\n const format = merge(numFormat, measure.numFormat || measure.format)\n const mergedMeasure = { ...measure, numFormat: format, autoFormat: labelAutoFormat || measure.autoFormat }\n\n const formatter = createFormatterByMeasure(mergedMeasure)\n return formatter(value)\n}\n\nexport const generateMeasurePercent = (value: number | string, sum: number, formatter: Formatter) => {\n if (value === undefined || value === null) return String(value)\n const num = Number(value)\n if (Number.isNaN(num)) return String(value)\n\n const percentValue = num / sum\n return formatter(percentValue)\n}\n\nexport const buildLabel = (\n label: Label,\n vseedMeasures: Measures = [],\n vseedDimensions: Dimensions = [],\n advancedVSeedDimensions: Dimensions,\n advancedVSeedMeasures: Measures,\n encoding: Encoding,\n foldInfoList: FoldInfo[],\n) => {\n const {\n enable,\n wrap,\n showValue,\n showValuePercent,\n showDimension,\n labelOverlap,\n labelColorSmartInvert,\n labelStroke,\n labelColor,\n labelFontSize,\n labelFontWeight,\n labelBackgroundColor,\n labelPosition,\n autoFormat,\n numFormat = {},\n } = label\n\n const hasDimLabelEncoding = vseedDimensions.some((item) => encoding.label?.includes(item.id))\n\n const labelDims = uniqueBy(\n hasDimLabelEncoding\n ? vseedDimensions.filter((item) => encoding.label?.includes(item.id))\n : showDimension\n ? advancedVSeedDimensions.filter((d) => d.id !== MeasureName)\n : [],\n (item: Dimension) => item.id,\n )\n\n const labelMeas = uniqueBy(\n vseedMeasures.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 const result = {\n visible: enable,\n dataFilter: (data: Datum[]) => {\n return data.filter((entry) => {\n return entry.data?.[DATUM_HIDE_KEY] !== true\n })\n },\n formatMethod: (_: unknown, datum: Datum) => {\n const result = []\n\n const dimLabels = labelDims.map((item: Dimension) => {\n const id = item.id\n return datum[id] as number | string\n })\n\n const meaLabels = labelMeas.map((item: Measure) =>\n generateMeasureValue(datum[item.id] as number | string, item, autoFormat, numFormat),\n )\n\n result.push(...dimLabels)\n\n foldInfoList.forEach((foldInfo) => {\n const { measureId, measureValue, statistics } = foldInfo\n const measure = findMeasureById(advancedVSeedMeasures, datum[measureId] as string)\n if (measure) {\n const measureValueLabel = generateMeasureValue(\n datum[measureValue] as number | string,\n measure,\n autoFormat,\n numFormat,\n )\n // 饼图/环图需要使用实际占比数据\n const measurePercentLabel = isNumber(datum['__VCHART_ARC_RATIO'])\n ? generateMeasurePercent(datum['__VCHART_ARC_RATIO'], 1, percentFormatter)\n : generateMeasurePercent(datum[measureValue] as number | string, statistics.sum, percentFormatter)\n if (showValue) {\n result.push(measureValueLabel)\n }\n if (showValuePercent) {\n result.push(measurePercentLabel)\n }\n }\n })\n\n result.push(...meaLabels)\n\n if (wrap) {\n return result\n }\n return result.join(' ')\n },\n position: labelPosition,\n style: {\n stroke: labelStroke,\n fill: labelColor,\n fontSize: labelFontSize,\n fontWeight: labelFontWeight,\n background: labelBackgroundColor,\n },\n smartInvert: labelColorSmartInvert,\n }\n\n if (labelOverlap) {\n ;(result as any).overlap = {\n hideOnHit: true,\n clampForce: true,\n }\n }\n\n return result\n}\n","import { pipe, uniqueBy } from 'remeda'\nimport { createFormatterByMeasure, findAllMeasures, findMeasureById } from '../../../../utils'\nimport type { Datum, Dimensions, FoldInfo, Measures, SpecPipe, Tooltip, UnfoldInfo } from 'src/types'\nimport { ORIGINAL_DATA } from 'src/dataReshape'\n\nexport const tooltip: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { measures, datasetReshapeInfo, chartType, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n const { foldInfo, unfoldInfo } = datasetReshapeInfo[0] as unknown as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n result.tooltip = {\n visible: enable,\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(\n encoding.tooltip || [],\n dimensions,\n findAllMeasures(vseed.measures),\n foldInfo,\n unfoldInfo,\n ),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(dimensions, measures, foldInfo, unfoldInfo),\n },\n }\n return result\n}\n\nexport const createDimensionContent = (\n dimensions: Dimensions,\n measures: Measures,\n foldInfo: FoldInfo,\n unfoldInfo: UnfoldInfo,\n) => {\n const { measureId, measureValue, foldMap } = foldInfo\n const { encodingColor } = unfoldInfo\n\n return [\n {\n visible: true,\n shapeType: 'rectRound',\n hasShape: true,\n key: dimensions.some((d) => d.encoding === 'color')\n ? (v: unknown) => {\n const datum = v as Datum\n return (datum && (datum[encodingColor] as string)) || ''\n }\n : Object.values(foldMap)[0],\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n },\n ]\n}\n\nexport const createMarkContent = (\n tooltip: string[],\n dimensions: Dimensions,\n measures: Measures,\n foldInfo: FoldInfo,\n unfoldInfo: UnfoldInfo,\n) => {\n const dims = pipe(\n dimensions.filter((item) => tooltip.includes(item.id)),\n uniqueBy((item) => item.id),\n uniqueBy((item) => item.alias),\n )\n const meas = pipe(\n measures.filter((item) => tooltip.includes(item.id)),\n uniqueBy((item) => item.id),\n uniqueBy((item) => item.alias),\n )\n\n const dimContent = dims.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const datum = v as Datum\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return datum && (datum[item.id] as string)\n },\n value: (v: unknown) => {\n const datum = v as Datum\n return datum && (datum[item.id] as string)\n },\n }))\n\n const meaContent = meas.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias || item.id,\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const id = item.id\n if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) {\n return ''\n }\n const originalData = datum[ORIGINAL_DATA] as Datum\n const value = originalData[id] as string | number\n const measure = findMeasureById(measures, id)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }))\n\n const defaultContent = {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const { measureName } = foldInfo\n const { encodingColor: colorName } = unfoldInfo\n\n const datum = v as Datum\n return (datum && (datum[measureName || colorName] as string)) || ''\n },\n value: (v: unknown) => {\n const { measureId, measureValue } = foldInfo\n\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }\n\n return [...dimContent, defaultContent, ...meaContent]\n}\n","import type { Datum } from 'src/types'\n\nexport const isSubset = (sub: Datum, obj: Datum) => {\n return Object.entries(sub).every(([key, value]) => {\n if (typeof value === 'string') {\n return obj[key] === value\n }\n if (typeof value === 'number') {\n return obj[key] === value\n }\n return true\n })\n}\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, SpecPipe, VSeed } from 'src/types'\nimport { isSubset } from './utils'\nimport { ANNOTATION_Z_INDEX } from '../../../../utils/constant'\nimport { isBarLikeChart } from 'src/pipeline/utils/chatType'\n\nexport const annotationPoint: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { annotation, config } = advancedVSeed\n\n if (!annotation || !annotation.annotationPoint) {\n return spec\n }\n\n const theme = config?.[vseed.chartType as 'column']?.annotation?.annotationPoint\n const { annotationPoint } = annotation\n const annotationPointList = Array.isArray(annotationPoint) ? annotationPoint : [annotationPoint]\n const isHorizontalBar = isBarLikeChart(advancedVSeed as VSeed)\n const defaultStyle = isHorizontalBar\n ? {\n textAlign: 'right',\n textBaseline: 'middle',\n }\n : {\n textAlign: 'center',\n textBaseline: 'top',\n }\n\n const markPoint = annotationPointList.flatMap((annotationPoint) => {\n const {\n selector: selectorPoint,\n text = '',\n textColor = theme?.textColor ?? '#ffffff',\n textFontSize = theme?.textFontSize ?? 12,\n textFontWeight = theme?.textFontWeight ?? 400,\n textAlign = defaultStyle.textAlign,\n textBaseline = defaultStyle.textBaseline,\n textBackgroundBorderColor = theme?.textBackgroundBorderColor,\n textBackgroundBorderRadius = theme?.textBackgroundBorderRadius ?? 4,\n textBackgroundBorderWidth = theme?.textBackgroundBorderWidth ?? 1,\n textBackgroundColor = theme?.textBackgroundColor ?? '#212121',\n textBackgroundPadding = theme?.textBackgroundPadding ?? 2,\n textBackgroundVisible = theme?.textBackgroundVisible ?? true,\n offsetX = theme?.offsetX ?? 0,\n offsetY = theme?.offsetY ?? 0,\n } = annotationPoint\n\n const dataset = advancedVSeed.dataset.flat()\n const selectedData = selectorPoint ? dataset.filter((datum) => selector(datum, selectorPoint)) : []\n const dx = -10 - (isHorizontalBar ? (textFontSize as number) : 0) // 由于vchart tag实现问题,需要设置这个强制偏移量\n const dy = isHorizontalBar ? 0 : (textFontSize as number)\n\n return selectedData.map((datum) => {\n return {\n zIndex: ANNOTATION_Z_INDEX,\n regionRelative: true,\n coordinate: (data: Datum[]) => {\n return data.find((item) => isSubset(datum, item))\n },\n\n itemLine: {\n visible: false,\n },\n itemContent: {\n offsetY,\n offsetX,\n confine: true,\n text: {\n text: text,\n style: {\n visible: true,\n textAlign: textAlign,\n textBaseline: textBaseline,\n fill: textColor,\n stroke: textBackgroundColor,\n lineWidth: 1,\n fontSize: textFontSize,\n fontWeight: textFontWeight,\n dx,\n dy,\n },\n labelBackground: {\n visible: textBackgroundVisible,\n padding: textBackgroundPadding,\n style: {\n cornerRadius: textBackgroundBorderRadius ?? 4,\n fill: textBackgroundColor,\n stroke: textBackgroundBorderColor,\n lineWidth: textBackgroundBorderWidth,\n dx,\n dy,\n },\n },\n },\n },\n }\n })\n }) as ILineChartSpec['markPoint']\n\n return {\n ...spec,\n markPoint,\n }\n}\n","import type { ILineChartSpec, IMarkLineSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { SpecPipe } from 'src/types'\nimport { isArray, isNumber, isString } from 'remeda'\nimport { ANNOTATION_Z_INDEX } from '../../../../utils/constant'\n\nexport const annotationVerticalLine: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { annotation, datasetReshapeInfo, config } = advancedVSeed\n\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n if (!annotation || !annotation.annotationVerticalLine) {\n return spec\n }\n\n const theme = config?.[vseed.chartType as 'column']?.annotation?.annotationVerticalLine\n const { annotationVerticalLine } = annotation\n const annotationVerticalLineList = Array.isArray(annotationVerticalLine)\n ? annotationVerticalLine\n : [annotationVerticalLine]\n\n const positionMap = {\n outsideStart: 'start',\n outsideEnd: 'end',\n outsideMiddle: 'middle',\n insideStart: 'insideStartTop',\n insideMiddle: 'insideMiddleTop',\n insideEnd: 'insideEndTop',\n }\n const markLine = annotationVerticalLineList.flatMap((annotationVerticalLine) => {\n const {\n selector: selectorPoint,\n xValue,\n text = '',\n textPosition = 'insideEnd',\n textColor = theme?.textColor ?? '#ffffff',\n textFontSize = theme?.textFontSize ?? 12,\n textFontWeight = theme?.textFontWeight ?? 400,\n textAlign = 'center',\n textBaseline = 'top',\n\n lineColor = theme?.lineColor ?? '#212121',\n lineStyle = theme?.lineStyle ?? 'dashed',\n lineVisible = theme?.lineStyle ?? true,\n lineWidth = theme?.lineWidth ?? 1,\n\n textBackgroundVisible = theme?.textBackgroundVisible ?? true,\n textBackgroundColor = theme?.textBackgroundColor ?? '#212121',\n textBackgroundBorderColor = theme?.textBackgroundBorderColor ?? '#212121',\n textBackgroundBorderRadius = theme?.textBackgroundBorderRadius ?? 4,\n textBackgroundBorderWidth = theme?.textBackgroundBorderWidth ?? 1,\n textBackgroundPadding = theme?.textBackgroundPadding ?? 2,\n } = annotationVerticalLine\n\n const dataset = advancedVSeed.dataset.flat()\n\n const generateOneMarkLine = (x: number | string) => ({\n x: x as string,\n zIndex: ANNOTATION_Z_INDEX,\n line: {\n style: {\n visible: lineVisible,\n stroke: lineColor,\n lineStyle: lineStyle,\n lineWidth: lineWidth,\n lineDash: lineStyle === 'dashed' ? [5, 2] : lineStyle === 'dotted' ? [2, 5] : [0],\n },\n },\n label: {\n text: text,\n position: positionMap[textPosition || 'insideEnd'],\n style: {\n dx: 5,\n visible: true,\n stroke: textBackgroundColor,\n lineWidth: 1,\n textAlign: textAlign,\n textBaseline: textBaseline,\n fill: textColor,\n fontSize: textFontSize,\n fontWeight: textFontWeight,\n },\n labelBackground: {\n visible: textBackgroundVisible,\n padding: textBackgroundPadding,\n style: {\n dx: 5,\n cornerRadius: textBackgroundBorderRadius,\n fill: textBackgroundColor,\n fillOpacity: 1,\n stroke: textBackgroundBorderColor,\n lineWidth: textBackgroundBorderWidth,\n },\n },\n },\n startSymbol: {\n visible: theme?.startSymbolVisible ?? true,\n symbolType: theme?.startSymbolType ?? 'triangleDown',\n size: 5 + (lineWidth || 1),\n style: {\n dy: -3,\n fill: lineColor,\n },\n },\n endSymbol: {\n visible: theme?.endSymbolVisible ?? false,\n symbolType: theme?.endSymbolType ?? 'arrow',\n size: 10 + (lineWidth || 1),\n style: {\n dy: 4,\n fill: lineColor,\n },\n },\n })\n\n if ((!selectorPoint && isArray(xValue)) || isString(xValue) || isNumber(xValue)) {\n const xValueArr = Array.isArray(xValue) ? xValue : [xValue]\n return xValueArr.map(generateOneMarkLine)\n }\n\n const selectedData = selectorPoint ? dataset.filter((datum) => selector(datum, selectorPoint)) : []\n\n return selectedData.map((datum) => {\n if (datum[unfoldInfo.encodingX]) {\n return generateOneMarkLine(datum[unfoldInfo.encodingX] as string)\n }\n if (datum[foldInfo.measureValue]) {\n return generateOneMarkLine(datum[foldInfo.measureValue] as string)\n }\n return {}\n })\n }) as IMarkLineSpec[]\n\n const specMarkLine = ((spec as ILineChartSpec).markLine as IMarkLineSpec[]) || []\n const newMarkLine = [...specMarkLine, ...(markLine || [])]\n\n return {\n ...spec,\n markLine: newMarkLine,\n }\n}\n","import type { ILineChartSpec, IMarkLineSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { SpecPipe } from 'src/types'\nimport { isArray, isNumber, isString } from 'remeda'\nimport { ANNOTATION_Z_INDEX } from '../../../../utils/constant'\n\nexport const annotationHorizontalLine: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { annotation, datasetReshapeInfo, config } = advancedVSeed\n const { foldInfo, unfoldInfo } = datasetReshapeInfo[0]\n\n if (!annotation || !annotation.annotationHorizontalLine) {\n return spec\n }\n const theme = config?.[vseed.chartType as 'column']?.annotation?.annotationHorizontalLine\n const { annotationHorizontalLine } = annotation\n const annotationHorizontalLineList = Array.isArray(annotationHorizontalLine)\n ? annotationHorizontalLine\n : [annotationHorizontalLine]\n\n const positionMap = {\n outsideStart: 'start',\n outsideEnd: 'end',\n outsideMiddle: 'middle',\n insideStart: 'insideStartTop',\n insideMiddle: 'insideMiddleTop',\n insideEnd: 'insideEndTop',\n }\n\n const markLine = annotationHorizontalLineList.flatMap((annotationHorizontalLine) => {\n const {\n selector: selectorPoint,\n yValue,\n text = '',\n textPosition = 'insideEnd',\n textColor = theme?.textColor ?? '#ffffff',\n textFontSize = theme?.textFontSize ?? 12,\n textFontWeight = theme?.textFontWeight ?? 400,\n textAlign = 'right',\n textBaseline = 'bottom',\n\n lineColor = theme?.lineColor ?? '#212121',\n lineStyle = theme?.lineStyle ?? 'dashed',\n lineVisible = theme?.lineStyle ?? true,\n lineWidth = theme?.lineWidth ?? 1,\n\n textBackgroundVisible = theme?.textBackgroundVisible ?? true,\n textBackgroundColor = theme?.textBackgroundColor ?? '#212121',\n textBackgroundBorderColor = theme?.textBackgroundBorderColor ?? '#212121',\n textBackgroundBorderRadius = theme?.textBackgroundBorderRadius ?? 4,\n textBackgroundBorderWidth = theme?.textBackgroundBorderWidth ?? 1,\n textBackgroundPadding = theme?.textBackgroundPadding ?? 2,\n } = annotationHorizontalLine\n\n const dataset = advancedVSeed.dataset.flat()\n\n const generateOneMarkLine = (y: string | number) => {\n return {\n y,\n zIndex: ANNOTATION_Z_INDEX,\n line: {\n style: {\n visible: lineVisible,\n stroke: lineColor,\n lineWidth: lineWidth,\n lineDash: lineStyle === 'dashed' ? [5, 2] : lineStyle === 'dotted' ? [2, 5] : [0],\n },\n },\n label: {\n text: text,\n position: positionMap[textPosition || 'insideEnd'],\n style: {\n visible: true,\n dy: 4,\n stroke: textBackgroundColor,\n lineWidth: 1,\n textAlign: textAlign,\n textBaseline: textBaseline,\n fill: textColor,\n fontSize: textFontSize,\n fontWeight: textFontWeight,\n },\n labelBackground: {\n visible: textBackgroundVisible,\n padding: textBackgroundPadding,\n style: {\n dy: 4,\n cornerRadius: textBackgroundBorderRadius,\n fill: textBackgroundColor,\n stroke: textBackgroundBorderColor,\n lineWidth: textBackgroundBorderWidth,\n fillOpacity: 1,\n },\n },\n },\n startSymbol: {\n visible: theme?.startSymbolVisible ?? true,\n symbolType: theme?.startSymbolType ?? 'triangleDown',\n size: 5,\n style: {\n dx: 0,\n fill: lineColor,\n },\n },\n endSymbol: {\n visible: theme?.endSymbolVisible ?? false,\n symbolType: theme?.endSymbolType ?? 'arrow',\n size: 10 + (lineWidth || 1),\n style: {\n dx: -4,\n fill: lineColor,\n },\n },\n }\n }\n if ((!selectorPoint && isArray(yValue)) || isString(yValue) || isNumber(yValue)) {\n const yValueArr = Array.isArray(yValue) ? yValue : [yValue]\n return yValueArr.map(generateOneMarkLine)\n }\n\n const selectedData = selectorPoint ? dataset.filter((datum) => selector(datum, selectorPoint)) : []\n\n return selectedData.map((datum) => {\n if (datum[unfoldInfo.encodingY]) {\n return generateOneMarkLine(datum[unfoldInfo.encodingY] as string)\n }\n if (datum[foldInfo.measureValue]) {\n return generateOneMarkLine(datum[foldInfo.measureValue] as string)\n }\n return {}\n })\n }) as IMarkLineSpec[]\n const specMarkLine = ((spec as ILineChartSpec).markLine as IMarkLineSpec[]) || []\n const newMarkLine = [...specMarkLine, ...(markLine || [])]\n return {\n ...spec,\n markLine: newMarkLine,\n }\n}\n","import type { ICartesianSeries, ILineChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, SpecPipe } from 'src/types'\nimport { isSubset } from './utils'\nimport { ANNOTATION_Z_INDEX } from '../../../../utils/constant'\n\nexport const annotationArea: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { annotation, config } = advancedVSeed\n\n if (!annotation || !annotation.annotationArea) {\n return spec\n }\n\n const theme = config?.[vseed.chartType as 'column']?.annotation?.annotationArea\n const { annotationArea } = annotation\n const annotationAreaList = Array.isArray(annotationArea) ? annotationArea : [annotationArea]\n\n const positionMap = {\n top: 'insideTop',\n topRight: 'insideTopRight',\n topLeft: 'insideTopLeft',\n bottom: 'insideBottom',\n bottomLeft: 'insideBottomLeft',\n bottomRight: 'insideBottomRight',\n left: 'insideLeft',\n right: 'insideRight',\n }\n\n const markArea = annotationAreaList.flatMap((annotationArea) => {\n const {\n selector: selectorPoint,\n text = '',\n textPosition = 'top',\n textColor = theme?.textColor ?? '#ffffff',\n textFontSize = theme?.textFontSize ?? 12,\n textFontWeight = theme?.textFontWeight ?? 400,\n textAlign = 'center',\n textBaseline = 'top',\n\n textBackgroundVisible = theme?.textBackgroundVisible ?? true,\n textBackgroundColor = theme?.textBackgroundColor ?? '#191d24',\n textBackgroundBorderColor = theme?.textBackgroundBorderColor ?? '#191d24',\n textBackgroundBorderWidth = theme?.textBackgroundBorderWidth ?? 1,\n textBackgroundBorderRadius = theme?.textBackgroundBorderRadius ?? 4,\n textBackgroundPadding = theme?.textBackgroundPadding ?? 4,\n\n areaColor = theme?.areaColor ?? '#888888',\n areaColorOpacity = theme?.areaColorOpacity ?? 0.15,\n areaBorderColor = theme?.areaBorderColor ?? '#888888',\n areaBorderRadius = theme?.areaBorderRadius ?? 4,\n areaBorderWidth = theme?.areaBorderWidth ?? 1,\n areaLineDash = theme?.areaLineDash,\n\n outerPadding = theme?.outerPadding ?? 4,\n } = annotationArea\n\n const dataset = advancedVSeed.dataset.flat()\n const selectedData = selectorPoint ? dataset.filter((datum) => selector(datum, selectorPoint)) : []\n\n const labelPosition = positionMap[textPosition || 'top']\n const isBottom = labelPosition.toLocaleLowerCase().includes('bottom')\n\n return {\n zIndex: ANNOTATION_Z_INDEX,\n regionRelative: true,\n positions: (data: Datum[], context: ICartesianSeries) => {\n const positionData = data.filter((item) => selectedData.some((datum) => isSubset(datum, item)))\n const xyList = positionData.map((datum) => context.dataToPosition(datum) as { x: number; y: number })\n\n const yAxisHelper = context.getYAxisHelper() as unknown as {\n getBandwidth: (depth?: number) => number\n getScale: () => {\n range: () => number[]\n }\n }\n const xAxisHelper = context.getXAxisHelper() as unknown as {\n getBandwidth: (depth?: number) => number\n getScale: () => {\n range: () => number[]\n }\n }\n\n if (typeof xAxisHelper?.getBandwidth === 'function') {\n const yScale = yAxisHelper.getScale()\n\n const minX = Math.min(...xyList.map((item) => item.x)) - (outerPadding || 4)\n const maxX = Math.max(...xyList.map((item) => item.x)) + (outerPadding || 4)\n const minY = Math.min(...yScale.range())\n const maxY = Math.max(...yScale.range())\n return [\n // 左上\n {\n x: minX,\n y: minY,\n },\n // 右上\n {\n x: maxX,\n y: minY,\n },\n // 右下\n {\n x: maxX,\n y: maxY,\n },\n // 左下\n {\n x: minX,\n y: maxY,\n },\n ]\n }\n\n if (typeof yAxisHelper?.getBandwidth === 'function') {\n const xScale = xAxisHelper.getScale()\n\n const minY = Math.min(...xyList.map((item) => item.y)) - (outerPadding || 4)\n const maxY = Math.max(...xyList.map((item) => item.y)) + (outerPadding || 4)\n const minX = Math.min(...xScale.range())\n const maxX = Math.max(...xScale.range())\n\n return [\n // 左上\n {\n x: minX,\n y: minY,\n },\n // 右上\n {\n x: maxX,\n y: minY,\n },\n // 右下\n {\n x: maxX,\n y: maxY,\n },\n // 左下\n {\n x: minX,\n y: maxY,\n },\n ]\n }\n\n return []\n },\n label: {\n position: labelPosition,\n visible: true,\n text: text,\n style: {\n dy: isBottom ? -(textFontSize || 12) * 2 : 0,\n textAlign: textAlign,\n textBaseline: textBaseline,\n fill: textColor,\n stroke: textBackgroundColor,\n lineWidth: 1,\n fontSize: textFontSize,\n fontWeight: textFontWeight,\n },\n\n labelBackground: {\n visible: textBackgroundVisible,\n padding: textBackgroundPadding,\n style: {\n dy: isBottom ? -(textFontSize || 12) * 2 : 0,\n cornerRadius: textBackgroundBorderRadius ?? 4,\n fill: textBackgroundColor,\n stroke: textBackgroundBorderColor,\n lineWidth: textBackgroundBorderWidth,\n fillOpacity: 1,\n },\n },\n },\n area: {\n style: {\n visible: true,\n fill: areaColor,\n fillOpacity: areaColorOpacity,\n stroke: areaBorderColor,\n lineWidth: areaBorderWidth,\n cornerRadius: areaBorderRadius,\n lineDash: areaLineDash,\n },\n },\n }\n }) as ILineChartSpec['markArea']\n\n return {\n ...spec,\n markArea: markArea,\n }\n}\n","import type { ICartesianSeries, IChart, ILineChartSpec, IVChart } from '@visactor/vchart'\nimport { array, Color as VUtilColor } from '@visactor/vutils'\nimport { isNullish, isNumber, isPlainObject } from 'remeda'\nimport type { AnnotationHorizontalLine, SpecPipe, Color } from 'src/types'\n\ninterface SplitConfig {\n points: { x: number; y: number }[]\n splitCoordinate: number\n lineStroke: {\n gradient: string\n x0: number\n x1: number\n y0: number\n y1: number\n stops: {\n color: string\n offset: number\n }[]\n }\n areaFill: {\n gradient: string\n x0: number\n x1: number\n y0: number\n y1: number\n stops: {\n color: string\n offset: number\n }[]\n }\n}\n\nexport const splitLine: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { annotation, chartType, datasetReshapeInfo } = advancedVSeed\n\n if (!annotation || !annotation.annotationHorizontalLine) {\n return spec\n }\n const baseConfig = advancedVSeed.config[chartType] as { color: Color }\n\n const splitLineConfig = array(annotation.annotationHorizontalLine).find(\n (item) => !!(item as AnnotationHorizontalLine).splitLine,\n ) as AnnotationHorizontalLine | undefined\n\n const splitValue = +(splitLineConfig?.yValue as number | string)\n\n if (Number.isNaN(splitValue) || !isNumber(splitValue)) {\n return spec\n }\n const result = { ...spec } as Partial<ILineChartSpec>\n const colorTheme = baseConfig?.color ?? {}\n const colorConfig = {\n positiveColor: colorTheme.positiveColor || 'red',\n negativeColor: colorTheme.negativeColor || 'green',\n ...(isPlainObject(splitLineConfig?.splitLine) ? splitLineConfig?.splitLine : {}),\n }\n\n const groupMark = {\n type: 'group',\n name: 'annotationHorizontalLine-splitLine',\n zIndex: 300,\n style: {\n splitConfig: (datum: any, ctx: any) => {\n const vchart = ctx.vchart as IVChart\n const chart = vchart.getChart() as IChart\n const lineSeries = chart.getAllSeries().find((s) => s.type === 'line' || s.type === 'area') as ICartesianSeries\n\n if (!lineSeries) {\n return\n }\n const lineMark = lineSeries.getMarkInName('line') ?? lineSeries.getMarkInName('area')\n\n if (!lineMark) {\n return\n }\n const lineGraphics = lineMark.getGraphics()\n\n if (!lineGraphics || lineGraphics.length !== 1 || !lineGraphics[0]) {\n return\n }\n const points = ((lineGraphics[0].attribute as any).points ?? []) as { x: number; y: number }[]\n\n if ((lineGraphics[0].attribute as any).segments?.length) {\n ;((lineGraphics[0].attribute as any).segments as any[]).forEach(\n (seg: { points: { x: number; y: number }[] }) => {\n seg.points.forEach((pt: { x: number; y: number }) => {\n points.push({ x: pt.x, y: pt.y })\n })\n },\n )\n }\n\n if (!points || !points.length) {\n return\n }\n const splitCoordinate = lineSeries.getYAxisHelper().getScale!(0).scale(splitValue)\n const minY = Math.min(...points.map((p) => p.y))\n const maxY = Math.max(...points.map((p) => p.y))\n const ratio = (splitCoordinate - minY) / (maxY - minY)\n const lineStroke = {\n gradient: 'linear',\n x0: 0,\n x1: 0,\n y0: 0,\n y1: 1,\n stops: [\n {\n color: colorConfig.positiveColor,\n offset: 0,\n },\n {\n color: colorConfig.positiveColor,\n offset: ratio,\n },\n {\n color: colorConfig.negativeColor,\n offset: ratio + 0.0000001,\n },\n {\n color: colorConfig.negativeColor,\n offset: 1,\n },\n ],\n }\n const areaFill = {\n gradient: 'linear',\n x0: 0,\n x1: 0,\n y0: 0,\n y1: 1,\n stops: [\n {\n color: colorConfig.positiveColor,\n offset: 0,\n },\n {\n color: new VUtilColor(colorConfig.positiveColor).setOpacity(0).toRGBA(),\n offset: ratio,\n },\n {\n offset: ratio + 0.0000001,\n color: new VUtilColor(colorConfig.negativeColor).setOpacity(0).toRGBA(),\n },\n {\n color: colorConfig.negativeColor,\n offset: 1,\n },\n ],\n }\n const attrs: any = {\n segments: null,\n points,\n }\n\n if (lineGraphics[0].type === 'area') {\n attrs.stroke = lineStroke\n attrs.fill = areaFill\n } else {\n attrs.stroke = lineStroke\n }\n\n lineGraphics[0].setAttributes(attrs as unknown as Record<string, any>)\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n lineGraphics[0].setFinalAttributes?.(attrs)\n const start = lineSeries.getRegion().getLayoutStartPoint()\n\n return {\n points: points.map((entry) => ({ x: entry.x + start.x, y: entry.y + start.y })),\n splitCoordinate,\n areaFill,\n lineStroke,\n } as SplitConfig\n },\n },\n children: [\n {\n type: 'area',\n interactive: false,\n zIndex: 500,\n style: {\n fillOpacity: 0.5,\n points: (datum: any, ctx: any, opt: any) => {\n const parentNode = opt.mark?._product?.parent\n\n if (parentNode?.attribute?.splitConfig) {\n const { points, splitCoordinate } = parentNode.attribute.splitConfig as SplitConfig\n\n return points.map((entry: { x: number; y: number }) => {\n return {\n ...entry,\n y1: splitCoordinate,\n }\n })\n }\n\n return []\n },\n fill: (datum: any, ctx: any, opt: any) => {\n const parentNode = opt.mark?._product?.parent\n\n if (parentNode?.attribute?.splitConfig) {\n const { areaFill } = parentNode.attribute.splitConfig as SplitConfig\n\n return areaFill\n }\n\n return\n },\n },\n },\n ],\n }\n\n if (!result.customMark) {\n result.customMark = []\n }\n\n ;(result.customMark as any[]).push(groupMark)\n\n const seriesSpec =\n result.type === 'line' || result.type === 'area'\n ? result\n : result.series?.find((s) => s.type === 'line' || s.type === 'area')\n\n if (seriesSpec) {\n if (!seriesSpec.point) {\n seriesSpec.point = {}\n }\n if (!seriesSpec.line) {\n seriesSpec.line = {}\n }\n\n if (!seriesSpec.point.style) {\n seriesSpec.point.style = {}\n }\n if (!seriesSpec.line.style) {\n seriesSpec.line.style = {}\n }\n\n const measureValueKey = datasetReshapeInfo[0].foldInfo.measureValue\n\n seriesSpec.point.style.fill = (datum) => {\n console.log(datum)\n return datum?.[measureValueKey] >= splitValue ? colorConfig.positiveColor : colorConfig.negativeColor\n }\n seriesSpec.line.style.stroke = (datum) => {\n return datum?.[measureValueKey] >= splitValue ? colorConfig.positiveColor : colorConfig.negativeColor\n }\n if (seriesSpec.label && (seriesSpec.label as any).visible && isNullish((seriesSpec.label as any).style?.fill)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n ;(seriesSpec.label as any).style = {\n ...(seriesSpec.label as any).style,\n fill: (datum: any) => {\n return datum?.[measureValueKey] >= splitValue ? colorConfig.positiveColor : colorConfig.negativeColor\n },\n }\n }\n }\n\n return result\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { SpecPipe } from 'src/types'\n\nexport const initPivot: SpecPipe = (spec) => {\n const result = { ...spec } as PivotChartConstructorOptions\n\n return {\n ...result,\n animation: true,\n rows: [],\n columns: [],\n indicators: [],\n records: [],\n widthMode: 'standard',\n autoFillWidth: true,\n defaultHeaderColWidth: 'auto',\n defaultColWidth: 200,\n\n heightMode: 'standard',\n autoFillHeight: true,\n defaultRowHeight: 100,\n defaultHeaderRowHeight: 'auto',\n\n indicatorsAsCol: false,\n select: {\n highlightMode: 'cell',\n headerSelectMode: 'inline',\n },\n hover: {\n highlightMode: 'cross',\n },\n tooltip: {\n isShowOverflowTextTooltip: true,\n },\n corner: {\n titleOnDimension: 'row',\n },\n animationAppear: {\n duration: 600,\n type: 'all',\n direction: 'row',\n },\n }\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport { isCombination, isPivot } from 'src/pipeline/utils'\nimport type { Config, Dimension, SpecPipe } from 'src/types'\nimport { isNullish } from 'remeda'\n\nexport const pivotGridStyle: SpecPipe = (spec, context) => {\n const { vseed, advancedVSeed } = context\n const { config, chartType, dimensions } = advancedVSeed\n const themConfig = (config?.[chartType] as Config['line'])?.pivotGrid ?? {}\n\n const onlyCombination = !isPivot(vseed) && isCombination(vseed)\n\n const result = { ...spec } as PivotChartConstructorOptions\n const transparent = 'rgba(0,0,0,0)'\n const hasColumnDimension = dimensions.some((dim: Dimension) => dim.encoding === 'column')\n\n const borderColor = themConfig.borderColor ?? '#e3e5eb'\n const bodyFontColor = themConfig.bodyFontColor ?? '#141414'\n const headerFontColor = themConfig.headerFontColor ?? '#21252c'\n const headerBackgroundColor = themConfig.headerBackgroundColor ?? 'rgba(0,0,0,0)'\n const hoverHeaderBackgroundColor = onlyCombination\n ? transparent\n : (themConfig.hoverHeaderBackgroundColor ?? '#D9DDE4')\n const hoverHeaderInlineBackgroundColor = onlyCombination\n ? transparent\n : (themConfig.hoverHeaderInlineBackgroundColor ?? '#D9DDE455')\n const outlineBorderLineWidth = themConfig.outlineBorderLineWidth ?? 0\n const frameCornerRadius = themConfig.frameCornerRadius ?? 0\n\n if (!isNullish(themConfig.minChartWidth)) {\n result.defaultColWidth = themConfig.minChartWidth\n }\n\n if (!isNullish(themConfig.minChartHeight)) {\n result.defaultRowHeight = themConfig.minChartHeight\n }\n\n return {\n ...result,\n theme: {\n underlayBackgroundColor: transparent,\n bodyStyle: {\n borderColor,\n color: bodyFontColor,\n borderLineWidth: (arg: { row: number; col: number }) => {\n return [\n arg.row === 0 ? outlineBorderLineWidth : 1,\n outlineBorderLineWidth,\n 0,\n arg.col === 0 ? outlineBorderLineWidth : 1,\n ]\n },\n bgColor: transparent,\n hover: {\n cellBgColor: 'transparent',\n },\n },\n headerStyle: {\n borderColor,\n fontSize: 12,\n // borderLineWidth: [outlineBorderLineWidth, outlineBorderLineWidth, 1, 1],\n borderLineWidth: (arg: { row: number; col: number }) => {\n return [outlineBorderLineWidth, outlineBorderLineWidth, 1, arg.col === 0 ? outlineBorderLineWidth : 1]\n },\n color: headerFontColor,\n textAlign: 'center',\n bgColor: headerBackgroundColor,\n hover: {\n cellBgColor: hoverHeaderBackgroundColor,\n inlineRowBgColor: hoverHeaderInlineBackgroundColor || undefined,\n inlineColumnBgColor: hoverHeaderInlineBackgroundColor || undefined,\n },\n },\n rowHeaderStyle: {\n borderColor,\n fontSize: 12,\n color: headerFontColor,\n padding: [0, 4, 0, 4],\n borderLineWidth: (arg: { row: number }) => {\n return [arg.row === 0 ? outlineBorderLineWidth : 1, 1, 0, outlineBorderLineWidth]\n },\n bgColor: headerBackgroundColor,\n hover: {\n cellBgColor: hoverHeaderBackgroundColor,\n inlineRowBgColor: hoverHeaderInlineBackgroundColor || undefined,\n inlineColumnBgColor: hoverHeaderInlineBackgroundColor || undefined,\n },\n },\n cornerHeaderStyle: {\n borderColor,\n textAlign: 'center',\n fontSize: 12,\n color: headerFontColor,\n padding: [0, 4, 0, 4],\n fontWeight: 'bold',\n borderLineWidth: [outlineBorderLineWidth, 1, 1, outlineBorderLineWidth],\n bgColor: headerBackgroundColor,\n frameStyle: {\n borderColor,\n },\n hover: {\n cellBgColor: hoverHeaderBackgroundColor,\n inlineRowBgColor: hoverHeaderInlineBackgroundColor || undefined,\n inlineColumnBgColor: hoverHeaderInlineBackgroundColor || undefined,\n },\n },\n cornerRightTopCellStyle: {\n borderColor,\n borderLineWidth: 0,\n frameStyle: {\n borderColor,\n borderLineWidth: [outlineBorderLineWidth, outlineBorderLineWidth, 1, 1],\n },\n bgColor: headerBackgroundColor,\n hover: {\n cellBgColor: hoverHeaderBackgroundColor,\n },\n },\n cornerLeftBottomCellStyle: {\n borderColor,\n borderLineWidth: [outlineBorderLineWidth, 0, outlineBorderLineWidth, outlineBorderLineWidth],\n bgColor: headerBackgroundColor,\n frameStyle: {\n borderColor,\n borderLineWidth: [1, 0, outlineBorderLineWidth, outlineBorderLineWidth],\n },\n hover: {\n cellBgColor: hoverHeaderBackgroundColor,\n },\n },\n cornerRightBottomCellStyle: {\n borderColor,\n bgColor: headerBackgroundColor,\n borderLineWidth: [1, outlineBorderLineWidth, outlineBorderLineWidth, 1],\n frameStyle: {\n borderColor,\n borderLineWidth: [1, outlineBorderLineWidth, outlineBorderLineWidth, 1],\n },\n hover: {\n cellBgColor: hoverHeaderBackgroundColor,\n },\n },\n rightFrozenStyle: {\n borderColor,\n bgColor: headerBackgroundColor,\n borderLineWidth: (arg: { row: number }) => {\n return [\n arg.row === 0 || (hasColumnDimension && arg.row === 1) ? outlineBorderLineWidth : 1,\n outlineBorderLineWidth,\n 0,\n 1,\n ]\n },\n hover: {\n borderLineWidth: 0,\n cellBgColor: hoverHeaderBackgroundColor,\n },\n },\n bottomFrozenStyle: {\n borderColor,\n borderLineWidth: [1, outlineBorderLineWidth, outlineBorderLineWidth, 1],\n bgColor: headerBackgroundColor,\n hover: {\n cellBgColor: hoverHeaderBackgroundColor,\n },\n },\n selectionStyle: {\n cellBgColor: '',\n cellBorderColor: '',\n },\n frameStyle: {\n borderColor,\n cornerRadius: frameCornerRadius,\n borderLineWidth: outlineBorderLineWidth,\n },\n },\n }\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport { execPipeline } from '../../../../utils'\nimport type { Dataset, SpecPipe, SpecPipeline, SpecPipelineContext } from 'src/types'\nimport { unique } from 'remeda'\n\nexport const pivotIndicators =\n (chartPipeline: SpecPipeline): SpecPipe =>\n (spec, context): Partial<PivotChartConstructorOptions> => {\n const result = { ...spec } as PivotChartConstructorOptions\n const { advancedVSeed } = context\n const { measures, datasetReshapeInfo, dataset } = advancedVSeed\n\n const colorItems = unique(datasetReshapeInfo.flatMap((d) => d.unfoldInfo.colorItems))\n\n const indicators = datasetReshapeInfo.map((reshapeInfo, index) => {\n const measure = measures?.find((d) => d.id === reshapeInfo.id)\n const newDataset = dataset[index] as Dataset\n const newDatasetReshapeInfo = [\n {\n ...reshapeInfo,\n unfoldInfo: { ...reshapeInfo.unfoldInfo, colorItems },\n },\n ]\n const newContext: SpecPipelineContext = {\n ...context,\n advancedVSeed: {\n ...advancedVSeed,\n datasetReshapeInfo: newDatasetReshapeInfo,\n dataset: newDataset,\n },\n }\n\n const chartSpec = execPipeline(chartPipeline, newContext, {})\n return {\n indicatorKey: reshapeInfo.id,\n title: measure?.alias,\n cellType: 'chart',\n chartModule: 'vchart',\n chartSpec: chartSpec,\n style: {\n padding: [1, 1, 0, 1],\n },\n }\n })\n\n return {\n ...result,\n indicators: indicators,\n } as Partial<PivotChartConstructorOptions>\n }\n\nexport const pivotIndicatorsAsRow: SpecPipe = (spec) => {\n const result = { ...spec } as PivotChartConstructorOptions\n\n return {\n ...result,\n indicatorsAsCol: false,\n }\n}\n\nexport const pivotIndicatorsAsCol: SpecPipe = (spec) => {\n const result = { ...spec } as PivotChartConstructorOptions\n\n return {\n ...result,\n indicatorsAsCol: true,\n }\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { Spec, SpecPipe } from 'src/types'\n\nexport const datasetPivot: SpecPipe = (spec, context): Spec => {\n const result = { ...spec } as PivotChartConstructorOptions\n const { advancedVSeed } = context\n const { dataset, datasetReshapeInfo } = advancedVSeed\n const records = dataset.reduce((pre, cur, index) => {\n const id = datasetReshapeInfo[index].id\n pre[id] = cur\n return pre\n }, {})\n return {\n ...result,\n records: records,\n } as PivotChartConstructorOptions\n}\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const pivotAxisStyle = (axisStyle: SpecPipe): SpecPipe => {\n return (spec, context) => {\n const result = axisStyle(spec, context) as ILineChartSpec\n\n if (result.axes) {\n result.axes.forEach((axis: any) => {\n axis.domainLine = {\n visible: false,\n }\n\n if (axis.grid && axis.grid.visible && axis.grid.style) {\n axis.grid.style.strokeOpacity = 0.3\n }\n })\n }\n\n return result\n }\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { Dimensions, SpecPipe } from 'src/types'\n\nexport const pivotRowDimensions: SpecPipe = (spec, context): Partial<PivotChartConstructorOptions> => {\n const result = { ...spec } as PivotChartConstructorOptions\n const { advancedVSeed } = context\n const dimensions = advancedVSeed.dimensions as Dimensions\n if (!dimensions) {\n return result\n }\n const rowDimensions = dimensions.filter((dim) => dim.encoding === 'row')\n const rows = rowDimensions.map((dim) => ({\n dimensionKey: dim.id,\n title: dim.alias || dim.id,\n }))\n return {\n ...result,\n rows: rows,\n } as Partial<PivotChartConstructorOptions>\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { Dimensions, SpecPipe } from 'src/types'\n\nexport const pivotColumnDimensions: SpecPipe = (spec, context): Partial<PivotChartConstructorOptions> => {\n const result = { ...spec } as PivotChartConstructorOptions\n const { advancedVSeed } = context\n const dimensions = advancedVSeed.dimensions as Dimensions\n\n if (!dimensions) {\n return result\n }\n const columnDimensions = dimensions.filter((dim) => dim.encoding === 'column')\n const columns = columnDimensions.map((dim) => ({\n dimensionKey: dim.id,\n title: dim.alias || dim.id,\n })) as unknown\n\n return {\n ...result,\n columns: columns,\n } as Partial<PivotChartConstructorOptions>\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { SpecPipe, Config } from 'src/types'\n\nexport const pivotTitle: SpecPipe = (spec, context): Partial<PivotChartConstructorOptions> => {\n const result = { ...spec } as PivotChartConstructorOptions\n const { advancedVSeed } = context\n const { config, chartType } = advancedVSeed\n const themConfig = (config?.[chartType] as Config['line'])?.pivotGrid ?? {}\n\n if (result.columns && result.columns.length > 0) {\n result.title = {\n text: (spec as unknown as { columns: { title: string }[] }).columns.map((entry) => entry.title).join('/'),\n align: 'center',\n orient: 'top',\n padding: [2, 0, 0, 0],\n textStyle: {\n fontSize: themConfig.titleFontSize ?? 12,\n fill: themConfig.titleFontColor ?? '#000',\n fontWeight: themConfig.titleFontWeight ?? 'bold',\n },\n }\n }\n\n return result\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport { unique } from 'remeda'\nimport type { Color, Legend, SpecPipe } from 'src/types'\nimport { createSpecifiedForColorMapping } from '../color/color'\n\nexport const pivotDiscreteLegend: SpecPipe = (spec, context): Partial<PivotChartConstructorOptions> => {\n const result = { ...spec } as PivotChartConstructorOptions\n const { advancedVSeed } = context\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { legend: Legend; color: Color }\n\n if (!baseConfig || !baseConfig.legend) {\n return result\n }\n\n const { datasetReshapeInfo } = advancedVSeed\n\n const colorItems = unique(\n datasetReshapeInfo.flatMap((d) => {\n return d.unfoldInfo.colorItems\n }),\n )\n\n const colorIdMap = datasetReshapeInfo.reduce<Record<string, string>>((prev, cur) => {\n return { ...prev, ...cur.unfoldInfo.colorIdMap }\n }, {})\n\n const { legend, color } = baseConfig\n const { colorScheme, colorMapping } = color\n\n const colorSpecified = createSpecifiedForColorMapping(colorMapping, colorIdMap, colorItems)\n\n const {\n enable,\n position = 'bottom',\n labelFontColor,\n labelColor,\n labelFontSize = 12,\n labelFontWeight = 400,\n maxSize = 1,\n border,\n shapeType = 'rectRound',\n } = legend || {}\n\n const orient = ['bottom', 'bottomLeft', 'bottomRight', 'bl', 'br'].includes(position)\n ? 'bottom'\n : ['top', 'topLeft', 'topRight', 'tl', 'tr'].includes(position)\n ? 'top'\n : ['left', 'leftTop', 'leftBottom', 'lt', 'lb'].includes(position)\n ? 'left'\n : 'right'\n\n const legendPosition = ['topLeft', 'bottomLeft', 'leftTop', 'rightTop', 'lt', 'rt', 'tl', 'bl'].includes(position)\n ? 'start'\n : ['topRight', 'bottomRight', 'leftBottom', 'rightBottom', 'lb', 'rb', 'rt', 'br'].includes(position)\n ? 'end'\n : 'middle'\n\n const legends = {\n visible: enable,\n type: 'discrete',\n orient,\n position: legendPosition,\n maxCol: Math.max(1, maxSize),\n maxRow: Math.max(1, maxSize),\n data: colorItems.map((d: string, index: number) => {\n const color = colorSpecified?.[d] ?? colorScheme?.[index % colorScheme.length]\n return {\n label: d,\n shape: {\n outerBorder: border\n ? {\n stroke: color,\n distance: 3,\n lineWidth: 1,\n }\n : undefined,\n fill: color,\n },\n }\n }),\n\n item: {\n focus: true,\n maxWidth: '30%',\n focusIconStyle: {\n size: labelFontSize + 2,\n fill: labelColor || labelFontColor,\n fontWeight: labelFontWeight,\n },\n shape: {\n space: border ? 6 : 4,\n style: {\n symbolType: shapeType,\n size: border ? 8 : 10,\n },\n },\n label: {\n formatMethod: (value: string) => {\n return colorIdMap[value] ?? value\n },\n style: {\n fontSize: labelFontSize,\n fill: labelColor || labelFontColor,\n fontWeight: labelFontWeight,\n },\n },\n background: {\n state: {\n selectedHover: {\n fill: labelColor || labelFontColor,\n fillOpacity: 0.05,\n },\n },\n },\n },\n }\n return { ...result, legends } as Partial<PivotChartConstructorOptions>\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { Color, Legend, SpecPipe } from 'src/types'\n\nexport const pivotColorLegend: SpecPipe = (spec, context): Partial<PivotChartConstructorOptions> => {\n const result = { ...spec } as PivotChartConstructorOptions\n const { advancedVSeed } = context\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { legend: Legend; color: Color }\n\n if (!baseConfig || !baseConfig.legend) {\n return result\n }\n\n const { datasetReshapeInfo } = advancedVSeed\n const max = Math.max(...datasetReshapeInfo.map((d) => d.foldInfo.statistics.colorMin))\n const min = Math.min(...datasetReshapeInfo.map((d) => d.foldInfo.statistics.colorMax))\n const { legend, color } = baseConfig\n const { colorScheme, linearColorScheme } = color\n\n const {\n enable,\n position = 'bottom',\n labelFontColor,\n labelColor,\n labelFontSize = 12,\n labelFontWeight = 400,\n } = legend || {}\n\n const orient = ['bottom', 'bottomLeft', 'bottomRight', 'bl', 'br'].includes(position)\n ? 'bottom'\n : ['top', 'topLeft', 'topRight', 'tl', 'tr'].includes(position)\n ? 'top'\n : ['left', 'leftTop', 'leftBottom', 'lt', 'lb'].includes(position)\n ? 'left'\n : 'right'\n\n const legendPosition = ['topLeft', 'bottomLeft', 'leftTop', 'rightTop', 'lt', 'rt', 'tl', 'bl'].includes(position)\n ? 'start'\n : ['topRight', 'bottomRight', 'leftBottom', 'rightBottom', 'lb', 'rb', 'rt', 'br'].includes(position)\n ? 'end'\n : 'middle'\n\n const legends = {\n visible: enable,\n type: 'color',\n orient,\n position: legendPosition,\n\n colors: linearColorScheme || colorScheme || [],\n value: [min, max],\n min: min,\n max: max,\n\n maxWidth: '30%',\n handlerText: {\n visible: true,\n style: {\n fill: labelColor || labelFontColor,\n fontSize: labelFontSize,\n fontWeight: labelFontWeight,\n },\n },\n } as unknown\n return { ...result, legends } as Partial<PivotChartConstructorOptions>\n}\n","import type { Spec, SpecPipe, SpecPipeline, SpecPipelineContext } from 'src/types'\nimport { execPipeline, isPivotChart } from '../../../../utils'\n\nexport const pivotAdapter = (pipeline: SpecPipeline, pivotPipeline: SpecPipeline): SpecPipe => {\n return (spec, context) => {\n const { vseed } = context\n const usePivotChart = isPivotChart(vseed)\n\n if (usePivotChart) {\n return execPipeline<Spec, SpecPipelineContext>(pivotPipeline, context, spec)\n }\n\n return execPipeline<Spec, SpecPipelineContext>(pipeline, context, spec)\n }\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n xBand,\n yLinear,\n initLine,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n initPivot,\n datasetPivot,\n pivotDiscreteLegend,\n pivotIndicators,\n pivotAdapter,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n pointStyle,\n lineStyle,\n verticalCrosshairLine,\n pointStateDimensionHover,\n progressive,\n colorAdapter,\n linearColor,\n colorLegend,\n colorLineStyleFill,\n colorPointStyleFill,\n pivotColorLegend,\n pivotTitle,\n pivotAxisStyle,\n splitLine,\n} from '../pipes'\n\nconst line: SpecPipeline = [\n initLine,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n verticalCrosshairLine,\n colorAdapter(discreteLegend, colorLegend),\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n label,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n splitLine,\n]\n\nconst pivotLine: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initLine,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n pivotAxisStyle(yLinear),\n verticalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n label,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n splitLine,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const lineSpecPipeline: SpecPipeline = [pivotAdapter(line, pivotLine)]\n","import { lineAdvancedPipeline, lineSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerLine = () => {\n Builder._advancedPipelineMap['line'] = lineAdvancedPipeline\n Builder._specPipelineMap['line'] = lineSpecPipeline\n}\n","import { unique } from 'remeda'\nimport { MeasureName } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\nimport { addColorToEncoding } from './color'\n\nexport const defaultEncodingForColumn: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding)\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForColumn: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding, measures.length > 1)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\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) => {\n const onlyMeasureName = dimensions.length === 1 && dimensions.find((item) => item.id === MeasureName)\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.x = uniqueDimIds.slice(0, 1) // 第一个维度放置于X轴\n encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1) // 第二个之后的维度用于颜色\n encoding.detail = encoding.color\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureName) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\n // x\n encoding.x = unique(dimensions.filter((item) => item.encoding === 'xAxis').map((item) => item.id))\n if (encoding.x.length === 0) {\n encoding.x = [dimensions[0].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 !== MeasureName)\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 !== MeasureName)\n}\n\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.y = unique(measures.filter((item) => item.encoding === 'yAxis' || !item.encoding).map((item) => item.id))\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n // y\n encoding.y = unique(measures.filter((item) => item.encoding === 'yAxis' || !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])\n}\n","import { pick } from 'remeda'\nimport { replaceNullToUndefined } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed, Config } from 'src/types'\n\nexport const columnConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const pickedConfig = pick(vseed, [\n 'backgroundColor',\n 'color',\n 'label',\n 'legend',\n 'tooltip',\n 'xAxis',\n 'yAxis',\n 'crosshairRect',\n 'stackCornerRadius',\n 'barMaxWidth',\n 'barGapInGroup',\n ]) as Config['column']\n\n const config = replaceNullToUndefined(pickedConfig)\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n","import type { AdvancedPipe, RegressionLineConfig } from 'src/types'\n\nexport const regressionLine: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n let keys = [] as string[]\n\n if (vseed.chartType === 'histogram') {\n keys = ['kdeRegressionLine', 'ecdfRegressionLine']\n } else if (vseed.chartType === 'scatter') {\n keys = ['linearRegressionLine', 'lowessRegressionLine', 'polynomialRegressionLine', 'logisticRegressionLine']\n } else if (vseed.chartType === 'column') {\n keys = ['polynomialRegressionLine']\n }\n\n if (keys.length) {\n const regressionLineConfig: RegressionLineConfig = {}\n let hasLine = false\n\n keys.forEach((key: string) => {\n if ((vseed as any)[key]) {\n hasLine = true\n regressionLineConfig[key as keyof RegressionLineConfig] =\n (vseed as any)[key] === true ? {} : (vseed as any)[key]\n }\n })\n\n return hasLine\n ? {\n ...advancedVSeed,\n regressionLine: regressionLineConfig,\n }\n : advancedVSeed\n }\n\n return advancedVSeed\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n columnConfig,\n markStyle,\n annotation,\n sortXBandAxis,\n sortLegend,\n encodingForColumn,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n encodingAdapter,\n defaultEncodingForColumn,\n deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n regressionLine,\n} from '../pipes'\n\nexport const columnAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForColumn, buildMeasures],\n [\n encodingForColumn,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n sortXBandAxis,\n sortLegend,\n columnConfig,\n theme,\n markStyle,\n annotation,\n regressionLine,\n]\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initColumn: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n result.type = 'bar'\n result.direction = 'vertical'\n result.xField = unfoldInfo.encodingX\n result.yField = foldInfo.measureValue\n result.seriesField = unfoldInfo.encodingColorId\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { Datum, SpecPipe, StackCornerRadius } from 'src/types'\n\nexport const stackCornerRadius: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const stackCornerRadius = advancedVSeed.config?.[chartType as 'column']?.stackCornerRadius as StackCornerRadius\n const { datasetReshapeInfo } = advancedVSeed\n const { foldInfo } = datasetReshapeInfo[0]\n\n if (chartType === 'dualAxis' && (spec as any).type !== 'bar') {\n return spec\n }\n\n return {\n ...spec,\n stackCornerRadius: (_: unknown, datum: Datum) => {\n if (datum[foldInfo.measureValue] > 0) {\n return stackCornerRadius\n }\n\n return 0\n },\n }\n}\n","import { isNullish } from 'remeda'\nimport type { BarMaxWidth, SpecPipe } from 'src/types'\n\nexport const barMaxWidth: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const barMaxWidth = advancedVSeed.config?.[chartType as 'column']?.barMaxWidth as BarMaxWidth\n\n if (!isNullish(barMaxWidth)) {\n return {\n ...spec,\n barMaxWidth,\n }\n }\n\n return spec\n}\n","import type { IAreaChartSpec, IBarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const stackInverse: SpecPipe = (spec) => {\n const result = { ...spec } as IAreaChartSpec | IBarChartSpec\n result.stackInverse = true\n return result\n}\n","import type { ICartesianCrosshairSpec, ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const verticalCrosshairRect: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n\n const config = advancedVSeed.config?.[chartType as 'column']?.crosshairRect\n if (!config) {\n return result\n }\n\n if (!result.crosshair) {\n result.crosshair = {}\n }\n\n const visible = config.visible || true\n const rectColor = config.rectColor || undefined\n const labelColor = config.labelColor || undefined\n const labelVisible = config.labelVisible || false\n const labelBackgroundColor = config.labelBackgroundColor || undefined\n\n const crosshair = result.crosshair as ICartesianCrosshairSpec\n crosshair.xField = {\n visible,\n line: {\n type: 'rect',\n style: {\n lineWidth: 0,\n opacity: 0.2,\n fill: rectColor,\n },\n },\n label: {\n visible: labelVisible,\n labelBackground: {\n visible: labelVisible,\n style: {\n fill: labelBackgroundColor,\n },\n },\n style: {\n fill: labelColor,\n },\n },\n }\n\n return result\n}\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from './colorAdapter'\n\nexport const colorBarStyleFill = (stylePipe: SpecPipe): SpecPipe => {\n return (spec, context) => {\n const result = stylePipe(spec, context) as IBarChartSpec\n\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed, vseed)) {\n if (result?.bar?.style) {\n result.bar.style.fill = {\n field: unfoldInfo.encodingColor,\n scale: 'color',\n }\n }\n }\n\n return result\n }\n}\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { BarStyle, Datum, SpecPipe } from 'src/types'\nimport { isEmpty, isNullish } from 'remeda'\n\nexport const barStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle, dataset = [] } = advancedVSeed\n const { barStyle } = markStyle\n\n const showStroke = dataset.length <= 100\n\n const result = {\n ...spec,\n bar: {\n style: {\n visible: true,\n fillOpacity: 1,\n lineWidth: showStroke ? 1 : 0,\n },\n state: {\n hover: {\n fillOpacity: 0.6,\n },\n },\n },\n } as IBarChartSpec\n\n if (isNullish(barStyle) || isEmpty(barStyle)) {\n return result\n }\n\n const barStyles = (Array.isArray(barStyle) ? barStyle : [barStyle]) as BarStyle[]\n\n const customMap = barStyles.reduce<object>((result, style, index) => {\n const {\n barBorderColor,\n barBorderStyle,\n barBorderWidth = 1,\n barColor,\n barColorOpacity,\n barRadius,\n barVisible = true,\n } = style\n\n const lineDash = barBorderStyle === 'dashed' ? [5, 2] : barBorderStyle === 'dotted' ? [2, 5] : [0, 0]\n return {\n ...result,\n [`custom${index + 1}`]: {\n // 优先级: 后者覆盖前者\n level: index + 1,\n filter: (datum: Datum) => {\n if (selector(datum, style.selector)) {\n return true\n }\n return false\n },\n style: {\n visible: barVisible,\n fill: barColor,\n fillOpacity: barColorOpacity,\n cornerRadius: barRadius,\n innerBorder: {\n stroke: barBorderColor,\n lineWidth: barBorderWidth,\n distance: (barBorderWidth || 0) / 2,\n lineDash: lineDash,\n },\n },\n },\n }\n }, {})\n\n result.bar!.state = {\n ...result.bar!.state,\n ...customMap,\n }\n\n return result\n}\n","import { type ICartesianSeries, type ILineChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, SpecPipe, VSeed } from 'src/types'\nimport { isSubset } from './utils'\nimport { ANNOTATION_Z_INDEX } from '../../../../utils/constant'\nimport { isBarLikeChart } from 'src/pipeline/utils/chatType'\n\nexport const annotationAreaBand: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { annotation, config } = advancedVSeed\n\n if (!annotation || !annotation.annotationArea) {\n return spec\n }\n const theme = config?.[vseed.chartType as 'column']?.annotation?.annotationArea\n const { annotationArea } = annotation\n const annotationAreaList = Array.isArray(annotationArea) ? annotationArea : [annotationArea]\n\n const positionMap = {\n top: 'insideTop',\n topRight: 'insideTopRight',\n topLeft: 'insideTopLeft',\n bottom: 'insideBottom',\n bottomLeft: 'insideBottomLeft',\n bottomRight: 'insideBottomRight',\n left: 'insideLeft',\n right: 'insideRight',\n }\n const defaultOptions = isBarLikeChart(advancedVSeed as VSeed)\n ? {\n textPosition: 'right',\n textAlign: 'right',\n }\n : {\n textPosition: 'top',\n textAlign: 'center',\n }\n\n const markArea = annotationAreaList.flatMap((annotationArea) => {\n const {\n selector: selectorPoint,\n text = '',\n textColor = theme?.textColor ?? '#ffffff',\n textFontSize = theme?.textFontSize ?? 12,\n textFontWeight = theme?.textFontWeight ?? 400,\n textAlign = defaultOptions.textAlign,\n textBaseline = 'middle',\n\n textBackgroundVisible = theme?.textBackgroundVisible ?? true,\n textBackgroundColor = theme?.textBackgroundColor ?? '#191d24',\n textBackgroundBorderColor = theme?.textBackgroundBorderColor ?? '#191d24',\n textBackgroundBorderWidth = theme?.textBackgroundBorderWidth ?? 1,\n textBackgroundBorderRadius = theme?.textBackgroundBorderRadius ?? 4,\n textBackgroundPadding = theme?.textBackgroundPadding ?? 4,\n\n areaColor = theme?.areaColor ?? '#888888',\n areaColorOpacity = theme?.areaColorOpacity ?? 0.15,\n areaBorderColor = theme?.areaBorderColor ?? '#888888',\n areaBorderRadius = theme?.areaBorderRadius ?? 4,\n areaBorderWidth = theme?.areaBorderWidth ?? 1,\n areaLineDash = theme?.areaLineDash,\n\n outerPadding = theme?.outerPadding ?? 4,\n } = annotationArea\n const textPosition: string = annotationArea.textPosition ?? defaultOptions.textPosition\n\n const dy = textPosition.includes('bottom') ? -1 * textFontSize! : 0\n\n const dataset = advancedVSeed.dataset.flat()\n const selectedData = selectorPoint ? dataset.filter((datum) => selector(datum, selectorPoint)) : []\n\n return {\n zIndex: ANNOTATION_Z_INDEX,\n regionRelative: true,\n positions: (data: Datum[], context: ICartesianSeries & { _scaleConfig?: { bandPosition?: number } }) => {\n const positionData = data.filter((item) => selectedData.some((datum) => isSubset(datum, item)))\n const xyList = positionData.map((datum) => context.dataToPosition(datum) as { x: number; y: number })\n\n const bandPosition = context?._scaleConfig?.bandPosition || 0\n\n const yAxisHelper = context.getYAxisHelper() as unknown as {\n getBandwidth: (depth?: number) => number\n getScale: () => {\n range: () => number[]\n }\n }\n const xAxisHelper = context.getXAxisHelper() as unknown as {\n getBandwidth: (depth?: number) => number\n getScale: () => {\n range: () => number[]\n }\n }\n\n if (typeof xAxisHelper?.getBandwidth === 'function') {\n const depth = context.fieldX.length ?? 0\n const xBandWidth = xAxisHelper?.getBandwidth?.(depth - 1)\n const yScale = yAxisHelper.getScale()\n const startX = Math.min(...xyList.map((item) => item.x)) - (outerPadding || 4)\n const endX = Math.max(...xyList.map((item) => item.x)) + (outerPadding || 4)\n\n const width = endX - startX + xBandWidth\n const middleX = (endX + startX) / 2 + xBandWidth * (0.5 - bandPosition)\n\n const minX = middleX - width / 2\n const maxX = middleX + width / 2\n\n const minY = Math.min(...yScale.range())\n const maxY = Math.max(...yScale.range())\n\n return [\n // 左上\n {\n x: minX,\n y: minY,\n },\n // 右上\n {\n x: maxX,\n y: minY,\n },\n // 右下\n {\n x: maxX,\n y: maxY,\n },\n // 左下\n {\n x: minX,\n y: maxY,\n },\n ]\n }\n\n if (typeof yAxisHelper?.getBandwidth === 'function') {\n const depth = context.fieldY.length ?? 0\n const yBandWidth = yAxisHelper?.getBandwidth?.(depth - 1)\n const xScale = xAxisHelper.getScale()\n\n const startY = Math.min(...xyList.map((item) => item.y)) - (outerPadding || 4)\n const endY = Math.max(...xyList.map((item) => item.y)) + (outerPadding || 4)\n const width = endY - startY + yBandWidth\n const middleY = (endY + startY) / 2 + yBandWidth * (0.5 - bandPosition)\n\n const minY = middleY - width / 2\n const maxY = middleY + width / 2\n\n const minX = Math.min(...xScale.range())\n const maxX = Math.max(...xScale.range())\n\n return [\n // 左上\n {\n x: minX,\n y: minY,\n },\n // 右上\n {\n x: maxX,\n y: minY,\n },\n // 右下\n {\n x: maxX,\n y: maxY,\n },\n // 左下\n {\n x: minX,\n y: maxY,\n },\n ]\n }\n\n return []\n },\n label: {\n position: positionMap[textPosition as 'bottom'],\n visible: true,\n text: text,\n style: {\n dy: dy,\n textAlign: textAlign,\n textBaseline: textBaseline,\n stroke: textBackgroundColor,\n lineWidth: 1,\n fill: textColor,\n fontSize: textFontSize,\n fontWeight: textFontWeight,\n },\n\n labelBackground: {\n visible: textBackgroundVisible,\n padding: textBackgroundPadding,\n style: {\n dy: dy,\n cornerRadius: textBackgroundBorderRadius ?? 4,\n fill: textBackgroundColor,\n stroke: textBackgroundBorderColor,\n lineWidth: textBackgroundBorderWidth,\n fillOpacity: 1,\n },\n },\n },\n area: {\n style: {\n visible: true,\n fill: areaColor,\n fillOpacity: areaColorOpacity,\n stroke: areaBorderColor,\n lineWidth: areaBorderWidth,\n cornerRadius: areaBorderRadius,\n lineDash: areaLineDash,\n },\n },\n }\n }) as ILineChartSpec['markArea']\n\n return {\n ...spec,\n markArea: markArea,\n }\n}\n","import type { Datum } from '@visactor/vchart'\n\nexport const defaultRegressionLineColor = (datum: Datum, ctx: any, opt: any): string | undefined => {\n const parentNode = opt.mark?._product?.parent\n if (parentNode?.attribute?.data) {\n return parentNode.attribute.data.color\n }\n return undefined\n}\n\nexport const defaultRegressionLineLabelX = (datum: any, ctx: any, opt: any) => {\n const parentNode = opt.mark?._product?.parent\n\n if (parentNode?.attribute?.data?.linePoints) {\n const points = parentNode.attribute.data.linePoints\n return points[points.length - 1]?.x\n }\n\n return undefined\n}\n\nexport const defaultRegressionLineLabelY = (datum: any, ctx: any, opt: any) => {\n const parentNode = opt.mark?._product?.parent\n\n if (parentNode?.attribute?.data?.linePoints) {\n const points = parentNode.attribute.data.linePoints\n return points[points.length - 1]?.y\n }\n\n return undefined\n}\n","import type { IBarChartSpec, ICartesianSeries, IChart, IVChart } from '@visactor/vchart'\nimport { isNullish } from 'remeda'\nimport { array, clamper, regressionPolynomial } from '@visactor/vutils'\nimport type { Datum, SpecPipe, RegressionLineConfig, LinearRegressionLine, PolynomialRegressionLine } from 'src/types'\nimport { defaultRegressionLineColor } from './common'\n\nexport const columnPolynomialRegressionLine: SpecPipe = (spec, context): Partial<IBarChartSpec> => {\n const result = { ...spec } as Partial<IBarChartSpec>\n const { advancedVSeed } = context\n const { chartType, regressionLine } = advancedVSeed\n const lineTheme = advancedVSeed.config[chartType as 'scatter']?.regressionLine as RegressionLineConfig\n\n if (!regressionLine || !regressionLine.polynomialRegressionLine) {\n return result\n }\n\n const lineList = array(regressionLine.polynomialRegressionLine)\n\n if (!result.customMark) {\n result.customMark = []\n }\n\n lineList.forEach((line, lineIndex) => {\n const theme = (lineTheme.linearRegressionLine ?? {}) as LinearRegressionLine\n const {\n color,\n lineWidth,\n lineDash,\n text,\n textColor,\n textFontSize,\n textFontWeight,\n confidenceIntervalOpacity,\n confidenceIntervalVisible = theme.confidenceIntervalVisible,\n } = line as LinearRegressionLine\n\n const childrenMarks: any[] = []\n\n ;(result.customMark as any[]).push({\n type: 'group',\n interactive: false,\n zIndex: 500,\n name: `polynomialRegressionLine-${lineIndex}`,\n style: {\n data: (datum: any, ctx: any) => {\n const vchart = ctx.vchart as IVChart\n const chart = vchart.getChart() as IChart\n const s = chart.getAllSeries()[0] as ICartesianSeries\n\n if (s) {\n const rect = s.getRegion().getLayoutRect()\n\n if (rect.width === 0 || rect.height === 0) {\n return null\n }\n\n const start = s.getRegion().getLayoutStartPoint()\n const yClamper = clamper(start.y, start.y + rect.height)\n const data = s.getViewData()?.latestData as Datum[]\n const fieldX = s.fieldX?.[0]\n const fieldY = s.fieldY?.[0]\n const xValues = s.getRawDataStatisticsByField(fieldX).values as string[]\n\n if (!fieldX || !fieldY || !data || data.length <= 2 || xValues.length <= 2) {\n return null\n }\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const { confidenceInterval, evaluateGrid } = regressionPolynomial(\n xValues.map((xVal, index: number) => {\n const filteredData = data.filter((d) => d[fieldX] === xVal)\n\n return {\n x: index,\n y: Math.max(...filteredData.map((d) => d[fieldY] as number)),\n }\n }),\n undefined,\n undefined,\n {\n degree: (line as PolynomialRegressionLine).degree ?? 2,\n },\n )\n const N = xValues.length\n const xAxisHelper = s.getXAxisHelper()\n const halfBandWidth = xAxisHelper ? xAxisHelper.getBandwidth!(0) / 2 : 0\n const lineData = evaluateGrid(N)\n const linePoints = lineData.map((datum: Datum, index: number) => {\n const d = { [fieldX]: xValues[index], [fieldY]: datum.y }\n return {\n x: s.dataToPositionX(d)! + start.x + halfBandWidth,\n y: yClamper(s.dataToPositionY(d)! + start.y),\n }\n })\n const result: {\n linePoints: { x: number; y: number }[]\n areaPoints?: { x: number; y: number; y1: number }[]\n color: string\n } = {\n linePoints,\n color: s.getOption().globalScale.getScale('color')?.scale(s.getSeriesKeys()[0]),\n }\n\n if (confidenceIntervalVisible) {\n const intervalData = confidenceInterval(N)\n\n result.areaPoints = intervalData.map((datum: Datum, index: number) => {\n const d = { [fieldX]: xValues[index], [fieldY]: datum.lower }\n return {\n x: s.dataToPositionX(d)! + start.x + halfBandWidth,\n y: yClamper(s.dataToPositionY(d)! + start.y),\n y1: yClamper(s.dataToPositionY({ [fieldY]: datum.upper })! + start.y),\n }\n })\n }\n\n return result\n }\n return null\n },\n },\n children: childrenMarks,\n })\n\n if (confidenceIntervalVisible) {\n childrenMarks.push({\n type: 'area',\n interactive: false,\n zIndex: 500,\n style: {\n lineWidth: lineWidth ?? theme.lineWidth,\n lineDash: lineDash ?? theme.lineDash,\n fillOpacity: confidenceIntervalOpacity ?? theme.confidenceIntervalOpacity,\n fill: color ?? defaultRegressionLineColor,\n points: (datum: any, ctx: any, opt: any) => {\n const parentNode = opt.mark?._product?.parent\n\n if (parentNode?.attribute?.data) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return parentNode.attribute.data.areaPoints\n }\n\n return []\n },\n },\n })\n }\n\n childrenMarks.push({\n type: 'line',\n interactive: false,\n zIndex: 500,\n style: {\n lineWidth: lineWidth ?? theme.lineWidth,\n lineDash: lineDash ?? theme.lineDash,\n stroke: color ?? defaultRegressionLineColor,\n points: (datum: any, ctx: any, opt: any) => {\n const parentNode = opt.mark?._product?.parent\n\n if (parentNode?.attribute?.data) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return parentNode.attribute.data.linePoints\n }\n\n return []\n },\n },\n })\n\n if (!isNullish(text)) {\n childrenMarks.push({\n type: 'text',\n interactive: false,\n zIndex: 500,\n style: {\n textAlign: 'end',\n fill: textColor ?? theme.textColor,\n fontSize: textFontSize ?? theme.textFontSize,\n fontWeight: textFontWeight ?? theme.textFontWeight,\n text: text,\n x: (datum: any, ctx: any, opt: any) => {\n const parentNode = opt.mark?._product?.parent\n\n if (parentNode?.attribute?.data?.linePoints) {\n const points = parentNode.attribute.data.linePoints\n return points[points.length - 1]?.x\n }\n\n return undefined\n },\n y: (datum: any, ctx: any, opt: any) => {\n const parentNode = opt.mark?._product?.parent\n\n if (parentNode?.attribute?.data?.linePoints) {\n const points = parentNode.attribute.data.linePoints\n return points[points.length - 1]?.y\n }\n\n return undefined\n },\n },\n })\n }\n })\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n initColumn,\n datasetXY,\n xBand,\n yLinear,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n pivotAdapter,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n stackInverse,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n verticalCrosshairRect,\n stackCornerRadius,\n progressive,\n colorAdapter,\n linearColor,\n colorLegend,\n colorBarStyleFill,\n pivotColorLegend,\n barMaxWidth,\n columnPolynomialRegressionLine,\n pivotAxisStyle,\n pivotTitle,\n} from '../pipes'\n\nconst column: SpecPipeline = [\n initColumn,\n stackCornerRadius,\n barMaxWidth,\n stackInverse,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairRect,\n colorAdapter(discreteLegend, colorLegend),\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n columnPolynomialRegressionLine,\n]\n\nconst pivotColumn: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initColumn,\n stackCornerRadius,\n barMaxWidth,\n stackInverse,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n pivotAxisStyle(yLinear),\n label,\n tooltip,\n verticalCrosshairRect,\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n columnPolynomialRegressionLine,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const columnSpecPipeline = [pivotAdapter(column, pivotColumn)]\n","import { columnAdvancedPipeline, columnSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerColumn = () => {\n Builder._advancedPipelineMap['column'] = columnAdvancedPipeline\n Builder._specPipelineMap['column'] = columnSpecPipeline\n}\n","import { pick } from 'remeda'\nimport { replaceNullToUndefined } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed, Config } from 'src/types'\n\nexport const pieConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const pickedConfig = pick(vseed, ['backgroundColor', 'color', 'label', 'legend', 'tooltip']) as Config['pie']\n\n const config = replaceNullToUndefined(pickedConfig)\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n","import { lineConfig } from './line'\nimport { columnConfig } from './column'\nimport { pieConfig } from './pie'\nimport { dualAxisConfig } from './dualAxis'\nimport { scatterConfig } from './scatter'\nimport { histogramConfig } from './histogram'\nimport { boxplotConfig } from './boxplot'\n\nexport { lineConfig, columnConfig, pieConfig, dualAxisConfig, scatterConfig, histogramConfig, boxplotConfig }\n\n// area\nexport const areaConfig = lineConfig\nexport const areaPercentConfig = lineConfig\n\n// bar\nexport const barConfig = columnConfig\nexport const barParallelConfig = columnConfig\nexport const barPercentConfig = columnConfig\n\n// column\nexport const columnParallelConfig = columnConfig\nexport const columnPercentConfig = columnConfig\n\n// donut, rose\nexport const donutConfig = pieConfig\nexport const roseConfig = pieConfig\nexport const roseParallelConfig = pieConfig\nexport const radarConfig = pieConfig\n\n// funnel, heatmap\nexport const funnelConfig = pieConfig\nexport const heatmapConfig = pieConfig\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n columnParallelConfig,\n markStyle,\n annotation,\n sortXBandAxis,\n sortLegend,\n encodingForColumn,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n encodingAdapter,\n defaultEncodingForColumn,\n deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const columnParallelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForColumn, buildMeasures],\n [\n encodingForColumn,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n sortXBandAxis,\n sortLegend,\n columnParallelConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport { isDeepEqual } from 'remeda'\nimport { MeasureName } from 'src/dataReshape'\nimport type { SpecPipe } from 'src/types'\n\nexport const initColumnParallel: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo, encoding } = advancedVSeed\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n const sameDimensionsMode = isDeepEqual(encoding.x, encoding.color)\n\n result.type = 'bar'\n result.direction = 'vertical'\n result.xField = [unfoldInfo.encodingX]\n\n if (!sameDimensionsMode) {\n result.xField.push(unfoldInfo.encodingDetail)\n\n if (encoding.detail?.[0] === MeasureName && encoding.y?.length === 1) {\n result.xField.pop()\n }\n }\n\n result.yField = foldInfo.measureValue\n result.seriesField = unfoldInfo.encodingColorId\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import { isNullish } from 'remeda'\nimport type { BarGapInGroup, SpecPipe } from 'src/types'\n\nexport const barGapInGroup: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const barGapInGroup = advancedVSeed.config?.[chartType as 'columnParallel']?.barGapInGroup as BarGapInGroup\n\n if (!isNullish(barGapInGroup)) {\n return {\n ...spec,\n barGapInGroup,\n }\n }\n\n return spec\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n xBand,\n yLinear,\n initColumnParallel,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n pivotIndicators,\n initPivot,\n datasetPivot,\n pivotAdapter,\n pivotDiscreteLegend,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n verticalCrosshairRect,\n stackCornerRadius,\n progressive,\n linearColor,\n colorAdapter,\n colorLegend,\n colorBarStyleFill,\n pivotColorLegend,\n barMaxWidth,\n barGapInGroup,\n pivotAxisStyle,\n pivotTitle,\n} from '../pipes'\n\nconst columnParallel: SpecPipeline = [\n initColumnParallel,\n stackCornerRadius,\n barMaxWidth,\n barGapInGroup,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n colorAdapter(discreteLegend, colorLegend),\n verticalCrosshairRect,\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotColumnParallel: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initColumnParallel,\n stackCornerRadius,\n barMaxWidth,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n pivotAxisStyle(yLinear),\n label,\n tooltip,\n verticalCrosshairRect,\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const columnParallelSpecPipeline: SpecPipeline = [pivotAdapter(columnParallel, pivotColumnParallel)]\n","import { columnParallelAdvancedPipeline, columnParallelSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerColumnParallel = () => {\n Builder._advancedPipelineMap['columnParallel'] = columnParallelAdvancedPipeline\n Builder._specPipelineMap['columnParallel'] = columnParallelSpecPipeline\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n columnPercentConfig,\n markStyle,\n annotation,\n sortXBandAxis,\n sortLegend,\n encodingForColumn,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n encodingAdapter,\n defaultEncodingForColumn,\n deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const columnPercentAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForColumn, buildMeasures],\n [\n encodingForColumn,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n sortXBandAxis,\n sortLegend,\n columnPercentConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IAreaChartSpec, IBarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const percent: SpecPipe = (spec) => {\n const result = { ...spec } as IAreaChartSpec | IBarChartSpec\n result.percent = true\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n initColumn,\n datasetXY,\n xBand,\n yLinear,\n percent,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n pivotAdapter,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n stackInverse,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n verticalCrosshairRect,\n stackCornerRadius,\n progressive,\n colorAdapter,\n linearColor,\n colorLegend,\n colorBarStyleFill,\n pivotColorLegend,\n barMaxWidth,\n pivotAxisStyle,\n pivotTitle,\n} from '../pipes'\n\nconst columnPercent: SpecPipeline = [\n initColumn,\n stackCornerRadius,\n stackInverse,\n barMaxWidth,\n colorAdapter(color, linearColor),\n backgroundColor,\n percent,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n colorAdapter(discreteLegend, colorLegend),\n verticalCrosshairRect,\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotColumnPercent: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initColumn,\n stackCornerRadius,\n stackInverse,\n barMaxWidth,\n colorAdapter(color, linearColor),\n percent,\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n pivotAxisStyle(yLinear),\n label,\n tooltip,\n verticalCrosshairRect,\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const columnPercentSpecPipeline: SpecPipeline = [pivotAdapter(columnPercent, pivotColumnPercent)]\n","import { columnPercentAdvancedPipeline, columnPercentSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerColumnPercent = () => {\n Builder._advancedPipelineMap['columnPercent'] = columnPercentAdvancedPipeline\n Builder._specPipelineMap['columnPercent'] = columnPercentSpecPipeline\n}\n","import { unique } from 'remeda'\nimport { MeasureName } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\nimport { addColorToEncoding } from './color'\n\nexport const defaultEncodingForBar: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding)\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForBar: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding, measures.length > 1)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\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) => {\n const onlyMeasureName = dimensions.length === 1 && dimensions.find((item) => item.id === MeasureName)\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.y = uniqueDimIds.slice(0, 1) // 第一个维度放置于X轴\n encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1) // 第二个之后的维度用于颜色\n encoding.detail = encoding.color\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureName) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\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[0].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 !== MeasureName)\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 !== MeasureName)\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])\n}\n","import type { AdvancedPipe, Dataset, DatasetReshapeInfo, Line } from 'src/types'\nimport { calcOrder } from './common'\n\nexport const sortYBandAxis: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { sort: sortAxis } = vseed as Line\n const { datasetReshapeInfo, dataset } = advancedVSeed as { datasetReshapeInfo: DatasetReshapeInfo; dataset: Dataset }\n const { unfoldInfo } = datasetReshapeInfo[0]\n const yField = unfoldInfo?.encodingY\n if (!sortAxis || !yField) {\n return advancedVSeed\n }\n if (!result.analysis) result.analysis = {}\n if (!result.analysis.orderMapping) result.analysis.orderMapping = {}\n\n const axisOrderResult = calcOrder(sortAxis, yField, dataset.flat(2))\n\n result.analysis.orderMapping[yField] = axisOrderResult\n\n return result\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n buildMeasures,\n pivotAdapter,\n barConfig,\n markStyle,\n annotation,\n sortYBandAxis,\n sortLegend,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n encodingForBar,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n encodingAdapter,\n defaultEncodingForBar,\n deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const barAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForBar, buildMeasures],\n [\n encodingForBar,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n sortYBandAxis,\n sortLegend,\n barConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initBar: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n result.type = 'bar'\n result.direction = 'horizontal'\n result.yField = unfoldInfo.encodingY\n result.xField = foldInfo.measureValue\n result.seriesField = unfoldInfo.encodingColorId\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { isPivotChart } from 'src/pipeline/utils'\nimport type { SpecPipe } from 'src/types'\n\nexport const datasetYX: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { analysis, datasetReshapeInfo } = advancedVSeed\n\n const { unfoldInfo } = datasetReshapeInfo[0]\n const orderMapping = analysis?.orderMapping || {}\n\n const angle = unfoldInfo.encodingAngle\n const y = unfoldInfo.encodingY\n const colorId = unfoldInfo.encodingColorId\n const id = datasetReshapeInfo[0].id\n\n const fields: Record<string, object> = {}\n if (angle) {\n fields[angle] = {\n sortIndex: 0,\n }\n }\n if (y) {\n const order = orderMapping[y]\n if (order) {\n fields[y] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[y] = {\n sortIndex: 0,\n }\n }\n }\n if (colorId) {\n const order = orderMapping[colorId]\n if (order) {\n fields[colorId] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[colorId] = {\n sortIndex: 0,\n }\n }\n }\n\n return {\n ...spec,\n data: {\n id,\n // 透视表不使用 dataValues\n values: isPivotChart(vseed) ? undefined : advancedVSeed.dataset,\n fields: fields,\n },\n } as ISpec\n}\n","import type { ISpec } from '@visactor/vchart'\nimport type { SpecPipe, XLinearAxis } from 'src/types'\nimport {\n createNumFormatter,\n isAreaPercent,\n isBarPercent,\n isColumnPercent,\n LINEAR_AXIS_INNER_OFFSET_TOP,\n} from 'src/pipeline/utils'\nimport { createLinearFormat, createLinearPercentFormat } from './format/linearFormat'\nimport { defaultTitleText } from './title/defaultTitleText'\n\nexport const xLinear: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { encoding, dimensions, measures } = advancedVSeed\n const { chartType } = vseed\n const config = advancedVSeed.config?.[chartType as 'bar']?.xAxis as XLinearAxis\n\n if (!result.axes) {\n result.axes = []\n }\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n\n zero,\n nice,\n inverse,\n max,\n min,\n log,\n logBase = 10,\n autoFormat,\n numFormat = {},\n } = config\n\n const formatter = createNumFormatter(numFormat)\n const percentFormatter = createNumFormatter({\n type: 'percent',\n })\n\n const linearAxis = {\n visible,\n type: log ? 'log' : 'linear',\n base: logBase,\n orient: 'bottom',\n nice,\n zero: log ? false : zero,\n inverse,\n max,\n min,\n label: {\n visible: label?.visible,\n formatMethod: (value: string) => {\n if (isBarPercent(vseed) || isColumnPercent(vseed) || isAreaPercent(vseed)) {\n return createLinearPercentFormat(value, autoFormat, numFormat, formatter, percentFormatter)\n }\n return createLinearFormat(value, autoFormat, numFormat, formatter)\n },\n style: {\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n },\n title: {\n visible: title?.visible,\n text: title?.titleText || defaultTitleText(measures, dimensions, encoding.x as string[]),\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n lineDash: grid?.gridLineDash,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n innerOffset: {\n right: LINEAR_AXIS_INNER_OFFSET_TOP,\n // left: LINEAR_AXIS_INNER_OFFSET_TOP,\n },\n }\n\n result.axes = [...result.axes, linearAxis] as ISpec['axes']\n\n return result\n}\n","import type { ICartesianBandAxisSpec, ISpec } from '@visactor/vchart'\nimport type { SpecPipe, XBandAxis } from 'src/types'\nimport { defaultTitleText } from './title/defaultTitleText'\n\nexport const yBand: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { measures, dimensions, encoding } = advancedVSeed\n const config = advancedVSeed.config?.[chartType as 'bar']?.yAxis as XBandAxis\n\n if (!result.axes) {\n result.axes = []\n }\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n labelAutoHide,\n labelAutoHideGap,\n labelAutoLimit,\n labelAutoLimitLength = 80,\n labelAutoRotate,\n labelAutoRotateAngleRange,\n } = config\n\n const sampling = !(labelAutoHide || labelAutoRotate || labelAutoLimit)\n\n const bandAxis = {\n visible,\n type: 'band',\n orient: 'left',\n maxWidth: labelAutoLimitLength + 60,\n sampling,\n hover: true,\n label: {\n visible: label?.visible,\n flush: true,\n containerAlign: 'right',\n space: 8,\n style: {\n maxLineWidth: labelAutoLimitLength,\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n // 防重叠相关\n minGap: labelAutoHideGap,\n autoHide: labelAutoHide,\n autoHideMethod: 'greedy',\n autoHideSeparation: labelAutoHideGap,\n autoLimit: labelAutoLimit,\n autoRotate: labelAutoRotate,\n autoRotateAngle: labelAutoRotateAngleRange,\n lastVisible: true,\n },\n title: {\n visible: title?.visible,\n text: title?.titleText || defaultTitleText(measures, dimensions, encoding.y as string[]),\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n lineDash: grid?.gridLineDash,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n paddingInner: [0.15, 0.1],\n paddingOuter: [0.075, 0.1],\n } as ICartesianBandAxisSpec\n\n result.axes = [...result.axes, bandAxis] as ISpec['axes']\n return result\n}\n","import type { ICartesianCrosshairSpec, ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const horizontalCrosshairRect: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n\n const config = advancedVSeed.config?.[chartType as 'column']?.crosshairRect\n if (!config) {\n return result\n }\n\n if (!result.crosshair) {\n result.crosshair = {}\n }\n\n const visible = config.visible || true\n const rectColor = config.rectColor || undefined\n const labelColor = config.labelColor || undefined\n const labelVisible = config.labelVisible || false\n const labelBackgroundColor = config.labelBackgroundColor || undefined\n\n const crosshair = result.crosshair as ICartesianCrosshairSpec\n crosshair.yField = {\n visible,\n line: {\n type: 'rect',\n style: {\n lineWidth: 0,\n opacity: 0.2,\n fill: rectColor,\n },\n },\n label: {\n visible: labelVisible,\n labelBackground: {\n visible: labelVisible,\n style: {\n fill: labelBackgroundColor,\n },\n },\n style: {\n fill: labelColor,\n },\n },\n }\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n initBar,\n datasetYX,\n xLinear,\n yBand,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n pivotAdapter,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotIndicatorsAsCol,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n horizontalCrosshairRect,\n stackCornerRadius,\n progressive,\n colorAdapter,\n linearColor,\n colorLegend,\n colorBarStyleFill,\n pivotColorLegend,\n barMaxWidth,\n pivotAxisStyle,\n pivotTitle,\n} from '../pipes'\n\nconst bar: SpecPipeline = [\n initBar,\n stackCornerRadius,\n barMaxWidth,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetYX,\n progressive,\n xLinear,\n yBand,\n label,\n tooltip,\n colorAdapter(discreteLegend, colorLegend),\n horizontalCrosshairRect,\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotBar: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsCol,\n datasetPivot,\n pivotIndicators([\n initBar,\n stackCornerRadius,\n barMaxWidth,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetYX,\n progressive,\n xLinear,\n pivotAxisStyle(yBand),\n label,\n tooltip,\n colorBarStyleFill(barStyle),\n horizontalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const barSpecPipeline: SpecPipeline = [pivotAdapter(bar, pivotBar)]\n","import { barAdvancedPipeline, barSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerBar = () => {\n Builder._advancedPipelineMap['bar'] = barAdvancedPipeline\n Builder._specPipelineMap['bar'] = barSpecPipeline\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n buildMeasures,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n barParallelConfig,\n markStyle,\n annotation,\n sortYBandAxis,\n sortLegend,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n encodingForBar,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n encodingAdapter,\n defaultEncodingForBar,\n deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const barParallelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForBar, buildMeasures],\n [\n encodingForBar,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n sortYBandAxis,\n sortLegend,\n barParallelConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport { isDeepEqual } from 'remeda'\nimport { MeasureName } from 'src/dataReshape'\nimport type { SpecPipe } from 'src/types'\n\nexport const initBarParallel: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo, encoding } = advancedVSeed\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n const sameDimensionsMode = isDeepEqual(encoding.y, encoding.color)\n\n result.type = 'bar'\n result.direction = 'horizontal'\n\n result.yField = [unfoldInfo.encodingY]\n\n if (!sameDimensionsMode) {\n result.yField.push(unfoldInfo.encodingDetail)\n\n if (encoding.detail?.[0] === MeasureName && encoding.x?.length === 1) {\n result.yField.pop()\n }\n }\n\n result.xField = foldInfo.measureValue\n result.seriesField = unfoldInfo.encodingColorId\n\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetYX,\n xLinear,\n yBand,\n initBarParallel,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n initPivot,\n datasetPivot,\n pivotDiscreteLegend,\n pivotIndicators,\n pivotAdapter,\n pivotIndicatorsAsCol,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n horizontalCrosshairRect,\n stackCornerRadius,\n progressive,\n linearColor,\n colorAdapter,\n colorLegend,\n colorBarStyleFill,\n pivotColorLegend,\n barMaxWidth,\n barGapInGroup,\n pivotAxisStyle,\n pivotTitle,\n} from '../pipes'\n\nconst barParallel: SpecPipeline = [\n initBarParallel,\n stackCornerRadius,\n barMaxWidth,\n barGapInGroup,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetYX,\n progressive,\n xLinear,\n yBand,\n label,\n tooltip,\n colorAdapter(discreteLegend, colorLegend),\n horizontalCrosshairRect,\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotBarParallel: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsCol,\n datasetPivot,\n pivotIndicators([\n initBarParallel,\n stackCornerRadius,\n barMaxWidth,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetYX,\n xLinear,\n pivotAxisStyle(yBand),\n label,\n tooltip,\n colorBarStyleFill(barStyle),\n horizontalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const barParallelSpecPipeline: SpecPipeline = [pivotAdapter(barParallel, pivotBarParallel)]\n","import { barParallelAdvancedPipeline, barParallelSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerBarParallel = () => {\n Builder._advancedPipelineMap['barParallel'] = barParallelAdvancedPipeline\n Builder._specPipelineMap['barParallel'] = barParallelSpecPipeline\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n buildMeasures,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n barPercentConfig,\n markStyle,\n annotation,\n sortYBandAxis,\n sortLegend,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n encodingForBar,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n encodingAdapter,\n defaultEncodingForBar,\n deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const barPercentAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForBar, buildMeasures],\n [\n encodingForBar,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n sortYBandAxis,\n sortLegend,\n barPercentConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { SpecPipeline } from 'src/types'\nimport {\n initBar,\n datasetYX,\n xLinear,\n yBand,\n percent,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n pivotAdapter,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotIndicatorsAsCol,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n horizontalCrosshairRect,\n stackCornerRadius,\n progressive,\n colorAdapter,\n linearColor,\n colorLegend,\n colorBarStyleFill,\n pivotColorLegend,\n barMaxWidth,\n pivotAxisStyle,\n pivotTitle,\n} from '../pipes'\n\nconst barPercent: SpecPipeline = [\n initBar,\n stackCornerRadius,\n barMaxWidth,\n colorAdapter(color, linearColor),\n backgroundColor,\n percent,\n datasetYX,\n progressive,\n xLinear,\n yBand,\n label,\n tooltip,\n colorAdapter(discreteLegend, colorLegend),\n horizontalCrosshairRect,\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotBarPercent: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsCol,\n datasetPivot,\n pivotIndicators([\n initBar,\n stackCornerRadius,\n barMaxWidth,\n colorAdapter(color, linearColor),\n backgroundColor,\n percent,\n datasetYX,\n xLinear,\n pivotAxisStyle(yBand),\n label,\n tooltip,\n colorBarStyleFill(barStyle),\n horizontalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const barPercentSpecPipeline: SpecPipeline = [pivotAdapter(barPercent, pivotBarPercent)]\n","import { barPercentAdvancedPipeline, barPercentSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerBarPercent = () => {\n Builder._advancedPipelineMap['barPercent'] = barPercentAdvancedPipeline\n Builder._specPipelineMap['barPercent'] = barPercentSpecPipeline\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n areaConfig,\n annotation,\n markStyle,\n sortXBandAxis,\n sortLegend,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n buildMeasures,\n encodingForLine,\n defaultMeasures,\n defaultMeasureName,\n defaultDimensions,\n encodingAdapter,\n defaultEncodingForLine,\n deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const areaAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForLine, buildMeasures],\n [\n encodingForLine,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n sortXBandAxis,\n sortLegend,\n areaConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IAreaChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from '../color/colorAdapter'\n\nexport const initArea: SpecPipe = (spec, context) => {\n const result = { ...spec } as IAreaChartSpec\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n result.type = 'area'\n result.direction = 'vertical'\n result.yField = foldInfo.measureValue\n\n result.xField = unfoldInfo.encodingX\n result.seriesField = isLinearColor(advancedVSeed, vseed) ? unfoldInfo.encodingDetail : unfoldInfo.encodingColorId\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { IAreaChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from './colorAdapter'\n\nexport const colorAreaStyleFill = (stylePipe: SpecPipe): SpecPipe => {\n return (spec, context) => {\n const result = stylePipe(spec, context) as IAreaChartSpec\n\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed, vseed)) {\n if (result?.area?.style) {\n result.area.style.fill = {\n field: unfoldInfo.encodingColor,\n scale: 'color',\n }\n }\n }\n\n return result\n }\n}\n","import type { IAreaChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { AreaStyle, Datum, LineStyle, SpecPipe } from 'src/types'\nimport { groupBy, isEmpty, isNullish } from 'remeda'\nimport { getCurveTension, getCurveType } from './curve'\n\nexport const areaStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle, datasetReshapeInfo, dataset } = advancedVSeed\n const { areaStyle, lineStyle } = markStyle\n const { unfoldInfo } = datasetReshapeInfo[0]\n const result = {\n ...spec,\n area: {\n visible: true,\n style: {},\n },\n } as IAreaChartSpec\n\n if (isNullish(areaStyle) || isEmpty(areaStyle)) {\n return result\n }\n\n const areaStyles = (Array.isArray(areaStyle) ? areaStyle : [areaStyle]) as AreaStyle[]\n const lineStyles = (Array.isArray(lineStyle) ? lineStyle : [lineStyle]) as LineStyle[]\n\n const group = unfoldInfo.encodingColorId\n\n const areaGroups = groupBy(dataset, (d) => d[group ?? ''] as string)\n\n const customMap = areaStyles.reduce<object>((result, style, index) => {\n const { areaColor, areaColorOpacity, areaVisible = true } = style\n\n const curveType = getCurveType(context.vseed, lineStyles[index]?.lineSmooth)\n const curveTension = getCurveTension(context.vseed, lineStyles[index]?.lineSmooth)\n\n return {\n ...result,\n [`custom${index + 1}`]: {\n // 优先级: 后者覆盖前者\n level: index + 1,\n filter: (datum: Datum) => {\n const lineData = areaGroups[datum[group ?? ''] as string]\n for (const d of lineData) {\n if (selector(d, style.selector)) {\n return true\n }\n }\n return false\n },\n style: {\n curveType,\n curveTension,\n visible: areaVisible,\n fill: areaColor,\n fillOpacity: areaColorOpacity,\n },\n },\n }\n }, {})\n\n return {\n ...result,\n area: {\n ...result.area,\n visible: true,\n state: {\n ...customMap,\n },\n },\n }\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n xBand,\n yLinear,\n initArea,\n stackInverse,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotAdapter,\n initPivot,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n pointStyle,\n lineStyle,\n areaStyle,\n verticalCrosshairLine,\n pointStateDimensionHover,\n datasetXY,\n progressive,\n colorAdapter,\n linearColor,\n colorLegend,\n colorPointStyleFill,\n colorLineStyleFill,\n colorAreaStyleFill,\n pivotColorLegend,\n pivotAxisStyle,\n pivotTitle,\n splitLine,\n} from '../pipes'\n\nconst area: SpecPipeline = [\n initArea,\n stackInverse,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n colorAdapter(discreteLegend, colorLegend),\n verticalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n splitLine,\n]\n\nconst pivotArea: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initArea,\n colorAdapter(color, linearColor),\n backgroundColor,\n stackInverse,\n datasetXY,\n progressive,\n xBand,\n pivotAxisStyle(yLinear),\n label,\n tooltip,\n verticalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n splitLine,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const areaSpecPipeline = [pivotAdapter(area, pivotArea)]\n","import { areaAdvancedPipeline, areaSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerArea = () => {\n Builder._advancedPipelineMap['area'] = areaAdvancedPipeline\n Builder._specPipelineMap['area'] = areaSpecPipeline\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n areaPercentConfig,\n annotation,\n markStyle,\n sortXBandAxis,\n sortLegend,\n encodingForLine,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n encodingAdapter,\n defaultEncodingForLine,\n deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const areaPercentAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForLine, buildMeasures],\n [\n encodingForLine,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n sortXBandAxis,\n sortLegend,\n areaPercentConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { SpecPipeline } from 'src/types'\nimport {\n percent,\n datasetXY,\n xBand,\n yLinear,\n initArea,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotAdapter,\n initPivot,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n stackInverse,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n pointStyle,\n lineStyle,\n areaStyle,\n verticalCrosshairLine,\n progressive,\n colorLegend,\n colorAdapter,\n linearColor,\n pivotColorLegend,\n pointStateDimensionHover,\n colorPointStyleFill,\n colorLineStyleFill,\n colorAreaStyleFill,\n pivotAxisStyle,\n pivotTitle,\n} from '../pipes'\n\nconst areaPercent: SpecPipeline = [\n initArea,\n stackInverse,\n colorAdapter(color, linearColor),\n backgroundColor,\n percent,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n colorAdapter(discreteLegend, colorLegend),\n verticalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotAreaPercent: SpecPipeline = [\n initPivot,\n\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initArea,\n stackInverse,\n colorAdapter(color, linearColor),\n backgroundColor,\n percent,\n datasetXY,\n progressive,\n xBand,\n pivotAxisStyle(yLinear),\n label,\n tooltip,\n verticalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const areaPercentSpecPipeline = [pivotAdapter(areaPercent, pivotAreaPercent)]\n","import { areaPercentAdvancedPipeline, areaPercentSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerAreaPercent = () => {\n Builder._advancedPipelineMap['areaPercent'] = areaPercentAdvancedPipeline\n Builder._specPipelineMap['areaPercent'] = areaPercentSpecPipeline\n}\n","import { unique } from 'remeda'\nimport { MeasureName } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\n\nexport const defaultEncodingForScatter: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding)\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForScatter: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n // prepare measures and dimensions\n const measures = findAllMeasures(vseedMeasures)\n\n // exist encoding condition\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n\n // encoding for modify in place\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\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 */\nconst generateDefaultDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n const dimensionsWithoutMeasureName = dimensions.filter((item) => item.id !== MeasureName)\n const uniqueDimIds = unique(dimensionsWithoutMeasureName.map((d) => d.id))\n\n encoding.detail = encoding.color\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureName) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n // color\n encoding.color = unique(dimensions.filter((item) => item.encoding === 'color').map((item) => item.id))\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 = [MeasureName]\n }\n // tooltip\n encoding.tooltip = unique(dimensions.map((item) => item.id))\n encoding.tooltip = encoding.tooltip.filter((d) => d !== MeasureName)\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 !== MeasureName)\n}\n\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.y = unique(\n measures\n .filter((item) => item.encoding === 'xAxis' || item.encoding === 'yAxis' || !item.encoding)\n .map((item) => item.id),\n )\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.y = unique(\n measures\n .filter((item) => item.encoding === 'xAxis' || item.encoding === 'yAxis' || !item.encoding)\n .map((item) => item.id),\n )\n const color = unique(measures.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (color.length > 0) {\n encoding.color = [color[0]]\n }\n\n // size\n encoding.size = unique(measures.filter((item) => item.encoding === 'size').map((item) => item.id))\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])\n}\n","import type { AdvancedPipe, MeasureGroup, Measures, MeasureTree, Scatter, ScatterMeasures } from 'src/types'\nimport { isMeasureTreeWithParentId, isMeasureTreeWithChildren } from './utils'\nimport { clone } from 'remeda'\nimport { DEFAULT_PARENT_ID } from 'src/pipeline/utils/constant'\n\nexport const buildMeasuresForScatter: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context as {\n vseed: Scatter\n }\n\n // 带Children的指标树, 不进行任何处理\n if (isMeasureTreeWithChildren(advancedVSeed.measures)) {\n return advancedVSeed\n }\n // 带parentId的指标树, 转换为带children的指标树\n if (isMeasureTreeWithParentId(advancedVSeed.measures)) {\n advancedVSeed.measures = generateMeasuresByParentId(advancedVSeed.measures as Measures)\n return advancedVSeed\n }\n\n /**\n * 既不是带Children的指标树, 也不是带parentId的指标树, 则自动生成指标\n */\n\n const scatterMeasures = vseed.scatterMeasures\n ? clone(vseed.scatterMeasures)\n : basicMeasuresToScatterMeasures(advancedVSeed.measures || [])\n advancedVSeed.measures = scatterMeasuresToMeasureTree(scatterMeasures)\n\n return advancedVSeed\n}\n\nconst basicMeasuresToScatterMeasures = (basicMeasures: Measures): ScatterMeasures => {\n const yMeasures: Measures = []\n const xMeasures: Measures = []\n\n for (let index = 0; index < basicMeasures.length; index++) {\n const item = basicMeasures[index]\n const encoding = Array.isArray(item.encoding) ? item.encoding : [item.encoding]\n const isYAxis = encoding.includes('yAxis')\n const isXAxis = encoding.includes('xAxis')\n\n if (isYAxis) {\n yMeasures.push(item)\n } else if (isXAxis) {\n xMeasures.push(item)\n } else {\n if (index !== 0) {\n yMeasures.push(item)\n } else {\n xMeasures.push(item)\n }\n }\n }\n\n if (yMeasures.length === 0 && xMeasures.length > 0) {\n yMeasures.push(xMeasures[0])\n }\n\n return [{ id: 'scatterMeasures', xMeasures, yMeasures }]\n}\n\nconst scatterMeasuresToMeasureTree = (scatterMeasures: ScatterMeasures): MeasureTree => {\n const measureTree = scatterMeasures.map((item, index): MeasureGroup => {\n const { id, xMeasures, yMeasures } = item\n const groupChildren: MeasureGroup[] = []\n\n let groupId: string = `${id}-`\n if (xMeasures) {\n const arrPrimaryMeasures = Array.isArray(xMeasures) ? xMeasures : [xMeasures]\n const alias = arrPrimaryMeasures.map((item) => item.alias || item.id).toString()\n groupId += alias\n groupChildren.push({\n id: `${index}-x`,\n alias: arrPrimaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrPrimaryMeasures,\n })\n }\n if (yMeasures) {\n const arrSecondaryMeasures = Array.isArray(yMeasures) ? yMeasures : [yMeasures]\n const alias = arrSecondaryMeasures.map((item) => item.alias || item.id).toString()\n groupId += alias\n groupChildren.push({\n id: `${index}-y`,\n alias: arrSecondaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrSecondaryMeasures,\n })\n }\n\n return {\n id: groupId,\n alias: groupId,\n children: groupChildren,\n }\n })\n\n // 只有1个散点图, 仅返回2层, vchart 绘制散点图\n if (scatterMeasures.length === 1) {\n return measureTree[0].children || []\n }\n\n // 有多个散点图, 返回3层, pivot chart 绘制组合散点图\n return measureTree\n}\n\nconst generateMeasuresByParentId = (measures: Measures) => {\n const scatterMeasures: ScatterMeasures = []\n\n measures.forEach((item) => {\n const id = item.parentId || DEFAULT_PARENT_ID\n\n if (!scatterMeasures.find((d) => d.id === id)) {\n scatterMeasures.push({\n id,\n yMeasures: [],\n xMeasures: [],\n })\n }\n const scatterChart = scatterMeasures.find((d) => d.id === id)\n if (!scatterChart || !Array.isArray(scatterChart.yMeasures) || !Array.isArray(scatterChart.xMeasures)) {\n return\n }\n\n const encoding = Array.isArray(item.encoding) ? item.encoding : [item.encoding].filter(Boolean)\n const isX = encoding.includes('xAxis')\n const isY = encoding.includes('yAxis')\n const isEmpty = !encoding.length\n if (isY) {\n scatterChart.yMeasures.push(item)\n } else if (isX) {\n scatterChart.xMeasures.push(item)\n } else if (isEmpty) {\n if (scatterChart.yMeasures.length !== 0) {\n scatterChart.yMeasures.push(item)\n } else {\n scatterChart.xMeasures.push(item)\n }\n }\n })\n\n return scatterMeasuresToMeasureTree(scatterMeasures)\n}\n","import { pick } from 'remeda'\nimport { replaceNullToUndefined } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed, Config } from 'src/types'\n\nexport const scatterConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const pickedConfig = pick(vseed, [\n 'backgroundColor',\n 'color',\n 'label',\n 'legend',\n 'tooltip',\n 'xAxis',\n 'yAxis',\n 'sizeRange',\n 'size',\n 'crosshairLine',\n ]) as Config['line']\n\n const config = replaceNullToUndefined(pickedConfig)\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n","import { uniqueBy } from 'remeda'\nimport {\n dataReshapeByEncoding,\n FoldXMeasureId,\n FoldXMeasureValue,\n FoldYMeasureId,\n FoldYMeasureValue,\n} from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n Encoding,\n FoldInfo,\n MeasureGroup,\n UnfoldInfo,\n} from 'src/types'\n\nexport const reshapeWithScatterEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed as ColumnParallel\n const { dimensions = [], measures = [], encoding, chartType } = advancedVSeed\n\n if (measures.length > 2) {\n throw new Error('measures can not be more than 2 groups in scatter')\n }\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const datasets: Dataset[] = []\n const xMeasures = measures[0] as MeasureGroup\n const yMeasures = (measures[1] || xMeasures) as MeasureGroup\n\n if (xMeasures && xMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (d) => d.id),\n uniqueBy(xMeasures.children, (d) => d.id),\n encoding as Encoding,\n {\n foldMeasureValue: FoldXMeasureValue,\n foldMeasureId: FoldXMeasureId,\n colorItemAsId: true,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n },\n )\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n if (yMeasures && yMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n datasets[0],\n uniqueBy(dimensions, (d) => d.id),\n uniqueBy(yMeasures.children, (d) => d.id),\n encoding as Encoding,\n {\n foldMeasureValue: FoldYMeasureValue,\n foldMeasureId: FoldYMeasureId,\n colorItemAsId: true,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n },\n )\n\n datasets[0] = newDataset\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n const unfoldInfo: UnfoldInfo = {\n ...unfoldInfoList[0],\n colorItems: unfoldInfoList.flatMap((d) => d.colorItems),\n colorIdMap: unfoldInfoList.reduce((prev, cur) => ({ ...prev, ...cur.colorIdMap }), {}),\n }\n\n return {\n ...result,\n dataset: datasets[0],\n\n datasetReshapeInfo: [\n {\n id: String(chartType),\n index: 0,\n foldInfo: foldInfoList[0],\n foldInfoList: foldInfoList,\n unfoldInfo: unfoldInfo,\n },\n ],\n }\n}\n","import { dataReshapeByEncoding, FoldXMeasureValue, FoldYMeasureValue } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport { measureDepth } from 'src/pipeline/utils'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Encoding,\n FoldInfo,\n MeasureGroup,\n UnfoldInfo,\n} from 'src/types'\n\nexport const pivotReshapeWithScatterEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed as ColumnParallel\n const { dimensions = [], measures = [], encoding, chartType } = advancedVSeed\n\n const measureGroups: Array<MeasureGroup[]> = []\n\n const depth = measureDepth(measures)\n if (depth === 3) {\n measures.forEach((measure: MeasureGroup) => {\n measureGroups.push(measure.children as unknown as MeasureGroup[])\n })\n } else if (depth === 2) {\n measureGroups.push(measures)\n }\n\n const datasetList: Dataset[] = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n measureGroups.forEach((measures: MeasureGroup[], index) => {\n if (measures.length > 2) {\n throw new Error('measures can not be more than 2 groups in scatter')\n }\n\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const datasets: Dataset[] = []\n const xMeasures = measures[0]\n const yMeasures = measures[1] || xMeasures\n\n if (xMeasures && xMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(dataset, dimensions, xMeasures.children, encoding as Encoding, {\n foldMeasureValue: `${FoldXMeasureValue}${index}`,\n colorItemAsId: true,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n })\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n if (yMeasures && yMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(dataset, dimensions, yMeasures.children, encoding as Encoding, {\n foldMeasureValue: `${FoldYMeasureValue}${index}`,\n colorItemAsId: true,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n })\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n const unfoldInfo: UnfoldInfo = {\n ...unfoldInfoList[0],\n colorItems: unfoldInfoList.flatMap((d) => d.colorItems),\n colorIdMap: unfoldInfoList.reduce((prev, cur) => ({ ...prev, ...cur.colorIdMap }), {}),\n }\n\n const reshapeInfo = {\n id: `${chartType}-${index}`,\n index,\n foldInfo: foldInfoList[0],\n foldInfoList: foldInfoList,\n unfoldInfo: unfoldInfo,\n }\n\n datasetReshapeInfo.push(reshapeInfo)\n datasetList.push(datasets[0].map((d, index) => ({ ...d, ...(datasets[1]?.[index] || {}) })))\n })\n\n return {\n ...result,\n dataset: datasetList,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n annotation,\n markStyle,\n scatterConfig,\n encodingForScatter,\n buildMeasuresForScatter,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n encodingAdapter,\n defaultEncodingForScatter,\n deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n regressionLine,\n} from '../pipes'\nimport { reshapeWithScatterEncoding } from '../pipes/reshape/reshapeWithScatterEncoding'\nimport { pivotReshapeWithScatterEncoding } from '../pipes/reshape/pivotReshapeWithScatterEncoding'\n\nexport const scatterAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForScatter, buildMeasuresForScatter],\n [\n encodingForScatter,\n buildMeasuresForScatter,\n deleteEncodingForMeasure(['tooltip', 'label', 'size']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithScatterEncoding], [pivotReshapeWithScatterEncoding]),\n\n scatterConfig,\n theme,\n markStyle,\n annotation,\n regressionLine,\n]\n","import type { IScatterChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initScatter: SpecPipe = (spec, context) => {\n const result = { ...spec } as IScatterChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo, foldInfoList } = datasetReshapeInfo[0]\n\n result.type = 'scatter'\n result.direction = 'vertical'\n result.xField = foldInfoList?.[0].measureValue\n if (foldInfoList?.[1]) {\n result.yField = foldInfoList[1].measureValue\n }\n\n result.seriesField = unfoldInfo.encodingColorId\n\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { isPivotChart } from 'src/pipeline/utils'\nimport type { SpecPipe } from 'src/types'\n\nexport const datasetScatter: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const id = datasetReshapeInfo[0].id\n\n const fields: Record<string, object> = {}\n\n return {\n ...spec,\n data: {\n id,\n // 透视表不使用 dataValues\n values: isPivotChart(vseed) ? undefined : advancedVSeed.dataset.flat(),\n fields: fields,\n },\n } as ISpec\n}\n","import type { IScatterChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const scatterSize: SpecPipe = (spec, context) => {\n const result = { ...spec } as IScatterChartSpec\n const { advancedVSeed } = context\n const { chartType, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as {\n sizeRange: number | number[]\n size?: number | number[]\n }\n const hasSizeEncoding = encoding?.size?.[0]\n if (!hasSizeEncoding) {\n return result\n }\n\n const size = baseConfig.size ?? baseConfig.sizeRange\n\n result.size = {\n type: 'linear',\n range: Array.isArray(size) ? size : [size, size],\n } as IScatterChartSpec['size']\n\n result.sizeField = encoding?.size?.[0] || undefined\n\n return result\n}\n","import type { IScatterChartSpec } from '@visactor/vchart'\nimport type { Encoding, FoldInfo, Label, SpecPipe } from 'src/types'\nimport { buildLabel } from './label'\n\nexport const labelScatter: SpecPipe = (spec, context) => {\n const result = { ...spec } as IScatterChartSpec\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { chartType, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { label: Label }\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n\n const { label } = baseConfig\n\n result.label = buildLabel(\n label,\n vseed.measures,\n vseed.dimensions,\n advancedVSeed.dimensions,\n advancedVSeed.measures,\n encoding as Encoding,\n foldInfoList,\n ) as unknown as IScatterChartSpec['label']\n\n return result\n}\n","import { uniqueBy } from 'remeda'\nimport { createFormatterByMeasure, findAllMeasures, findMeasureById } from '../../../../utils'\nimport type { Datum, Dimensions, FoldInfo, Locale, Measures, SpecPipe, Tooltip, UnfoldInfo } from 'src/types'\nimport { ORIGINAL_DATA } from 'src/dataReshape'\n\nexport const tooltipScatter: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n const { foldInfoList } = datasetReshapeInfo[0] as unknown as {\n foldInfoList: FoldInfo[]\n unfoldInfo: UnfoldInfo\n }\n\n result.tooltip = {\n visible: enable,\n\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(\n encoding.tooltip || [],\n dimensions,\n findAllMeasures(vseed.measures),\n locale,\n foldInfoList,\n ),\n },\n dimension: {\n visible: false,\n },\n }\n return result\n}\n\nexport const createMarkContent = (\n tooltip: string[],\n dimensions: Dimensions,\n measures: Measures,\n locale: Locale,\n foldInfoList: FoldInfo[],\n) => {\n const dims = uniqueBy(\n dimensions.filter((item) => tooltip.includes(item.id)),\n (item) => item.id,\n )\n const meas = uniqueBy(\n measures.filter((item) => tooltip.includes(item.id)),\n (item) => item.id,\n )\n\n const dimContent = dims.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const datum = v as Datum\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return datum && (datum[item.id] as string)\n },\n value: (v: unknown) => {\n const datum = v as Datum\n return datum && (datum[item.id] as string)\n },\n }))\n\n const meaContent = meas.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias || item.id,\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const id = item.id\n if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) {\n return ''\n }\n const originalData = datum[ORIGINAL_DATA] as Datum\n const value = originalData[id] as string | number\n const measure = findMeasureById(measures, id)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }))\n\n const foldMeaContent = foldInfoList.map((foldInfo) => {\n return {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: Object.values(foldInfo.foldMap)[0],\n value: (v: unknown) => {\n const { measureId, measureValue } = foldInfo\n\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }\n })\n return [...dimContent, ...foldMeaContent, ...meaContent]\n}\n","import type { ICartesianCrosshairSpec, ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const horizontalCrosshairLine: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n\n const config = advancedVSeed.config?.[chartType as 'line']?.crosshairLine\n if (!config) {\n return result\n }\n\n if (!result.crosshair) {\n result.crosshair = {}\n }\n\n const visible = config.visible || true\n const lineColor = config.lineColor || undefined\n const labelColor = config.labelColor || undefined\n const labelVisible = config.labelVisible || undefined\n const labelBackgroundColor = config.labelBackgroundColor || undefined\n\n const crosshair = result.crosshair as ICartesianCrosshairSpec\n crosshair.yField = {\n visible,\n line: {\n type: 'line',\n style: {\n lineWidth: 1,\n opacity: 1,\n stroke: lineColor,\n lineDash: config.lineDash ?? [4, 2],\n },\n },\n label: {\n visible: labelVisible,\n labelBackground: {\n visible: labelVisible,\n style: {\n fill: labelBackgroundColor,\n },\n },\n style: {\n fill: labelColor,\n },\n },\n }\n\n return result\n}\n","import type { ICartesianSeries, IChart, IScatterChartSpec, IVChart } from '@visactor/vchart'\nimport { isNullish } from 'remeda'\nimport {\n array,\n clamper,\n regressionLinear,\n regressionLowess,\n regressionPolynomial,\n regressionLogistic,\n} from '@visactor/vutils'\nimport type {\n Datum,\n SpecPipe,\n RegressionLineConfig,\n LinearRegressionLine,\n SpecPipelineContext,\n PolynomialRegressionLine,\n} from 'src/types'\n\nexport const generateRegressionLinePipe = (\n type: 'linearRegressionLine' | 'lowessRegressionLine' | 'polynomialRegressionLine' | 'logisticRegressionLine',\n regressionFunction: (\n arr: Datum[],\n xAccessor: (d: Datum) => number,\n yAccessor: (d: Datum) => number,\n options?: any,\n ) => {\n confidenceInterval: (N: number) => { lower: number; upper: number; x: number }[]\n evaluateGrid: (N: number) => { x: number; y: number }[]\n },\n getOptions?: (lineConfig: any) => any,\n): SpecPipe => {\n return ((spec: Partial<IScatterChartSpec>, context: SpecPipelineContext): Partial<IScatterChartSpec> => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { chartType, regressionLine } = advancedVSeed\n const lineTheme = advancedVSeed.config[chartType as 'scatter']?.regressionLine as RegressionLineConfig\n\n if (!regressionLine || !regressionLine[type]) {\n return result\n }\n\n const lineList = array(regressionLine[type])\n\n if (!result.customMark) {\n result.customMark = []\n }\n\n lineList.forEach((line, lineIndex) => {\n const theme = (lineTheme.linearRegressionLine ?? {}) as LinearRegressionLine\n const {\n color,\n lineWidth,\n lineDash,\n text,\n textColor,\n textFontSize,\n textFontWeight,\n confidenceIntervalOpacity,\n confidenceIntervalVisible = theme.confidenceIntervalVisible,\n } = line as LinearRegressionLine\n\n const childrenMarks: any[] = []\n\n ;(result.customMark as any[]).push({\n type: 'group',\n interactive: false,\n zIndex: 500,\n name: `${type}-${lineIndex}`,\n style: {\n data: (datum: any, ctx: any) => {\n const vchart = ctx.vchart as IVChart\n const chart = vchart.getChart() as IChart\n const s = chart.getAllSeries()[0] as ICartesianSeries\n\n if (s) {\n const rect = s.getRegion().getLayoutRect()\n const segments: {\n areaPoints?: { x: number; y: number; y1: number }[]\n linePoints: { x: number; y: number }[]\n color: string\n }[] = []\n\n if (rect.width === 0 || rect.height === 0) {\n return segments\n }\n\n const start = s.getRegion().getLayoutStartPoint()\n const yClamper = clamper(start.y, start.y + rect.height)\n const colorAttrOptions = s.getColorAttribute()\n const groups: (string | undefined)[] = s.getSeriesKeys()\n const data = s.getViewData()?.latestData as Datum[]\n const fieldX = s.fieldX?.[0]\n const fieldY = s.fieldY?.[0]\n\n if (!groups.length) {\n groups.push(undefined)\n }\n\n groups.forEach((group) => {\n const groupData = data.filter((d: Datum) => d[colorAttrOptions?.field] === group)\n\n if (!groupData.length) {\n return\n }\n const { confidenceInterval, evaluateGrid } = regressionFunction(\n groupData,\n (datum: Datum) => datum?.[fieldX],\n (datum: Datum) => datum?.[fieldY],\n getOptions?.(line),\n )\n const N = Math.max(3, Math.floor(groupData.length / 4))\n const mainColor = color ?? colorAttrOptions?.scale?.scale(group)\n\n const lineData = evaluateGrid(N)\n const linePoints = lineData.map((ld: Datum) => {\n const d = { [fieldX]: ld.x, [fieldY]: ld.y }\n return {\n x: s.dataToPositionX(d)! + start.x,\n y: yClamper(s.dataToPositionY(d)! + start.y),\n }\n })\n\n segments.push({\n color: mainColor,\n linePoints,\n })\n\n if (confidenceIntervalVisible) {\n const intervalData = confidenceInterval(N)\n const areaPoints = intervalData.map((datum: Datum) => {\n const d = { [fieldX]: datum.x, [fieldY]: datum.lower }\n return {\n x: s.dataToPositionX(d)! + start.x,\n y: yClamper(s.dataToPositionY(d)! + start.y),\n y1: yClamper(s.dataToPositionY({ [fieldY]: datum.upper })! + start.y),\n }\n })\n\n segments[segments.length - 1].areaPoints = areaPoints\n }\n })\n\n return segments\n }\n return []\n },\n },\n children: childrenMarks,\n })\n\n if (confidenceIntervalVisible) {\n childrenMarks.push({\n type: 'area',\n interactive: false,\n zIndex: 500,\n style: {\n lineWidth: lineWidth ?? theme.lineWidth,\n lineDash: lineDash ?? theme.lineDash,\n fillOpacity: confidenceIntervalOpacity ?? theme.confidenceIntervalOpacity,\n fill: 'red', // vrender bug,必须要设置一个全局的fill,才会绘制\n segments: (datum: any, ctx: any, opt: any) => {\n const parentNode = opt.mark?._product?.parent\n\n if (parentNode?.attribute?.data?.length) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call\n return parentNode.attribute.data.map((d: any) => {\n return {\n points: d.areaPoints ?? [],\n fill: d.color,\n }\n })\n }\n\n return []\n },\n },\n })\n }\n\n childrenMarks.push({\n type: 'line',\n interactive: false,\n zIndex: 500,\n style: {\n lineWidth: lineWidth ?? theme.lineWidth,\n lineDash: lineDash ?? theme.lineDash,\n stroke: 'red', // vrender bug,必须要设置一个全局的stroke,才会绘制\n segments: (datum: any, ctx: any, opt: any) => {\n const parentNode = opt.mark?._product?.parent\n\n if (parentNode?.attribute?.data?.length) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call\n return parentNode.attribute.data.map((d: any) => {\n return {\n points: d.linePoints,\n stroke: d.color,\n }\n })\n }\n\n return []\n },\n },\n })\n\n if (!isNullish(text)) {\n childrenMarks.push({\n type: 'text',\n interactive: false,\n zIndex: 500,\n style: {\n textAlign: 'end',\n fill: textColor ?? theme.textColor,\n fontSize: textFontSize ?? theme.textFontSize,\n fontWeight: textFontWeight ?? theme.textFontWeight,\n text: text,\n x: (datum: any, ctx: any, opt: any) => {\n const parentNode = opt.mark?._product?.parent\n\n if (parentNode?.attribute?.data?.length) {\n const point = parentNode.attribute.data[parentNode.attribute.data.length - 1].linePoints\n return point[point.length - 1]?.x\n }\n\n return undefined\n },\n y: (datum: any, ctx: any, opt: any) => {\n const parentNode = opt.mark?._product?.parent\n\n if (parentNode?.attribute?.data?.length) {\n const point = parentNode.attribute.data[parentNode.attribute.data.length - 1].linePoints\n return point[point.length - 1]?.y\n }\n\n return undefined\n },\n },\n })\n }\n })\n\n return result\n }) as SpecPipe\n}\n\nexport const linearRegressionLine: SpecPipe = generateRegressionLinePipe('linearRegressionLine', regressionLinear)\nexport const lowessRegressionLine: SpecPipe = generateRegressionLinePipe('lowessRegressionLine', regressionLowess)\nexport const polynomialRegressionLine: SpecPipe = generateRegressionLinePipe(\n 'polynomialRegressionLine',\n regressionPolynomial,\n (lineConfig: PolynomialRegressionLine) => {\n return { degree: lineConfig.degree ?? 2 }\n },\n)\nexport const logisticRegressionLine: SpecPipe = generateRegressionLinePipe('logisticRegressionLine', regressionLogistic)\n","import type { SpecPipeline } from 'src/types'\nimport {\n yLinear,\n backgroundColor,\n tooltipScatter,\n discreteLegend,\n color,\n initPivot,\n datasetPivot,\n pivotDiscreteLegend,\n pivotIndicators,\n pivotAdapter,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n pointStyle,\n verticalCrosshairLine,\n xLinear,\n horizontalCrosshairLine,\n pointStateHover,\n initScatter,\n progressive,\n datasetScatter,\n linearColor,\n colorAdapter,\n colorPointStyleFill,\n colorLegend,\n pivotColorLegend,\n labelScatter,\n scatterSize,\n linearRegressionLine,\n lowessRegressionLine,\n polynomialRegressionLine,\n logisticRegressionLine,\n pivotAxisStyle,\n pivotTitle,\n} from '../pipes'\n\nconst scatter: SpecPipeline = [\n initScatter,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetScatter,\n progressive,\n xLinear,\n yLinear,\n scatterSize,\n labelScatter,\n tooltipScatter,\n colorAdapter(discreteLegend, colorLegend),\n verticalCrosshairLine,\n horizontalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateHover,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n linearRegressionLine,\n lowessRegressionLine,\n polynomialRegressionLine,\n logisticRegressionLine,\n]\n\nconst pivotScatter: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initScatter,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetScatter,\n progressive,\n xLinear,\n pivotAxisStyle(yLinear),\n scatterSize,\n labelScatter,\n tooltipScatter,\n verticalCrosshairLine,\n horizontalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateHover,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n linearRegressionLine,\n lowessRegressionLine,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const scatterSpecPipeline: SpecPipeline = [pivotAdapter(scatter, pivotScatter)]\n","import { scatterAdvancedPipeline, scatterSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerScatter = () => {\n Builder._advancedPipelineMap['scatter'] = scatterAdvancedPipeline\n Builder._specPipelineMap['scatter'] = scatterSpecPipeline\n}\n","import { unique } from 'remeda'\nimport { MeasureName } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\nimport { addColorToEncoding } from './color'\n\nexport const defaultEncodingForDualAxis: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding)\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForDualAxis: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding, measures.length > 1)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\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) => {\n const onlyMeasureName = dimensions.length === 1 && dimensions.find((item) => item.id === MeasureName)\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.x = uniqueDimIds.slice(0, 1) // 第一个维度放置于X轴\n encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1) // 第二个之后的维度用于颜色\n encoding.detail = encoding.color\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureName) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\n // x\n encoding.x = unique(dimensions.filter((item) => item.encoding === 'xAxis').map((item) => item.id))\n if (encoding.x.length === 0) {\n encoding.x = [dimensions[0].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 !== MeasureName)\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 !== MeasureName)\n}\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.y = unique(\n measures\n .filter((item) => item.encoding === 'primaryYAxis' || item.encoding === 'secondaryYAxis' || !item.encoding)\n .map((item) => item.id),\n )\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n // y\n encoding.y = unique(\n measures\n .filter((item) => item.encoding === 'primaryYAxis' || item.encoding === 'secondaryYAxis' || !item.encoding)\n .map((item) => item.id),\n )\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])\n}\n","import type { AdvancedPipe, DualAxis, DualMeasures, MeasureGroup, Measures, MeasureTree } from 'src/types'\nimport { isMeasureTreeWithParentId, isMeasureTreeWithChildren } from './utils'\nimport { clone } from 'remeda'\nimport { DEFAULT_PARENT_ID } from 'src/pipeline/utils/constant'\n\nexport const buildMeasuresForDualAxis: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context as {\n vseed: DualAxis\n }\n\n // 带Children的指标树, 不进行任何处理\n if (isMeasureTreeWithChildren(advancedVSeed.measures)) {\n return advancedVSeed\n }\n // 带parentId的指标树, 转换为带children的指标树\n if (isMeasureTreeWithParentId(advancedVSeed.measures)) {\n advancedVSeed.measures = generateMeasuresByParentId(advancedVSeed.measures as Measures)\n return advancedVSeed\n }\n\n /**\n * 既不是带Children的指标树, 也不是带parentId的指标树, 则自动生成指标\n */\n const dualMeasures = vseed.dualMeasures\n ? clone(vseed.dualMeasures)\n : basicMeasuresToDualMeasures(advancedVSeed.measures || [])\n advancedVSeed.measures = dualMeasuresToMeasureTree(dualMeasures)\n\n return advancedVSeed\n}\n\nconst basicMeasuresToDualMeasures = (basicMeasures: Measures): DualMeasures => {\n const primaryMeasures: Measures = []\n const secondaryMeasures: Measures = []\n\n for (let index = 0; index < basicMeasures.length; index++) {\n const item = basicMeasures[index]\n const encoding = Array.isArray(item.encoding) ? item.encoding : [item.encoding]\n const isPrimaryYAxis = encoding.includes('primaryYAxis')\n const isSecondaryYAxis = encoding.includes('secondaryYAxis')\n\n if (isPrimaryYAxis) {\n primaryMeasures.push(item)\n } else if (isSecondaryYAxis) {\n secondaryMeasures.push(item)\n } else {\n if (index === 0) {\n primaryMeasures.push(item)\n } else {\n secondaryMeasures.push(item)\n }\n }\n }\n\n return [{ id: 'dualMeasures', primaryMeasures, secondaryMeasures }]\n}\n\nconst dualMeasuresToMeasureTree = (dualMeasures: DualMeasures): MeasureTree => {\n const measureTree = dualMeasures.map((item, index): MeasureGroup => {\n const { id, primaryMeasures, secondaryMeasures } = item\n const groupChildren: MeasureGroup[] = []\n\n let groupId: string = `${id}-`\n if (primaryMeasures) {\n const arrPrimaryMeasures = Array.isArray(primaryMeasures) ? primaryMeasures : [primaryMeasures]\n const alias = arrPrimaryMeasures.map((item) => item.alias || item.id).toString()\n groupId += alias\n groupChildren.push({\n id: `${index}-primary`,\n alias: arrPrimaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrPrimaryMeasures,\n })\n }\n if (secondaryMeasures) {\n const arrSecondaryMeasures = Array.isArray(secondaryMeasures) ? secondaryMeasures : [secondaryMeasures]\n const alias = arrSecondaryMeasures.map((item) => item.alias || item.id).toString()\n groupId += alias\n groupChildren.push({\n id: `${index}-secondary`,\n alias: arrSecondaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrSecondaryMeasures,\n })\n }\n\n return {\n id: groupId,\n alias: groupId,\n children: groupChildren,\n }\n })\n\n // 只有1个双轴图, 仅返回2层, vchart 绘制双轴图\n if (dualMeasures.length === 1) {\n return measureTree[0].children || []\n }\n\n // 有多个双轴图, 返回3层, pivot chart 绘制组合双轴图\n return measureTree\n}\n\nconst generateMeasuresByParentId = (measures: Measures) => {\n const dualMeasures: DualMeasures = []\n\n measures.forEach((item) => {\n const id = item.parentId || DEFAULT_PARENT_ID\n if (!dualMeasures.find((d) => d.id === id)) {\n dualMeasures.push({\n id,\n primaryMeasures: [],\n secondaryMeasures: [],\n })\n }\n\n const dualChart = dualMeasures.find((d) => d.id === id)\n if (!dualChart || !Array.isArray(dualChart.primaryMeasures) || !Array.isArray(dualChart.secondaryMeasures)) {\n return\n }\n\n const encoding = Array.isArray(item.encoding) ? item.encoding : [item.encoding].filter(Boolean)\n const isPrimary = encoding.includes('primaryYAxis')\n const isSecondary = encoding.includes('secondaryYAxis')\n const isEmpty = !item.encoding\n\n if (isPrimary) {\n dualChart.primaryMeasures.push(item)\n } else if (isSecondary) {\n dualChart.secondaryMeasures.push(item)\n } else if (isEmpty) {\n if (dualChart.primaryMeasures.length === 0) {\n dualChart.primaryMeasures.push(item)\n } else {\n dualChart.secondaryMeasures.push(item)\n }\n }\n })\n\n return dualMeasuresToMeasureTree(dualMeasures)\n}\n","import { uniqueBy } from 'remeda'\nimport { dataReshapeByEncoding, FoldPrimaryMeasureValue, FoldSecondaryMeasureValue } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n Encoding,\n FoldInfo,\n MeasureGroup,\n UnfoldInfo,\n} from 'src/types'\n\nexport const reshapeWithDualEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed as ColumnParallel\n const { dimensions = [], measures = [], encoding, chartType } = advancedVSeed\n\n if (measures.length > 2) {\n throw new Error('measures can not be more than 2 groups in dualAxis')\n }\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const datasets: Dataset[] = []\n const primaryMeasures = measures[0] as MeasureGroup\n const secondaryMeasures = (measures[1] || []) as MeasureGroup\n\n if (primaryMeasures && primaryMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(primaryMeasures.children, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: FoldPrimaryMeasureValue,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n },\n )\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n if (secondaryMeasures && secondaryMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(secondaryMeasures.children, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: FoldSecondaryMeasureValue,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n },\n )\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n const unfoldInfo: UnfoldInfo = {\n ...unfoldInfoList[0],\n colorItems: unfoldInfoList.flatMap((d) => d.colorItems),\n colorIdMap: unfoldInfoList.reduce((prev, cur) => ({ ...prev, ...cur.colorIdMap }), {}),\n }\n\n return {\n ...result,\n dataset: datasets,\n datasetReshapeInfo: [\n {\n id: String(chartType),\n index: 0,\n foldInfo: foldInfoList[0],\n foldInfoList: foldInfoList,\n unfoldInfo: unfoldInfo,\n },\n ],\n }\n}\n","import { uniqueBy } from 'remeda'\nimport { dataReshapeByEncoding, FoldPrimaryMeasureValue, FoldSecondaryMeasureValue } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport { measureDepth } from 'src/pipeline/utils'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Encoding,\n FoldInfo,\n MeasureGroup,\n UnfoldInfo,\n} from 'src/types'\n\nexport const pivotReshapeWithDualEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed as ColumnParallel\n const { dimensions = [], measures = [], encoding, chartType } = advancedVSeed\n\n const datasetList: Dataset[] = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n const measureGroups: Array<MeasureGroup[]> = []\n\n const depth = measureDepth(measures)\n if (depth === 3) {\n measures.forEach((measure: MeasureGroup) => {\n measureGroups.push(measure.children as unknown as MeasureGroup[])\n })\n } else if (depth === 2) {\n measureGroups.push(measures as unknown as MeasureGroup[])\n }\n\n measureGroups.forEach((measures: MeasureGroup[], index) => {\n if (measures.length > 2) {\n throw new Error('measures can not be more than 2 groups in dualAxis')\n }\n\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const datasets: Dataset[] = []\n const primaryMeasures = measures[0]\n const secondaryMeasures = measures[1] || []\n\n if (primaryMeasures && primaryMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(primaryMeasures.children, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n },\n )\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n if (secondaryMeasures && secondaryMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(secondaryMeasures.children, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: `${FoldSecondaryMeasureValue}${index}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n },\n )\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n const unfoldInfo: UnfoldInfo = {\n ...unfoldInfoList[0],\n colorItems: unfoldInfoList.flatMap((d) => d.colorItems),\n colorIdMap: unfoldInfoList.reduce((prev, cur) => ({ ...prev, ...cur.colorIdMap }), {}),\n }\n\n const reshapeInfo = {\n id: `${chartType}-${index}`,\n index,\n foldInfo: foldInfoList[0],\n foldInfoList: foldInfoList,\n unfoldInfo: unfoldInfo,\n }\n\n datasetReshapeInfo.push(reshapeInfo)\n datasetList.push(datasets.flat(2))\n })\n\n return {\n ...result,\n dataset: datasetList,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n","import { pick } from 'remeda'\nimport { replaceNullToUndefined } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed, Config } from 'src/types'\n\nexport const dualAxisConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const pickedConfig = pick(vseed, [\n // common\n 'backgroundColor',\n 'color',\n 'label',\n 'legend',\n 'tooltip',\n 'xAxis',\n\n // only for dualAxis\n 'dualChartType',\n 'alignTicks',\n 'primaryYAxis',\n 'secondaryYAxis',\n 'crosshairLine',\n 'crosshairRect',\n\n 'barGapInGroup',\n 'barMaxWidth',\n 'stackCornerRadius',\n ]) as Config['dualAxis']\n\n const config = replaceNullToUndefined(pickedConfig)\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n annotation,\n markStyle,\n sortXBandAxis,\n sortLegend,\n dualAxisConfig,\n encodingForDualAxis,\n reshapeWithDualEncoding,\n pivotReshapeWithDualEncoding,\n buildMeasuresForDualAxis,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n encodingAdapter,\n defaultEncodingForDualAxis,\n deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const dualAxisAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForDualAxis, buildMeasuresForDualAxis],\n [\n encodingForDualAxis,\n buildMeasuresForDualAxis,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithDualEncoding], [pivotReshapeWithDualEncoding]),\n\n sortXBandAxis,\n sortLegend,\n dualAxisConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { Spec, SpecPipe, SpecPipeline, SpecPipelineContext } from 'src/types'\nimport { execPipeline } from '../../../../utils'\nimport type { ICommonChartSpec, ILineSeriesSpec } from '@visactor/vchart'\n\nexport const series = (...args: SpecPipeline[]): SpecPipe => {\n const result = {\n type: 'common',\n padding: 0,\n region: [\n {\n clip: true,\n },\n ],\n } as ICommonChartSpec\n\n return (_, context) => {\n result.series = args.map((pipeline) => {\n return execPipeline<Spec, SpecPipelineContext>(pipeline, context, {})\n }) as ILineSeriesSpec[]\n\n return result\n }\n}\n\n/**\n * @description 双轴图的透视场景, 不能使用此pipe, 请使用series\n * 因为VTable.PivotVChart会自行解析数据, 而非VChart解析.\n */\nexport const seriesDualAxis = (...args: SpecPipeline[]): SpecPipe => {\n const result = {\n type: 'common',\n padding: 0,\n labelLayout: 'region',\n region: [\n {\n clip: true,\n },\n ],\n } as ICommonChartSpec\n\n const createDualContext = <T extends SpecPipelineContext>(context: T, index: number): T => {\n const { advancedVSeed } = context\n const dataset = advancedVSeed.dataset[index]\n return {\n ...context,\n advancedVSeed: {\n ...advancedVSeed,\n dataset: dataset,\n },\n }\n }\n\n return (_, context) => {\n result.series = args.map((pipeline, index) => {\n const seriesContext = createDualContext(context, index)\n return execPipeline<Spec, SpecPipelineContext>(pipeline, seriesContext, {})\n }) as ILineSeriesSpec[]\n\n return result\n }\n}\n","import type { IBarSeriesSpec, ILineSeriesSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from '../color/colorAdapter'\n\nexport const initDualAxisPrimary: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarSeriesSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo, foldInfoList, id } = datasetReshapeInfo[0]\n\n result.id = `${id}-primary-series`\n result.type = 'bar'\n result.direction = 'vertical'\n result.xField = unfoldInfo.encodingX\n result.seriesField = unfoldInfo.encodingColorId\n\n result.yField = foldInfoList?.[0].measureValue\n result.animation = true\n\n return result\n}\n\nexport const initDualAxisSecondary: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineSeriesSpec\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo, foldInfoList, id } = datasetReshapeInfo[0]\n\n result.id = `${id}-secondary-series`\n result.type = 'line'\n result.direction = 'vertical'\n result.xField = unfoldInfo.encodingX\n if (foldInfoList?.[1]) {\n result.yField = foldInfoList[1].measureValue\n }\n\n result.seriesField = isLinearColor(advancedVSeed, vseed) ? unfoldInfo.encodingDetail : unfoldInfo.encodingColorId\n\n result.animation = true\n\n return result\n}\n","import type { IBarSeriesSpec, ISeriesSpec } from '@visactor/vchart'\nimport { DUAL_AXIS_CHART_COLUMN_Z_INDEX, DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX } from 'src/pipeline/utils/constant'\nimport type { DualChartType, SpecPipe } from 'src/types'\n\nexport const dualChartTypePrimary: SpecPipe = (spec, context) => {\n const result = { ...spec, zIndex: DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX } as ISeriesSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { datasetReshapeInfo } = advancedVSeed\n const index = datasetReshapeInfo[0].index\n\n const config =\n advancedVSeed.config?.[chartType as 'dualAxis']?.dualChartType ||\n ({\n primary: 'column',\n secondary: 'line',\n } as DualChartType)\n\n const primary = Array.isArray(config) ? config[index].primary || config[0].primary : config.primary\n const secondary = Array.isArray(config) ? config[index].secondary || config[0].secondary : config.secondary\n const bothColumn = primary === 'column' && secondary === 'column'\n const type = bothColumn ? 'columnParallel' : primary\n switch (type) {\n case 'line': {\n result.type = 'line'\n break\n }\n case 'column': {\n result.type = 'bar'\n result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX\n break\n }\n case 'columnParallel': {\n const columnSpec = result as IBarSeriesSpec\n if (Array.isArray(columnSpec.xField)) {\n columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.encodingDetail)\n } else if (columnSpec.xField) {\n columnSpec.xField = [columnSpec.xField, datasetReshapeInfo[0].unfoldInfo.encodingDetail]\n }\n columnSpec.type = 'bar'\n result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX\n break\n }\n // @ts-expect-error 'columnPercent' 和 'areaPercent' 会改变轴值域为[0,1], VTable不支持.\n case 'columnPercent': {\n result.type = 'bar'\n result.percent = true\n result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX\n break\n }\n case 'area': {\n result.type = 'area'\n break\n }\n // @ts-expect-error 'columnPercent' 和 'areaPercent' 会改变轴值域为[0,1], VTable不支持.\n case 'areaPercent': {\n result.type = 'area'\n result.percent = true\n break\n }\n case 'scatter': {\n result.type = 'scatter'\n break\n }\n default:\n result.type = primary\n }\n\n return result\n}\n\nexport const dualChartTypeSecondary: SpecPipe = (spec, context) => {\n const result = { ...spec, zIndex: DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX } as ISeriesSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { datasetReshapeInfo } = advancedVSeed\n const config =\n advancedVSeed.config?.[chartType as 'dualAxis']?.dualChartType ||\n ({\n primary: 'column',\n secondary: 'line',\n } as DualChartType)\n\n const index = datasetReshapeInfo[0].index\n const primary = Array.isArray(config) ? config[index].primary || config[0].primary : config.primary\n const secondary = Array.isArray(config) ? config[index].secondary || config[0].secondary : config.secondary\n const bothColumn = primary === 'column' && secondary === 'column'\n const type = bothColumn ? 'columnParallel' : secondary\n\n switch (type) {\n case 'line': {\n result.type = 'line'\n break\n }\n case 'column': {\n result.type = 'bar'\n result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX\n break\n }\n case 'columnParallel': {\n const columnSpec = result as IBarSeriesSpec\n if (Array.isArray(columnSpec.xField)) {\n columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.encodingDetail)\n } else if (columnSpec.xField) {\n columnSpec.xField = [columnSpec.xField, datasetReshapeInfo[0].unfoldInfo.encodingDetail]\n }\n columnSpec.type = 'bar'\n result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX\n break\n }\n // @ts-expect-error 'columnPercent' 和 'areaPercent' 会改变轴值域为[0,1], VTable不支持.\n case 'columnPercent': {\n result.type = 'bar'\n result.percent = true\n result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX\n break\n }\n case 'area': {\n result.type = 'area'\n break\n }\n // @ts-expect-error 'columnPercent' 和 'areaPercent' 会改变轴值域为[0,1], VTable不支持.\n case 'areaPercent': {\n result.type = 'area'\n result.percent = true\n break\n }\n case 'scatter': {\n result.type = 'scatter'\n break\n }\n default:\n result.type = secondary\n }\n\n return result\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { isPivotChart } from 'src/pipeline/utils'\nimport type { SpecPipe } from 'src/types'\n\nexport const datasetPrimary: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { analysis, datasetReshapeInfo } = advancedVSeed\n const orderMapping = analysis?.orderMapping || {}\n\n const { unfoldInfo } = datasetReshapeInfo[0]\n const x = unfoldInfo.encodingX\n const colorId = unfoldInfo.encodingColorId\n const id = datasetReshapeInfo[0].id\n\n const fields: Record<string, object> = {}\n\n if (x) {\n const order = orderMapping[x]\n if (order) {\n fields[x] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[x] = {\n sortIndex: 0,\n }\n }\n }\n\n if (colorId) {\n const order = orderMapping[colorId]\n if (order) {\n fields[colorId] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[colorId] = {\n sortIndex: 0,\n }\n }\n }\n\n return {\n ...spec,\n data: {\n id: `${id}-primary-dataset`,\n // 透视表不使用 dataValues\n values: isPivotChart(vseed) ? undefined : advancedVSeed.dataset,\n fields: fields,\n },\n } as ISpec\n}\n\nexport const datasetSecondary: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { analysis, datasetReshapeInfo } = advancedVSeed\n const orderMapping = analysis?.orderMapping || {}\n\n const { unfoldInfo } = datasetReshapeInfo[0]\n const x = unfoldInfo.encodingX\n const colorId = unfoldInfo.encodingColorId\n const id = datasetReshapeInfo[0].id\n\n const fields: Record<string, object> = {}\n\n if (x) {\n const order = orderMapping[x]\n if (order) {\n fields[x] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[x] = {\n sortIndex: 0,\n }\n }\n }\n\n if (colorId) {\n const order = orderMapping[colorId]\n if (order) {\n fields[colorId] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[colorId] = {\n sortIndex: 0,\n }\n }\n }\n\n return {\n ...spec,\n data: {\n id: `${id}-secondary-dataset`,\n // 透视表不使用 dataValues\n values: isPivotChart(vseed) ? undefined : advancedVSeed.dataset,\n fields: fields,\n },\n } as ISpec\n}\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport type { Encoding, FoldInfo, Label, SpecPipe } from 'src/types'\nimport { buildLabel } from './label'\nimport { DUAL_AXIS_LABEL_Z_INDEX } from 'src/pipeline/utils/constant'\n\nexport const labelPrimary: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo, encoding } = advancedVSeed\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { label: Label }\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n result.label = buildLabel(\n baseConfig.label,\n vseed.measures,\n vseed.dimensions,\n advancedVSeed.dimensions,\n advancedVSeed.measures,\n encoding as Encoding,\n [foldInfoList[0]],\n ) as unknown as ILineChartSpec['label']\n ;(result.label as any)!.zIndex = DUAL_AXIS_LABEL_Z_INDEX\n return result\n}\n\nexport const labelSecondary: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo, encoding } = advancedVSeed\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { label: Label }\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n\n result.label = buildLabel(\n baseConfig.label,\n vseed.measures,\n vseed.dimensions,\n advancedVSeed.dimensions,\n advancedVSeed.measures,\n encoding as Encoding,\n [foldInfoList[1]],\n ) as unknown as ILineChartSpec['label']\n ;(result.label as any)!.zIndex = DUAL_AXIS_LABEL_Z_INDEX\n return result\n}\n","import { isNullish } from 'remeda'\nimport { createDimensionContent, createMarkContent } from './tooltip'\nimport type { FoldInfo, SpecPipe, Tooltip, UnfoldInfo } from 'src/types'\nimport { findAllMeasures } from 'src/pipeline/utils'\n\nexport const tooltipPrimary: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { measures, datasetReshapeInfo, chartType, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n const unfoldInfo = datasetReshapeInfo[0].unfoldInfo\n\n result.tooltip = {\n visible: enable,\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(\n encoding.tooltip || [],\n dimensions,\n findAllMeasures(vseed.measures),\n foldInfoList[0],\n unfoldInfo,\n ),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(dimensions, measures, foldInfoList[0], unfoldInfo),\n },\n }\n return result\n}\n\nexport const tooltipSecondary: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { measures, datasetReshapeInfo, chartType, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n\n if (isNullish(datasetReshapeInfo[0].foldInfoList?.[1])) {\n return result\n }\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n const unfoldInfo = datasetReshapeInfo[0].unfoldInfo as UnfoldInfo\n result.tooltip = {\n visible: enable,\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(\n encoding.tooltip || [],\n dimensions,\n findAllMeasures(vseed.measures),\n foldInfoList[1],\n unfoldInfo,\n ),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(dimensions, measures, foldInfoList[1], unfoldInfo),\n },\n }\n return result\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { LINEAR_AXIS_INNER_OFFSET_TOP } from '../../../../utils/constant'\nimport { createNumFormatter } from '../../../../utils'\nimport type { SpecPipe, YLinearAxis } from 'src/types'\nimport { isEmpty, isNullish } from 'remeda'\nimport { createLinearFormat } from './format/linearFormat'\nimport { defaultTitleText } from './title/defaultTitleText'\n\nexport const yLinearPrimary: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { datasetReshapeInfo, encoding, measures, dimensions } = advancedVSeed\n const { index, id: reshapeInfoId, foldInfoList } = datasetReshapeInfo[0]\n // TODO: default config missing\n const primaryYAxis = advancedVSeed.config?.[chartType as 'dualAxis']?.primaryYAxis as YLinearAxis | YLinearAxis[]\n const yAxisConfig = Array.isArray(primaryYAxis) ? primaryYAxis[index] || primaryYAxis[0] : primaryYAxis\n const alignTicks = advancedVSeed.config?.[chartType as 'dualAxis']?.alignTicks as boolean | boolean[]\n const alignTicksConfig = Array.isArray(alignTicks) ? alignTicks[index] || alignTicks[0] : alignTicks\n\n if (isNullish(foldInfoList?.[0])) {\n return result\n }\n\n const isEmptySecondary = isEmpty(foldInfoList?.[0].foldMap)\n\n const id = `${reshapeInfoId}-primary-axis`\n const seriesIds = [`${reshapeInfoId}-primary-series`, `${reshapeInfoId}-secondary-series`]\n const seriesId = alignTicksConfig ? seriesIds : seriesIds[0]\n\n if (!result.axes) {\n result.axes = []\n }\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n\n zero,\n nice,\n inverse,\n max,\n min,\n log,\n logBase = 10,\n\n autoFormat,\n numFormat = {},\n } = yAxisConfig\n\n const formatter = createNumFormatter(numFormat)\n\n const linearAxis = {\n visible: isEmptySecondary ? false : visible,\n id,\n seriesId,\n\n type: log ? 'log' : 'linear',\n base: logBase,\n orient: 'left',\n nice,\n zero: log ? false : zero,\n inverse,\n max,\n min,\n label: {\n visible: label?.visible,\n formatMethod: (value: string) => {\n return createLinearFormat(value, autoFormat, numFormat, formatter)\n },\n style: {\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n },\n title: {\n visible: title?.visible,\n text: title?.titleText || defaultTitleText(measures, dimensions, encoding.y as string[]),\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n lineDash: grid?.gridLineDash,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n innerOffset: {\n top: LINEAR_AXIS_INNER_OFFSET_TOP,\n // bottom: LINEAR_AXIS_INNER_OFFSET_TOP,\n },\n }\n\n result.axes = [...result.axes, linearAxis] as ISpec['axes']\n\n return result\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { LINEAR_AXIS_INNER_OFFSET_TOP } from '../../../../utils/constant'\nimport { createNumFormatter } from '../../../../utils'\nimport type { SpecPipe, YLinearAxis } from 'src/types'\nimport { isEmpty, isNullish } from 'remeda'\nimport { createLinearFormat } from './format/linearFormat'\nimport { defaultTitleText } from './title/defaultTitleText'\n\nexport const yLinearSecondary: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { datasetReshapeInfo, measures, dimensions, encoding } = advancedVSeed\n const { index, id: reshapeInfoId, foldInfoList } = datasetReshapeInfo[0]\n // TODO: default config missing\n const secondaryYAxis = advancedVSeed.config?.[chartType as 'dualAxis']?.secondaryYAxis as YLinearAxis | YLinearAxis[]\n const yAxisConfig = Array.isArray(secondaryYAxis) ? secondaryYAxis[index] || secondaryYAxis[0] : secondaryYAxis\n const alignTicks = advancedVSeed.config?.[chartType as 'dualAxis']?.alignTicks as boolean | boolean[]\n const alignTicksConfig = Array.isArray(alignTicks) ? alignTicks[index] || alignTicks[0] : alignTicks\n\n if (isNullish(foldInfoList?.[1])) {\n return result\n }\n\n const isEmptySecondary = isEmpty(foldInfoList?.[1].foldMap)\n const onlySecondary = isEmpty(foldInfoList?.[0].foldMap) && !isEmptySecondary\n\n const sync = {\n axisId: `${reshapeInfoId}-primary-axis`,\n zeroAlign: true,\n }\n\n const id = `${reshapeInfoId}-secondary-axis`\n const seriesIds = [`${reshapeInfoId}-primary-series`, `${reshapeInfoId}-secondary-series`]\n const seriesId = alignTicksConfig ? seriesIds : seriesIds[1]\n if (!result.axes) {\n result.axes = []\n }\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n\n zero,\n nice,\n inverse,\n max,\n min,\n log,\n logBase = 10,\n numFormat = {},\n autoFormat,\n } = yAxisConfig\n\n const formatter = createNumFormatter(numFormat)\n\n const linearAxis = {\n visible: isEmptySecondary ? false : visible,\n id,\n seriesId,\n sync,\n type: log ? 'log' : 'linear',\n base: logBase,\n orient: 'right',\n nice,\n zero: log ? false : zero,\n inverse,\n max,\n min,\n label: {\n visible: label?.visible,\n formatMethod: (value: string) => {\n return createLinearFormat(value, autoFormat, numFormat, formatter)\n },\n style: {\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n },\n title: {\n visible: title?.visible,\n text: title?.titleText || defaultTitleText(measures, dimensions, encoding.y as string[]),\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: onlySecondary ? true : grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n lineDash: grid?.gridLineDash,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n innerOffset: {\n top: LINEAR_AXIS_INNER_OFFSET_TOP,\n // bottom: LINEAR_AXIS_INNER_OFFSET_TOP,\n },\n }\n\n result.axes = [...result.axes, linearAxis] as ISpec['axes']\n\n return result\n}\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport type { Color, SpecPipe } from 'src/types'\n\nexport const linearColorForDualAxis: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo, chartType } = advancedVSeed\n const { unfoldInfo, id } = datasetReshapeInfo[0]\n const baseConfig = advancedVSeed.config[chartType] as { color: Color }\n\n if (!baseConfig || !baseConfig.color) {\n return result\n }\n\n const { color } = baseConfig\n const { colorScheme, linearColorScheme } = color\n\n result.color = {\n type: 'linear',\n range: linearColorScheme || colorScheme || [],\n domain: [\n {\n dataId: `${id}-primary-dataset`,\n fields: [unfoldInfo.encodingColor],\n },\n {\n dataId: `${id}-secondary-dataset`,\n fields: [unfoldInfo.encodingColor],\n },\n ],\n }\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n xBand,\n backgroundColor,\n discreteLegend,\n color,\n initPivot,\n datasetPivot,\n pivotDiscreteLegend,\n pivotIndicators,\n pivotAdapter,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n pointStyle,\n lineStyle,\n pointStateDimensionHover,\n progressive,\n datasetPrimary,\n datasetSecondary,\n areaStyle,\n barStyle,\n verticalCrosshairRect,\n yLinearSecondary,\n initDualAxisPrimary,\n initDualAxisSecondary,\n labelPrimary,\n labelSecondary,\n tooltipPrimary,\n tooltipSecondary,\n yLinearPrimary,\n dualChartTypePrimary,\n dualChartTypeSecondary,\n seriesDualAxis,\n series,\n colorBarStyleFill,\n colorPointStyleFill,\n colorLineStyleFill,\n colorAreaStyleFill,\n linearColor,\n colorAdapter,\n colorLegend,\n pivotColorLegend,\n linearColorForDualAxis,\n annotationAreaBand,\n barMaxWidth,\n barGapInGroup,\n stackCornerRadius,\n pivotTitle,\n pivotAxisStyle,\n} from '../pipes'\n\nconst dualAxis: SpecPipeline = [\n seriesDualAxis(\n [\n initDualAxisPrimary,\n dualChartTypePrimary,\n datasetPrimary,\n labelPrimary,\n tooltipPrimary,\n progressive,\n\n barMaxWidth,\n barGapInGroup,\n stackCornerRadius,\n\n colorBarStyleFill(barStyle),\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n ],\n [\n initDualAxisSecondary,\n dualChartTypeSecondary,\n datasetSecondary,\n labelSecondary,\n tooltipSecondary,\n progressive,\n\n barMaxWidth,\n barGapInGroup,\n stackCornerRadius,\n\n colorBarStyleFill(barStyle),\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n ],\n ),\n xBand,\n yLinearPrimary,\n yLinearSecondary,\n\n colorAdapter(color, linearColorForDualAxis),\n colorAdapter(discreteLegend, colorLegend),\n\n backgroundColor,\n\n verticalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotDualAxis: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n series(\n [\n initDualAxisPrimary,\n dualChartTypePrimary,\n datasetPrimary,\n labelPrimary,\n tooltipPrimary,\n progressive,\n\n stackCornerRadius,\n barMaxWidth,\n barGapInGroup,\n\n colorBarStyleFill(barStyle),\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n ],\n [\n initDualAxisSecondary,\n dualChartTypeSecondary,\n datasetSecondary,\n labelSecondary,\n tooltipSecondary,\n progressive,\n\n stackCornerRadius,\n barMaxWidth,\n barGapInGroup,\n\n colorBarStyleFill(barStyle),\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n ],\n ),\n xBand,\n yLinearPrimary,\n pivotAxisStyle(yLinearSecondary),\n colorAdapter(color, linearColor),\n backgroundColor,\n verticalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const dualAxisSpecPipeline: SpecPipeline = [pivotAdapter(dualAxis, pivotDualAxis)]\n","import { dualAxisAdvancedPipeline, dualAxisSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerDualAxis = () => {\n Builder._advancedPipelineMap['dualAxis'] = dualAxisAdvancedPipeline\n Builder._specPipelineMap['dualAxis'] = dualAxisSpecPipeline\n}\n","import { unique } from 'remeda'\nimport { MeasureName } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\nimport { addColorToEncoding } from './color'\n\nexport const defaultEncodingForPie: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding)\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForPie: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding, measures.length > 1)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\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) => {\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.color = uniqueDimIds.slice(0) // 第1个之后的维度用于颜色\n encoding.detail = encoding.color\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureName) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\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 = [MeasureName]\n }\n\n // tooltip\n encoding.tooltip = unique(dimensions.map((item) => item.id))\n encoding.tooltip = encoding.tooltip.filter((d) => d !== MeasureName)\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 !== MeasureName)\n}\n\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.angle = unique(measures.filter((item) => item.encoding === 'angle' || !item.encoding).map((item) => item.id))\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n // angle\n encoding.angle = unique(measures.filter((item) => item.encoding === 'angle' || !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])\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n pieConfig,\n annotation,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n encodingForPie,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n encodingAdapter,\n defaultEncodingForPie,\n deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const pieAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForPie, buildMeasures],\n [\n encodingForPie,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n pieConfig,\n theme,\n annotation,\n]\n","import type { IPieChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initPie: SpecPipe = (spec, context) => {\n const result = { ...spec } as IPieChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n result.type = 'pie'\n result.outerRadius = 0.8\n result.innerRadius = 0\n result.valueField = foldInfo.measureValue\n result.categoryField = unfoldInfo.encodingColorId\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n\n result.animation = true\n\n return result\n}\n","import type { IPieChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from './colorAdapter'\n\nexport const colorPieStyleFill = (stylePipe: SpecPipe): SpecPipe => {\n return (spec, context) => {\n const result = stylePipe(spec, context) as IPieChartSpec\n\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed, vseed)) {\n if (result?.pie?.style) {\n result.pie.style.fill = {\n field: unfoldInfo.encodingColor,\n scale: 'color',\n }\n }\n }\n\n return result\n }\n}\n","import type { IPieChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const pieStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { dataset } = advancedVSeed\n const showStroke = dataset.length <= 30\n const config = advancedVSeed.config?.[chartType as 'pie']\n\n const result = {\n ...spec,\n pie: {\n style: {\n stroke: config?.backgroundColor ?? '#ffffff',\n lineWidth: showStroke ? 1 : 0,\n },\n },\n } as Required<IPieChartSpec>\n\n if ((spec as IPieChartSpec).outerRadius) {\n result.pie.state = {\n hover: {\n outerRadius: ((spec as IPieChartSpec).outerRadius as number) * 1.1,\n },\n }\n }\n\n if (config?.cornerRadius) {\n result.pie.style!.cornerRadius = config.cornerRadius\n }\n\n return result\n}\n","import type { IPieChartSpec } from '@visactor/vchart'\nimport type { Encoding, FoldInfo, PieLabel, SpecPipe } from 'src/types'\nimport { buildLabel } from './label'\n\nexport const labelPie: SpecPipe = (spec, context) => {\n const result = { ...spec } as IPieChartSpec\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { chartType, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { label: PieLabel }\n const foldInfo = datasetReshapeInfo[0].foldInfo as FoldInfo\n\n const { label } = baseConfig\n\n result.label = buildLabel(\n label,\n vseed.measures,\n vseed.dimensions,\n advancedVSeed.dimensions,\n advancedVSeed.measures,\n encoding as Encoding,\n [foldInfo],\n ) as unknown as IPieChartSpec['label']\n if (label.labelLayout) {\n ;(result.label as any)!.layout = {\n align: label.labelLayout,\n }\n }\n return result\n}\n","import type { SpecPipe } from 'src/types'\n\nexport const pivotHideIndicatorName: SpecPipe = (spec) => {\n return {\n ...spec,\n hideIndicatorName: true,\n }\n}\n","import type { IPieChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const addRegionPadding: SpecPipe = (spec) => {\n const result = { ...spec } as IPieChartSpec\n\n if (result.region && result.region.length > 0) {\n result.region[0].padding = 10\n }\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n backgroundColor,\n color,\n datasetXY,\n datasetPivot,\n initPie,\n initPivot,\n discreteLegend,\n pivotAdapter,\n pivotColumnDimensions,\n pivotGridStyle,\n pivotIndicators,\n pivotIndicatorsAsRow,\n pivotDiscreteLegend,\n pivotRowDimensions,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n progressive,\n pieStyle,\n colorPieStyleFill,\n linearColor,\n colorAdapter,\n colorLegend,\n pivotColorLegend,\n labelPie,\n pivotHideIndicatorName,\n pivotTitle,\n addRegionPadding,\n} from '../pipes'\n\nconst pie: SpecPipeline = [\n initPie,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n colorPieStyleFill(pieStyle),\n colorAdapter(discreteLegend, colorLegend),\n labelPie,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotPie: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n pivotHideIndicatorName,\n datasetPivot,\n pivotIndicators([\n initPie,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n colorPieStyleFill(pieStyle),\n labelPie,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n addRegionPadding,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const pieSpecPipeline: SpecPipeline = [pivotAdapter(pie, pivotPie)]\n","import { pieAdvancedPipeline, pieSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerPie = () => {\n Builder._advancedPipelineMap['pie'] = pieAdvancedPipeline\n Builder._specPipelineMap['pie'] = pieSpecPipeline\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n annotation,\n donutConfig,\n encodingForPie,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n encodingAdapter,\n defaultEncodingForPie,\n deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const donutAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForPie, buildMeasures],\n [\n encodingForPie,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n donutConfig,\n theme,\n annotation,\n]\n","import type { IPieChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initDonut: SpecPipe = (spec, context) => {\n const result = { ...spec } as IPieChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { foldInfo, unfoldInfo } = datasetReshapeInfo[0]\n\n result.type = 'pie'\n result.outerRadius = 0.8\n result.innerRadius = result.outerRadius * 0.8\n result.valueField = foldInfo.measureValue\n result.categoryField = unfoldInfo.encodingColorId\n\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n\n result.animation = true\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n backgroundColor,\n color,\n datasetXY,\n datasetPivot,\n initDonut,\n initPivot,\n discreteLegend,\n pivotAdapter,\n pivotColumnDimensions,\n pivotGridStyle,\n pivotIndicators,\n pivotIndicatorsAsRow,\n pivotDiscreteLegend,\n pivotRowDimensions,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n progressive,\n colorAdapter,\n linearColor,\n colorLegend,\n pivotColorLegend,\n pieStyle,\n colorPieStyleFill,\n labelPie,\n pivotHideIndicatorName,\n pivotTitle,\n addRegionPadding,\n} from '../pipes'\n\nconst donut: SpecPipeline = [\n initDonut,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n labelPie,\n colorPieStyleFill(pieStyle),\n colorAdapter(discreteLegend, colorLegend),\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotDonut: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n pivotHideIndicatorName,\n datasetPivot,\n pivotIndicators([\n initDonut,\n addRegionPadding,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n labelPie,\n colorPieStyleFill(pieStyle),\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const donutSpecPipeline: SpecPipeline = [pivotAdapter(donut, pivotDonut)]\n","import { donutAdvancedPipeline, donutSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerDonut = () => {\n Builder._advancedPipelineMap['donut'] = donutAdvancedPipeline\n Builder._specPipelineMap['donut'] = donutSpecPipeline\n}\n","import { unique } from 'remeda'\nimport { MeasureName } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\nimport { addColorToEncoding } from './color'\n\nexport const defaultEncodingForRose: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding)\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForRose: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n\n // encoding for modify in place\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding, measures.length > 1)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\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) => {\n const onlyMeasureName = dimensions.length === 1 && dimensions.find((item) => item.id === MeasureName)\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.angle = uniqueDimIds.slice(0, 1) // 第一个维度放置于X轴\n encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1) // 第二个之后的维度用于颜色\n encoding.detail = encoding.color\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureName) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\n // angle\n encoding.angle = unique(dimensions.filter((item) => item.encoding === 'angle').map((item) => item.id))\n if (encoding.angle.length === 0) {\n encoding.angle = [dimensions[0].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 !== MeasureName)\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 !== MeasureName)\n}\n\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.radius = unique(\n measures.filter((item) => item.encoding === 'radius' || !item.encoding).map((item) => item.id),\n )\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n // y\n encoding.radius = unique(\n measures.filter((item) => item.encoding === 'radius' || !item.encoding).map((item) => item.id),\n )\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])\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n markStyle,\n annotation,\n roseConfig,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n encodingAdapter,\n encodingForRose,\n defaultEncodingForRose,\n deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const roseAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForRose, buildMeasures],\n [\n encodingForRose,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n roseConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initRose: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRoseChartSpec\n const { advancedVSeed } = context\n const { dataset, datasetReshapeInfo } = advancedVSeed\n const { foldInfo, unfoldInfo } = datasetReshapeInfo[0]\n\n result.type = 'rose'\n\n result.angleField = unfoldInfo.encodingAngle\n result.seriesField = unfoldInfo.encodingColorId\n\n result.valueField = foldInfo.measureValue\n result.padding = 0\n result.outerRadius = 0.9\n result.innerRadius = 0\n\n const hasNegativeValue = dataset.flat().find((d) => d[foldInfo.measureValue] < 0)\n if (hasNegativeValue) {\n result.innerRadius = 0.05\n }\n\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const radiusAxis: SpecPipe = (spec) => {\n const result = { ...spec } as IRoseChartSpec\n\n if (!result.axes) {\n result.axes = []\n }\n\n result.axes.push({\n type: 'linear',\n orient: 'radius',\n visible: false,\n zero: true,\n nice: false,\n })\n\n return result\n}\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from './colorAdapter'\n\nexport const colorRoseStyleFill = (stylePipe: SpecPipe): SpecPipe => {\n return (spec, context) => {\n const result = stylePipe(spec, context) as IRoseChartSpec\n\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed, vseed)) {\n if (result?.rose?.style) {\n result.rose.style.fill = {\n field: unfoldInfo.encodingColor,\n scale: 'color',\n }\n }\n }\n\n return result\n }\n}\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const roseStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { dataset } = advancedVSeed\n const showStroke = dataset.length <= 30\n\n const result = {\n ...spec,\n rose: {\n style: {},\n },\n } as Required<IRoseChartSpec>\n\n return {\n ...result,\n rose: {\n style: {\n stroke: '#ffffff',\n lineWidth: showStroke ? 1 : 0,\n },\n state: {\n hover: {\n lineWidth: 1,\n fillOpacity: 0.6,\n },\n },\n },\n }\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n backgroundColor,\n tooltip,\n discreteLegend,\n color,\n pivotAdapter,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n stackInverse,\n verticalCrosshairRect,\n stackCornerRadius,\n initRose,\n radiusAxis,\n progressive,\n linearColor,\n colorAdapter,\n pivotColorLegend,\n colorLegend,\n roseStyle,\n colorRoseStyleFill,\n labelPie,\n pivotHideIndicatorName,\n pivotTitle,\n addRegionPadding,\n} from '../pipes'\n\nconst rose: SpecPipeline = [\n initRose,\n stackCornerRadius,\n stackInverse,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n radiusAxis,\n verticalCrosshairRect,\n colorRoseStyleFill(roseStyle),\n colorAdapter(discreteLegend, colorLegend),\n labelPie,\n tooltip,\n]\n\nconst pivotRose: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n pivotHideIndicatorName,\n datasetPivot,\n pivotIndicators([\n initRose,\n addRegionPadding,\n stackCornerRadius,\n stackInverse,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n radiusAxis,\n verticalCrosshairRect,\n colorRoseStyleFill(roseStyle),\n labelPie,\n tooltip,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const roseSpecPipeline = [pivotAdapter(rose, pivotRose)]\n","import { roseAdvancedPipeline, roseSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerRose = () => {\n Builder._advancedPipelineMap['rose'] = roseAdvancedPipeline\n Builder._specPipelineMap['rose'] = roseSpecPipeline\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n markStyle,\n annotation,\n roseParallelConfig,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n encodingAdapter,\n encodingForRose,\n defaultEncodingForRose,\n deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const roseParallelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForRose, buildMeasures],\n [\n encodingForRose,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n roseParallelConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport { isDeepEqual } from 'remeda'\nimport { MeasureName } from 'src/dataReshape'\nimport type { SpecPipe } from 'src/types'\n\nexport const initRoseParallel: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRoseChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo, dataset, encoding } = advancedVSeed\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n const sameDimensionsMode = isDeepEqual(encoding.angle, encoding.color)\n\n result.type = 'rose'\n result.angleField = [unfoldInfo.encodingAngle]\n\n if (!sameDimensionsMode) {\n result.angleField.push(unfoldInfo.encodingDetail)\n\n if (encoding.detail?.[0] === MeasureName && encoding.radius?.length === 1) {\n result.angleField.pop()\n }\n }\n\n result.valueField = foldInfo.measureValue\n result.seriesField = unfoldInfo.encodingColorId\n result.padding = 0\n\n result.outerRadius = 0.9\n result.innerRadius = 0\n\n const hasNegativeValue = dataset.flat().find((d) => d[foldInfo.measureValue] < 0)\n if (hasNegativeValue) {\n result.innerRadius = 0.05\n }\n\n result.rose = {\n style: {\n stroke: '#ffffff',\n lineWidth: 1,\n },\n state: {\n hover: {\n lineWidth: 1,\n fillOpacity: 0.6,\n },\n },\n }\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n backgroundColor,\n tooltip,\n discreteLegend,\n color,\n pivotIndicators,\n initPivot,\n datasetPivot,\n pivotAdapter,\n pivotDiscreteLegend,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n verticalCrosshairRect,\n stackCornerRadius,\n initRoseParallel,\n radiusAxis,\n progressive,\n pivotColorLegend,\n colorAdapter,\n linearColor,\n colorLegend,\n roseStyle,\n colorRoseStyleFill,\n labelPie,\n pivotHideIndicatorName,\n pivotTitle,\n addRegionPadding,\n} from '../pipes'\n\nconst roseParallel: SpecPipeline = [\n initRoseParallel,\n stackCornerRadius,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n radiusAxis,\n colorRoseStyleFill(roseStyle),\n colorAdapter(discreteLegend, colorLegend),\n labelPie,\n tooltip,\n verticalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotRoseParallel: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n pivotHideIndicatorName,\n datasetPivot,\n pivotIndicators([\n initRoseParallel,\n addRegionPadding,\n stackCornerRadius,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n radiusAxis,\n verticalCrosshairRect,\n colorRoseStyleFill(roseStyle),\n labelPie,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const roseParallelSpecPipeline: SpecPipeline = [pivotAdapter(roseParallel, pivotRoseParallel)]\n","import { roseParallelAdvancedPipeline, roseParallelSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerRoseParallel = () => {\n Builder._advancedPipelineMap['roseParallel'] = roseParallelAdvancedPipeline\n Builder._specPipelineMap['roseParallel'] = roseParallelSpecPipeline\n}\n","import { unique } from 'remeda'\nimport { MeasureName } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\nimport { addColorToEncoding } from './color'\n\nexport const defaultEncodingForRadar: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding)\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForRadar: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding, measures.length > 1)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\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) => {\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.angle = uniqueDimIds.slice(0, 1)\n encoding.color = uniqueDimIds.slice(1)\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureName) // 展示指标名称之外的所有维度\n encoding.detail = [] // 雷达图暂不支持细分\n encoding.label = []\n encoding.row = []\n encoding.column = []\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\n // angle\n encoding.angle = unique(dimensions.filter((item) => item.encoding === 'angle').map((item) => item.id))\n if (encoding.angle.length === 0) {\n encoding.angle = [dimensions[0].id]\n }\n\n // color\n addColorToEncoding(dimensions, encoding, isMultiMeasure)\n\n // detail\n encoding.detail = []\n if (encoding.detail.length === 0) {\n encoding.detail = [MeasureName]\n }\n\n // tooltip\n encoding.tooltip = unique(dimensions.map((item) => item.id))\n encoding.tooltip = encoding.tooltip.filter((d) => d !== MeasureName)\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 !== MeasureName)\n}\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.radius = unique(\n measures.filter((item) => item.encoding === 'radius' || !item.encoding).map((item) => item.id),\n )\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n // radius\n encoding.radius = unique(\n measures.filter((item) => item.encoding === 'radius' || !item.encoding).map((item) => item.id),\n )\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])\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n annotation,\n markStyle,\n sortLegend,\n radarConfig,\n encodingForRadar,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n encodingAdapter,\n defaultEncodingForRadar,\n deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const radarAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForRadar, buildMeasures],\n [\n encodingForRadar,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n // sortXBandAxis,\n sortLegend,\n radarConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IRadarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from '../color/colorAdapter'\n\nexport const initRadar: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRadarChartSpec\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n result.type = 'radar'\n result.angleField = unfoldInfo.encodingAngle\n result.radiusField = foldInfo.measureValue\n result.seriesField = isLinearColor(advancedVSeed, vseed) ? unfoldInfo.encodingDetail : unfoldInfo.encodingColorId\n\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const radarAngleAxis: SpecPipe = (spec) => {\n const result = { ...spec } as IRoseChartSpec\n\n if (!result.axes) {\n result.axes = []\n }\n\n result.axes.push({\n orient: 'angle',\n visible: true,\n zero: true,\n nice: true,\n grid: {\n visible: true,\n },\n domainLine: {\n visible: true,\n },\n tick: {\n visible: true,\n },\n })\n\n return result\n}\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const radarRadiusAxis: SpecPipe = (spec) => {\n const result = { ...spec } as IRoseChartSpec\n\n if (!result.axes) {\n result.axes = []\n }\n\n result.axes.push({\n orient: 'radius',\n visible: true,\n zero: true,\n nice: true,\n grid: {\n visible: true,\n },\n tick: {\n visible: true,\n },\n label: {\n visible: true,\n },\n domainLine: {\n visible: true,\n },\n })\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n initPivot,\n datasetPivot,\n pivotDiscreteLegend,\n pivotIndicators,\n pivotAdapter,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n pointStyle,\n lineStyle,\n verticalCrosshairLine,\n pointStateDimensionHover,\n initRadar,\n areaStyle,\n radarAngleAxis,\n radarRadiusAxis,\n progressive,\n linearColor,\n colorAdapter,\n colorLegend,\n colorPointStyleFill,\n colorLineStyleFill,\n colorAreaStyleFill,\n pivotColorLegend,\n pivotHideIndicatorName,\n pivotTitle,\n addRegionPadding,\n} from '../pipes'\n\nconst radar: SpecPipeline = [\n initRadar,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n radarAngleAxis,\n radarRadiusAxis,\n label,\n tooltip,\n colorAdapter(discreteLegend, colorLegend),\n verticalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n // annotationPoint,\n // annotationVerticalLine,\n // annotationHorizontalLine,\n // annotationArea,\n]\n\nconst pivotRadar: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n pivotHideIndicatorName,\n datasetPivot,\n pivotIndicators([\n initRadar,\n addRegionPadding,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n radarAngleAxis,\n radarRadiusAxis,\n label,\n tooltip,\n verticalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n // annotationPoint,\n // annotationVerticalLine,\n // annotationHorizontalLine,\n // annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const radarSpecPipeline: SpecPipeline = [pivotAdapter(radar, pivotRadar)]\n","import { radarAdvancedPipeline, radarSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerRadar = () => {\n Builder._advancedPipelineMap['radar'] = radarAdvancedPipeline\n Builder._specPipelineMap['radar'] = radarSpecPipeline\n}\n","import { unique } from 'remeda'\nimport { MeasureName } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\nimport { addColorToEncoding } from './color'\n\nexport const defaultEncodingForFunnel: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding)\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForFunnel: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding, measures.length > 1)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\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) => {\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.color = uniqueDimIds.slice(0) // 第0个之后的维度用于颜色\n encoding.detail = encoding.color\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureName) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\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 = [MeasureName]\n }\n\n // tooltip\n encoding.tooltip = unique(dimensions.map((item) => item.id))\n encoding.tooltip = encoding.tooltip.filter((d) => d !== MeasureName)\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 !== MeasureName)\n}\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.size = unique(measures.filter((item) => item.encoding === 'size' || !item.encoding).map((item) => item.id))\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n // size\n encoding.size = unique(measures.filter((item) => item.encoding === 'size' || !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[0]]\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])\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n annotation,\n funnelConfig,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n encodingForFunnel,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n encodingAdapter,\n defaultEncodingForFunnel,\n deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const funnelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForFunnel, buildMeasures],\n [\n encodingForFunnel,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n funnelConfig,\n theme,\n annotation,\n]\n","import type { IFunnelChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initFunnel: SpecPipe = (spec, context) => {\n const result = { ...spec } as IFunnelChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { foldInfo, unfoldInfo } = datasetReshapeInfo[0]\n\n result.type = 'funnel'\n result.valueField = foldInfo.measureValue\n result.categoryField = unfoldInfo.encodingColorId\n\n result.padding = 0\n result.isTransform = true\n result.shape = 'rect'\n result.maxSize = '75%'\n result.minSize = '10%'\n result.region = [\n {\n clip: true,\n },\n ]\n\n result.animation = true\n\n return result\n}\n","import type { IFunnelChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from './colorAdapter'\n\nexport const colorFunnelStyleFill = (stylePipe: SpecPipe): SpecPipe => {\n return (spec, context) => {\n const result = stylePipe(spec, context) as IFunnelChartSpec\n\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed, vseed)) {\n if (result?.funnel?.style) {\n result.funnel.style.fill = {\n field: unfoldInfo.encodingColor,\n scale: 'color',\n }\n }\n }\n\n return result\n }\n}\n","import type { IFunnelChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const funnelStyle: SpecPipe = (spec) => {\n const result = {\n ...spec,\n funnel: {\n style: {},\n },\n } as IFunnelChartSpec\n\n return {\n ...result,\n funnel: {\n style: {\n cornerRadius: 0,\n },\n state: {\n hover: {\n fillOpacity: 0.6,\n },\n },\n },\n }\n}\n","import type { SpecPipe } from 'src/types'\n\nexport const funnelTransformStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const config = advancedVSeed.config?.[chartType as 'funnel']?.transform\n\n return {\n ...spec,\n transform: {\n style: {\n fill: config?.backgroundColor,\n },\n },\n transformLabel: {\n visible: true,\n style: {\n fill: config?.textColor,\n },\n },\n }\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n backgroundColor,\n datasetXY,\n datasetPivot,\n initPivot,\n label,\n pivotAdapter,\n pivotColumnDimensions,\n pivotGridStyle,\n pivotIndicators,\n pivotIndicatorsAsRow,\n pivotRowDimensions,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n initFunnel,\n discreteLegend,\n color,\n funnelStyle,\n linearColor,\n colorAdapter,\n colorLegend,\n colorFunnelStyleFill,\n pivotDiscreteLegend,\n pivotColorLegend,\n pivotHideIndicatorName,\n funnelTransformStyle,\n pivotTitle,\n} from '../pipes'\n\nconst funnel: SpecPipeline = [\n initFunnel,\n backgroundColor,\n datasetXY,\n colorAdapter(color, linearColor),\n label,\n colorAdapter(discreteLegend, colorLegend),\n colorFunnelStyleFill(funnelStyle),\n funnelTransformStyle,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotFunnel: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n pivotHideIndicatorName,\n datasetPivot,\n pivotIndicators([\n initFunnel,\n backgroundColor,\n datasetXY,\n colorAdapter(color, linearColor),\n label,\n tooltip,\n colorFunnelStyleFill(funnelStyle),\n funnelTransformStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const funnelSpecPipeline: SpecPipeline = [pivotAdapter(funnel, pivotFunnel)]\n","import { funnelAdvancedPipeline, funnelSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerFunnel = () => {\n Builder._advancedPipelineMap['funnel'] = funnelAdvancedPipeline\n Builder._specPipelineMap['funnel'] = funnelSpecPipeline\n}\n","import { unique } from 'remeda'\nimport { MeasureName } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\nimport { addColorToEncoding } from './color'\n\nexport const defaultEncodingForHeatmap: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding)\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForHeatmap: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding, measures.length > 1)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\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) => {\n const onlyMeasureName = dimensions.length === 1 && dimensions.find((item) => item.id === MeasureName)\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.x = uniqueDimIds.slice(0, 1) // 第一个维度放置于X轴\n encoding.y = uniqueDimIds.slice(onlyMeasureName ? 0 : 1) // 第2个维度放置于Y轴\n encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1) // 第二个之后的维度用于颜色\n encoding.detail = encoding.color\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureName) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\n encoding.x = unique(dimensions.filter((item) => item.encoding === 'xAxis').map((item) => item.id))\n // x\n if (encoding.x.length === 0) {\n encoding.x = [dimensions[0].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 if (dimensions.length > 1) {\n encoding.y = dimensions.slice(1).map((item) => item.id)\n } else {\n encoding.y = dimensions.slice(0).map((item) => item.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 // tooltip\n encoding.tooltip = unique(dimensions.map((item) => item.id))\n encoding.tooltip = encoding.tooltip.filter((d) => d !== MeasureName)\n // label\n encoding.label = unique(dimensions.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = encoding.label.filter((d) => d !== MeasureName)\n}\n\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n const colorDims = unique(\n measures.filter((item) => item.encoding === 'color' || !item.encoding).map((item) => item.id),\n )\n if (colorDims.length > 0) {\n encoding.color = [colorDims[0]]\n }\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\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[0]]\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])\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n annotation,\n markStyle,\n sortXBandAxis,\n heatmapConfig,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n encodingForHeatmap,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n encodingAdapter,\n defaultEncodingForHeatmap,\n deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const heatmapAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForHeatmap, buildMeasures],\n [encodingForHeatmap, buildMeasures, deleteEncodingForMeasure(['tooltip', 'label']), deleteTooltipAndLabelDimension],\n ),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n sortXBandAxis,\n heatmapConfig,\n theme,\n markStyle,\n annotation,\n]\n","/* eslint-disable @typescript-eslint/no-unsafe-assignment */\nimport type { SpecPipe } from 'src/types'\nimport { colorLegend } from './colorLegend'\nimport type { Datum, IHeatmapChartSpec } from '@visactor/vchart'\nimport { DATUM_HIDE_KEY } from 'src/pipeline/utils/constant'\n\nexport const heatmapColorLegend: SpecPipe = (spec, context) => {\n const result = colorLegend(spec, context) as IHeatmapChartSpec\n\n if (result.legends) {\n ;(result.legends as any).customFilter = (data: Datum[], range: number[], key: string) => {\n const min = Math.min(range[0], range[1])\n const max = Math.max(range[0], range[1])\n return (data ?? []).map((entry: Datum) => {\n const val = entry[key]\n const isHide = val - min < -1e-6 || val - max > 1e-6\n\n entry[DATUM_HIDE_KEY] = isHide\n\n return entry\n })\n }\n }\n\n return result\n}\n","import type { IHeatmapChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from './colorAdapter'\n\nexport const colorCellStyleFill = (stylePipe: SpecPipe): SpecPipe => {\n return (spec, context) => {\n const result = stylePipe(spec, context) as IHeatmapChartSpec\n\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed, vseed)) {\n if (result?.cell?.style) {\n result.cell.style.fill = {\n field: unfoldInfo.encodingColor,\n scale: 'color',\n }\n }\n }\n\n return result\n }\n}\n","import type { IHeatmapChartSpec } from '@visactor/vchart'\nimport { DATUM_HIDE_KEY } from 'src/pipeline/utils/constant'\nimport type { SpecPipe } from 'src/types'\n\nexport const cellStyle: SpecPipe = (spec, context) => {\n const result = {\n ...spec,\n cell: {\n style: {},\n },\n } as IHeatmapChartSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const cell = advancedVSeed.config?.[chartType as 'heatmap']?.cell\n\n return {\n ...result,\n cell: {\n style: {\n visible: (datum: any) => {\n return datum?.[DATUM_HIDE_KEY] !== true\n },\n shape: 'rect',\n stroke: cell?.stroke,\n lineWidth: cell?.lineWidth ?? 1,\n },\n },\n }\n}\n","import { uniqueBy } from 'remeda'\nimport { createFormatterByMeasure, findAllMeasures, findMeasureById } from '../../../../utils'\nimport type { Datum, Dimensions, FoldInfo, Locale, Measures, SpecPipe, Tooltip, UnfoldInfo } from 'src/types'\nimport { ORIGINAL_DATA } from 'src/dataReshape'\n\nexport const tooltipHeatmap: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n const { foldInfo } = datasetReshapeInfo[0] as unknown as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n result.tooltip = {\n visible: enable,\n\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(encoding.tooltip || [], dimensions, findAllMeasures(vseed.measures), locale, foldInfo),\n },\n dimension: {\n visible: false,\n },\n }\n return result\n}\n\nexport const createMarkContent = (\n tooltip: string[],\n dimensions: Dimensions,\n measures: Measures,\n locale: Locale,\n foldInfo: FoldInfo,\n) => {\n const dims = uniqueBy(\n dimensions.filter((item) => tooltip.includes(item.id)),\n (item) => item.id,\n )\n const meas = uniqueBy(\n measures.filter((item) => tooltip.includes(item.id)),\n (item) => item.id,\n )\n\n const dimContent = dims.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const datum = v as Datum\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return datum && (datum[item.id] as string)\n },\n value: (v: unknown) => {\n const datum = v as Datum\n return datum && (datum[item.id] as string)\n },\n }))\n\n const meaContent = meas.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias || item.id,\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const id = item.id\n if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) {\n return ''\n }\n const originalData = datum[ORIGINAL_DATA] as Datum\n const value = originalData[id] as string | number\n const measure = findMeasureById(measures, id)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }))\n\n const foldMeaContent = [foldInfo].map((foldInfo) => {\n return {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const { measureId, foldMap } = foldInfo\n const datum = v as Datum\n const id = datum[measureId] as string\n return foldMap[id] || id\n },\n value: (v: unknown) => {\n const { measureId, measureValue } = foldInfo\n\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }\n })\n return [...dimContent, ...foldMeaContent, ...meaContent]\n}\n","import type { IHeatmapChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initHeatmap: SpecPipe = (spec, context) => {\n const result = { ...spec } as IHeatmapChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n result.type = 'heatmap'\n result.direction = 'vertical'\n result.xField = unfoldInfo.encodingX\n result.yField = unfoldInfo.encodingY\n result.seriesField = unfoldInfo.encodingColorId\n result.valueField = foldInfo.measureValue\n result.padding = 0\n result.axes = [\n {\n type: 'band',\n orient: 'left',\n bandPadding: 0,\n },\n {\n type: 'band',\n orient: 'bottom',\n bandPadding: 0,\n },\n ]\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n backgroundColor,\n label,\n tooltipHeatmap,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotAdapter,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n discreteLegend,\n color,\n colorAdapter,\n linearColor,\n heatmapColorLegend,\n cellStyle,\n colorCellStyleFill,\n pivotDiscreteLegend,\n pivotColorLegend,\n pivotTitle,\n pivotAxisStyle,\n} from '../pipes'\nimport { initHeatmap } from '../pipes/init/heatmap'\n\nconst heatmap: SpecPipeline = [\n initHeatmap,\n backgroundColor,\n datasetXY,\n colorAdapter(color, linearColor),\n label,\n colorAdapter(discreteLegend, heatmapColorLegend),\n colorCellStyleFill(cellStyle),\n tooltipHeatmap,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotHeatmap: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n pivotAxisStyle(initHeatmap),\n backgroundColor,\n datasetXY,\n colorAdapter(color, linearColor),\n label,\n tooltipHeatmap,\n colorCellStyleFill(cellStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const heatmapSpecPipeline: SpecPipeline = [pivotAdapter(heatmap, pivotHeatmap)]\n","import { heatmapAdvancedPipeline, heatmapSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerHeatmap = () => {\n Builder._advancedPipelineMap['heatmap'] = heatmapAdvancedPipeline\n Builder._specPipelineMap['heatmap'] = heatmapSpecPipeline\n}\n","import { pick } from 'remeda'\nimport { replaceNullToUndefined } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed, Config } from 'src/types'\n\nexport const boxplotConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const pickedConfig = pick(vseed, [\n 'backgroundColor',\n 'color',\n 'label',\n 'legend',\n 'tooltip',\n 'xAxis',\n 'yAxis',\n 'crosshairRect',\n 'whiskers',\n ]) as Config['boxPlot']\n\n const config = replaceNullToUndefined(pickedConfig)\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n","import { unique } from 'remeda'\nimport { MeasureName } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\nimport { addColorToEncoding } from './color'\n\nexport const defaultEncodingForBoxplot: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding)\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForBoxplot: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding, measures.length > 1)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\n }\n\n if (hasMeasureEncoding) {\n generateMeasureEncoding(measures, encoding)\n } else {\n generateDefaultMeasureEncoding(measures, encoding)\n }\n\n if ((!encoding.value || encoding.value.length <= 1) && encoding.color && encoding.color.length > 1) {\n encoding.color = encoding.color.filter((c) => c !== MeasureName)\n }\n\n return { ...advancedVSeed, encoding }\n}\n\n/**\n * --------------------维度--------------------\n */\nconst generateDefaultDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n const onlyMeasureName = dimensions.length === 1 && dimensions.find((item) => item.id === MeasureName)\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.x = uniqueDimIds.slice(0, 1) // 第一个维度放置于X轴\n encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1) // 第二个之后的维度用于颜色\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureName) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\n // x\n encoding.x = unique(dimensions.filter((item) => item.encoding === 'xAxis').map((item) => item.id))\n if (encoding.x.length === 0) {\n encoding.x = [dimensions[0].id]\n }\n\n // color\n addColorToEncoding(dimensions, encoding, isMultiMeasure)\n\n // tooltip\n encoding.tooltip = unique(dimensions.map((item) => item.id))\n encoding.tooltip = encoding.tooltip.filter((d) => d !== MeasureName)\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 !== MeasureName)\n}\n\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.value = unique(measures.filter((item) => item.encoding === 'value' || !item.encoding).map((item) => item.id))\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n // y\n encoding.value = unique(measures.filter((item) => item.encoding === 'value' || !item.encoding).map((item) => item.id))\n encoding.q1 = unique(measures.filter((item) => item.encoding === 'q1').map((item) => item.id))\n encoding.median = unique(measures.filter((item) => item.encoding === 'median').map((item) => item.id))\n encoding.q3 = unique(measures.filter((item) => item.encoding === 'q3').map((item) => item.id))\n encoding.min = unique(measures.filter((item) => item.encoding === 'min').map((item) => item.id))\n encoding.max = unique(measures.filter((item) => item.encoding === 'max').map((item) => item.id))\n encoding.outliers = unique(measures.filter((item) => item.encoding === 'outliers').map((item) => item.id))\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])\n}\n","import {\n FoldMeasureId,\n FoldMeasureName,\n MaxMeasureId,\n MedianMeasureId,\n MinMeasureId,\n OutliersMeasureId,\n Q1MeasureValue,\n Q3MeasureValue,\n Separator,\n unfoldDimensions,\n} from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, ColumnParallel, Dataset, Encoding } from 'src/types'\nimport { boxplot } from '@visactor/vdataset'\nimport { uniqueBy } from 'remeda'\n\nexport const reshapeWithBoxplotEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset, chartType } = vseed as ColumnParallel\n const { dimensions = [], measures = [], encoding = {}, config } = advancedVSeed\n const uniqDims = uniqueBy(dimensions, (item) => item.id)\n\n const whiskers = config?.[chartType as 'boxPlot']?.whiskers\n\n let newDatasets: any[] = []\n let foldInfo: any = {}\n let unfoldInfo: any = {}\n\n const allMeasures = findAllMeasures(measures)\n\n if (encoding.value?.length) {\n encoding.value.forEach((f) => {\n const m = allMeasures.find((m) => m.id === f)\n const boxPlotData = boxplot(dataset, {\n field: f,\n groupField: [...(encoding.x ?? []), ...(encoding.color ?? [])] as string[],\n whiskers,\n outputNames: {\n q1: Q1MeasureValue,\n q3: Q3MeasureValue,\n min: MinMeasureId,\n max: MaxMeasureId,\n median: MedianMeasureId,\n outliers: OutliersMeasureId,\n },\n }) as Dataset\n\n boxPlotData.forEach((datum) => {\n datum[FoldMeasureId] = f\n datum[FoldMeasureName] = m?.alias ?? f\n })\n\n const res = unfoldDimensions(boxPlotData, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n })\n\n res.dataset.forEach((d) => {\n newDatasets.push(d)\n })\n unfoldInfo = res.unfoldInfo\n })\n } else if (\n encoding.q1?.length &&\n encoding.q3?.length &&\n encoding.min?.length &&\n encoding.max?.length &&\n encoding.median?.length\n ) {\n const res = unfoldDimensions(dataset, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n })\n\n res.dataset.forEach((datum) => {\n datum[MaxMeasureId] = datum[encoding.max![0]]\n datum[MinMeasureId] = datum[encoding.min![0]]\n datum[Q1MeasureValue] = datum[encoding.q1![0]]\n datum[Q3MeasureValue] = datum[encoding.q3![0]]\n datum[MedianMeasureId] = datum[encoding.median![0]]\n })\n\n newDatasets = res.dataset\n foldInfo = {}\n unfoldInfo = res.unfoldInfo\n }\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: [\n {\n id: String(chartType),\n index: 0,\n foldInfo,\n unfoldInfo,\n },\n ],\n dimensions,\n measures,\n }\n}\n","import { boxplot } from '@visactor/vdataset'\nimport { uniqueBy } from 'remeda'\nimport {\n FoldMeasureId,\n FoldMeasureName,\n MaxMeasureId,\n MedianMeasureId,\n MinMeasureId,\n OutliersMeasureId,\n Q1MeasureValue,\n Q3MeasureValue,\n Separator,\n unfoldDimensions,\n} from 'src/dataReshape'\nimport type {\n AdvancedPipe,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Dimension,\n Encoding,\n MeasureGroup,\n} from 'src/types'\n\nexport const pivotReshapeWithBoxplotEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset, chartType } = vseed as ColumnParallel\n const { dimensions = [], measures = [], encoding = {}, config } = advancedVSeed\n const uniqDims = uniqueBy(dimensions, (item: Dimension) => item.id)\n const chartConfig = config?.[chartType as 'boxPlot']\n const whiskers = chartConfig?.whiskers\n\n const measureGroups: MeasureGroup[] = []\n if (measures) {\n measures.forEach((measure: MeasureGroup) => {\n if (measure.children && measure.children.length > 0) {\n measureGroups.push(measure)\n }\n })\n }\n\n const rowColumnFields = uniqueBy(\n dimensions.filter((dim: Dimension) => dim.encoding === 'row' || dim.encoding === 'column'),\n (item: Dimension) => item.id,\n )\n const datasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n measureGroups.forEach((measureGroup, index) => {\n const subMeasures = measureGroup.children\n if (!subMeasures) {\n return\n }\n const groupId = measureGroup.id\n let newDatasets: any[] = []\n let foldInfo: any = {}\n let unfoldInfo: any = {}\n\n if (encoding.value?.length) {\n encoding.value.forEach((f) => {\n const m = subMeasures.find((m) => m.id === f)\n const boxPlotData = boxplot(dataset, {\n field: f,\n groupField: [\n ...(encoding.x ?? []),\n ...(encoding.color ?? []),\n ...rowColumnFields.map((item: Dimension) => item.id),\n ] as string[],\n whiskers,\n outputNames: {\n q1: Q1MeasureValue,\n q3: Q3MeasureValue,\n min: MinMeasureId,\n max: MaxMeasureId,\n median: MedianMeasureId,\n outliers: OutliersMeasureId,\n },\n }) as Dataset\n\n boxPlotData.forEach((datum) => {\n datum[FoldMeasureId] = f\n datum[FoldMeasureName] = m?.alias ?? f\n })\n\n const res = unfoldDimensions(boxPlotData, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n })\n\n res.dataset.forEach((d) => {\n newDatasets.push(d)\n })\n unfoldInfo = res.unfoldInfo\n })\n } else if (\n encoding.q1?.length &&\n encoding.q3?.length &&\n encoding.min?.length &&\n encoding.max?.length &&\n encoding.median?.length\n ) {\n const res = unfoldDimensions(dataset, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n })\n\n res.dataset.forEach((datum) => {\n datum[MaxMeasureId] = datum[encoding.max![0]]\n datum[MinMeasureId] = datum[encoding.min![0]]\n datum[Q1MeasureValue] = datum[encoding.q1![0]]\n datum[Q3MeasureValue] = datum[encoding.q3![0]]\n datum[MedianMeasureId] = datum[encoding.median![0]]\n })\n\n newDatasets = res.dataset\n foldInfo = {}\n unfoldInfo = res.unfoldInfo\n }\n\n const reshapeInfo = {\n id: groupId,\n index,\n foldInfo,\n unfoldInfo,\n }\n datasets.push(newDatasets)\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n return {\n ...result,\n dataset: datasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n markStyle,\n annotation,\n sortLegend,\n pivotReshapeWithBoxplotEncoding,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n encodingAdapter,\n deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n defaultEncodingForBoxplot,\n encodingForBoxplot,\n reshapeWithBoxplotEncoding,\n boxplotConfig,\n} from '../pipes'\n\nexport const boxplotAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n boxplotConfig,\n\n encodingAdapter(\n [defaultEncodingForBoxplot, buildMeasures],\n [\n encodingForBoxplot,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithBoxplotEncoding], [pivotReshapeWithBoxplotEncoding]),\n\n sortLegend,\n theme,\n markStyle,\n annotation,\n]\n","import type { IBoxPlotChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isDeepEqual } from 'remeda'\nimport {\n MaxMeasureId,\n MeasureName,\n MedianMeasureId,\n MinMeasureId,\n OutliersMeasureId,\n Q1MeasureValue,\n Q3MeasureValue,\n} from 'src/dataReshape/constant'\n\nexport const initBoxplot: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBoxPlotChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo, encoding } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n result.type = 'boxPlot'\n result.minField = MinMeasureId\n result.q1Field = Q1MeasureValue\n result.medianField = MedianMeasureId\n result.maxField = MaxMeasureId\n result.q3Field = Q3MeasureValue\n result.outliersField = OutliersMeasureId\n result.xField = [unfoldInfo.encodingX]\n result.seriesField = unfoldInfo.encodingColorId\n\n const sameDimensionsMode = isDeepEqual(encoding.x, encoding.color)\n\n if (!sameDimensionsMode) {\n result.xField.push(unfoldInfo.encodingColor)\n\n if (encoding.color?.[0] === MeasureName && encoding.value?.length === 1) {\n result.xField.pop()\n }\n }\n\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import { isPivotChart } from 'src/pipeline/utils'\nimport type { SpecPipe } from 'src/types'\nimport type { ISpec } from '@visactor/vchart'\n\nexport const datasetBoxplot: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { id } = datasetReshapeInfo[0]\n\n const fields: Record<string, object> = {}\n\n return {\n ...spec,\n data: {\n id,\n // 透视表不使用 dataValues\n values: isPivotChart(vseed) ? undefined : advancedVSeed.dataset.flat(),\n fields: fields,\n },\n } as unknown as ISpec\n}\n","import { pipe, uniqueBy, isNullish } from 'remeda'\nimport { createFormatterByMeasure, findAllMeasures } from '../../../../utils'\nimport type { Dimension, Dimensions, Encoding, Spec, SpecPipe, Tooltip } from 'src/types'\nimport type { Datum, ISpec, ITooltipLinePattern, ITooltipLineActual, TooltipData } from '@visactor/vchart'\nimport {\n ColorEncoding,\n MaxMeasureId,\n MedianMeasureId,\n MinMeasureId,\n OutliersMeasureId,\n Q1MeasureValue,\n Q3MeasureValue,\n XEncoding,\n} from 'src/dataReshape'\n\nconst boxPlotMeasureKeys = [MaxMeasureId, Q3MeasureValue, MedianMeasureId, Q1MeasureValue, MinMeasureId]\nconst VCHART_OUTLIER_KEY = '__VCHART_BOX_PLOT_OUTLIER_VALUE'\n\nexport const tooltipBoxplot: SpecPipe = (spec, context): Partial<Spec> => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { chartType, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n const meas = findAllMeasures(vseed.measures)\n const valueMeasure = meas.find((item) => item.encoding === 'value' || isNullish(item.encoding))\n const defaultFormatter = valueMeasure ? createFormatterByMeasure(valueMeasure) : (v: unknown) => v\n\n result.tooltip = {\n visible: enable,\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(encoding.tooltip || [], dimensions, encoding as Encoding),\n updateContent: (prev: ITooltipLineActual[] | undefined, data: TooltipData | undefined) => {\n const datum = (data as any)?.[0]?.datum?.[0]\n\n if (!isNullish(datum?.[VCHART_OUTLIER_KEY])) {\n const tooltipItems: ITooltipLineActual[] = (prev ?? []).filter(\n (item: any) => !boxPlotMeasureKeys.includes(item.key as string),\n )\n const outerlierMeasure = meas.find((item) => item.id === OutliersMeasureId)\n const formatter = outerlierMeasure ? createFormatterByMeasure(outerlierMeasure) : defaultFormatter\n\n tooltipItems.push({\n ...(tooltipItems[0] as any),\n key: outerlierMeasure?.alias ?? OutliersMeasureId,\n value: formatter(datum?.[VCHART_OUTLIER_KEY] as number) as string,\n } as ITooltipLineActual)\n\n return tooltipItems\n }\n\n return (prev ?? []).map((entry) => {\n if (boxPlotMeasureKeys.includes((entry as any).key as string)) {\n const mea = meas.find((item) => item.id === (entry as any).key)\n const formatter = mea ? createFormatterByMeasure(mea) : defaultFormatter\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return {\n ...(entry as any),\n value: formatter(datum?.[(entry as any).key] as number) as string,\n key: mea?.alias ?? (entry as any).key,\n }\n }\n\n return entry\n }) as ITooltipLineActual[]\n },\n },\n dimension: {\n visible: false,\n },\n }\n return result as unknown as ISpec\n}\n\nconst createMarkContent = (tooltip: string[], dimensions: Dimensions, encoding: Encoding) => {\n const dims = pipe(\n dimensions.filter((item) => tooltip.includes(item.id)),\n uniqueBy((item: Dimension) => item.id),\n uniqueBy((item: Dimension) => item.alias),\n )\n\n const dimContent = dims.map((item: Dimension) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias ?? item.id,\n value: (datum: Datum | undefined) => {\n if (!isNullish(datum?.[VCHART_OUTLIER_KEY])) {\n if (encoding.color?.includes(item.id)) {\n return datum?.[ColorEncoding] as string\n }\n if (encoding.x?.includes(item.id)) {\n return datum?.[XEncoding] as string\n }\n }\n\n return datum?.[item.id] as string\n },\n }))\n\n const defaultContent = boxPlotMeasureKeys.map((key: string) => {\n return {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key,\n value: (datum: Datum | undefined) => {\n if (!datum) {\n return ''\n }\n return datum[key] as string | number\n },\n }\n })\n\n return [...dimContent, defaultContent] as ITooltipLinePattern[]\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n backgroundColor,\n label,\n tooltipBoxplot,\n discreteLegend,\n color,\n pivotAdapter,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n stackCornerRadius,\n progressive,\n colorAdapter,\n linearColor,\n colorLegend,\n colorBarStyleFill,\n pivotColorLegend,\n initBoxplot,\n xBand,\n yLinear,\n verticalCrosshairRect,\n datasetBoxplot,\n pivotAxisStyle,\n pivotTitle,\n} from '../pipes'\n\nconst boxplot: SpecPipeline = [\n initBoxplot,\n stackCornerRadius,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetBoxplot,\n progressive,\n xBand,\n yLinear,\n label,\n tooltipBoxplot,\n colorAdapter(discreteLegend, colorLegend),\n verticalCrosshairRect,\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotBoxplot: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n datasetPivot,\n pivotIndicators([\n initBoxplot,\n stackCornerRadius,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetBoxplot,\n progressive,\n xBand,\n pivotAxisStyle(yLinear),\n label,\n tooltipBoxplot,\n colorBarStyleFill(barStyle),\n verticalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const boxplotSpecPipeline: SpecPipeline = [pivotAdapter(boxplot, pivotBoxplot)]\n","import { boxplotAdvancedPipeline, boxplotSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerBoxplot = () => {\n Builder._advancedPipelineMap['boxPlot'] = boxplotAdvancedPipeline\n Builder._specPipelineMap['boxPlot'] = boxplotSpecPipeline\n}\n","import { pick } from 'remeda'\nimport { replaceNullToUndefined } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed, Config } from 'src/types'\n\nexport const histogramConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const pickedConfig = pick(vseed, [\n 'backgroundColor',\n 'color',\n 'label',\n 'legend',\n 'tooltip',\n 'xAxis',\n 'yAxis',\n 'crosshairRect',\n 'binCount',\n 'binStep',\n 'binValueType',\n ]) as Config['histogram']\n\n const config = replaceNullToUndefined(pickedConfig)\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n","import { unique } from 'remeda'\nimport { MeasureName } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\nimport { addColorToEncoding } from './color'\n\nexport const defaultEncodingForHistogram: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding)\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForHistogram: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding, false)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\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) => {\n const dimensionsWithoutMeasureName = dimensions.filter((item) => item.id !== MeasureName)\n const uniqueDimIds = unique(dimensionsWithoutMeasureName.map((d) => d.id))\n\n encoding.detail = encoding.color\n encoding.tooltip = uniqueDimIds.filter((d: string) => d !== MeasureName) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\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 !== MeasureName)\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 !== MeasureName)\n}\n\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.value = unique(measures.filter((item) => item.encoding === 'value' || !item.encoding).map((item) => item.id))\n encoding.x0 = unique(measures.filter((item) => item.encoding === 'x0').map((item) => item.id))\n encoding.x1 = unique(measures.filter((item) => item.encoding === 'x1').map((item) => item.id))\n encoding.y = unique(measures.filter((item) => item.encoding === 'yAxis').map((item) => item.id))\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.value = unique(measures.filter((item) => item.encoding === 'value' || !item.encoding).map((item) => item.id))\n encoding.x0 = unique(measures.filter((item) => item.encoding === 'x0').map((item) => item.id))\n encoding.x1 = unique(measures.filter((item) => item.encoding === 'x1').map((item) => item.id))\n encoding.y = unique(measures.filter((item) => item.encoding === 'yAxis').map((item) => item.id))\n const color = unique(measures.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (color.length > 0) {\n encoding.color = [color[0]]\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])\n}\n","import {\n BinCountMeasureId,\n BinEndMeasureId,\n BinPercentageMeasureId,\n BinStartMeasureId,\n dataReshapeByEncoding,\n FoldMeasureId,\n FoldMeasureName,\n FoldMeasureValue,\n Separator,\n unfoldDimensions,\n} from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed, ColumnParallel, Dataset, Dimension, Encoding } from 'src/types'\nimport { bin } from '@visactor/vdataset'\nimport { uniqueBy } from 'remeda'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes/color/colorAdapter'\n\nexport const reshapeWithHistogramEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset, chartType } = vseed as ColumnParallel\n const { dimensions = [], measures = [], encoding = {}, config } = advancedVSeed\n const uniqDims = uniqueBy(dimensions, (item) => item.id)\n const chartConfig = config?.[chartType as 'histogram']\n const binCount = chartConfig?.binCount\n const binStep = chartConfig?.binStep\n const binValueType = chartConfig?.binValueType\n\n let newDatasets: any[] = []\n let foldInfo: any = {}\n let unfoldInfo: any = {}\n\n const colorMeasureId = getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed)\n const allMeasures = findAllMeasures(measures)\n\n if (encoding.value?.length) {\n const valueField = encoding.value[0]\n const m = allMeasures.find((m) => m.id === valueField)\n const binData = bin(dataset, {\n field: valueField,\n groupField: [...(encoding.x ?? []), ...(encoding.color ?? [])] as string[],\n bins: binCount,\n step: binStep,\n outputNames: {\n x0: BinStartMeasureId,\n x1: BinEndMeasureId,\n count: BinCountMeasureId,\n percentage: BinPercentageMeasureId,\n },\n }) as Dataset\n\n binData.forEach((datum) => {\n datum[FoldMeasureId] = valueField\n datum[FoldMeasureName] = m?.alias ?? valueField\n datum[FoldMeasureValue] = binValueType === 'percentage' ? datum[BinPercentageMeasureId] : datum[BinCountMeasureId]\n })\n\n const res = unfoldDimensions(binData, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n })\n\n res.dataset.forEach((d) => {\n newDatasets.push(d)\n })\n unfoldInfo = res.unfoldInfo\n } else if (encoding.x0?.length && encoding.x1?.length && encoding.y?.length) {\n const res = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item: Dimension) => item.id),\n findAllMeasures(measures)\n .filter((item) => encoding.y?.includes(item.id))\n .slice(0, 1),\n encoding as Encoding,\n {\n colorItemAsId: false,\n colorMeasureId,\n },\n )\n\n res.dataset.forEach((datum) => {\n datum[BinStartMeasureId] = datum[encoding.x0![0]]\n datum[BinEndMeasureId] = datum[encoding.x1![0]]\n datum[FoldMeasureId] = datum[encoding.y![0]]\n })\n\n newDatasets = res.dataset\n foldInfo = res.foldInfo\n unfoldInfo = res.unfoldInfo\n }\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: [\n {\n id: String(chartType),\n index: 0,\n foldInfo,\n unfoldInfo,\n },\n ],\n dimensions,\n measures,\n }\n}\n","import { bin } from '@visactor/vdataset'\nimport { uniqueBy } from 'remeda'\nimport {\n BinCountMeasureId,\n BinEndMeasureId,\n BinPercentageMeasureId,\n BinStartMeasureId,\n dataReshapeByEncoding,\n FoldMeasureId,\n FoldMeasureName,\n FoldMeasureValue,\n Separator,\n unfoldDimensions,\n} from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Datum,\n Dimension,\n Encoding,\n MeasureGroup,\n} from 'src/types'\n\nexport const pivotReshapeWithHistogramEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset, chartType } = vseed as ColumnParallel\n const { dimensions = [], measures = [], encoding = {}, config } = advancedVSeed\n const colorMeasureId = getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed)\n const uniqDims = uniqueBy(dimensions, (item: Dimension) => item.id)\n const chartConfig = config?.[chartType as 'histogram']\n const binCount = chartConfig?.binCount\n const binStep = chartConfig?.binStep\n const binValueType = chartConfig?.binValueType\n\n const measureGroups: MeasureGroup[] = []\n if (measures) {\n measures.forEach((measure: MeasureGroup) => {\n if (measure.children && measure.children.length > 0) {\n measureGroups.push(measure)\n }\n })\n }\n const rowColumnFields = uniqueBy(\n dimensions.filter((dim: Dimension) => dim.encoding === 'row' || dim.encoding === 'column'),\n (item: Dimension) => item.id,\n )\n\n const datasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n measureGroups.forEach((measureGroup, index) => {\n const subMeasures = measureGroup.children\n if (!subMeasures) {\n return\n }\n const groupId = measureGroup.id\n\n let newDatasets: any[] = []\n let foldInfo: any = {}\n let unfoldInfo: any = {}\n\n if (encoding.value?.length) {\n const valueField = encoding.value[0]\n const m = subMeasures.find((m) => m.id === valueField)\n const binData = bin(dataset, {\n field: valueField,\n groupField: [\n ...(encoding.x ?? []),\n ...(encoding.color ?? []),\n ...rowColumnFields.map((item: Dimension) => item.id),\n ] as string[],\n bins: binCount,\n step: binStep,\n outputNames: {\n x0: BinStartMeasureId,\n x1: BinEndMeasureId,\n count: BinCountMeasureId,\n percentage: BinPercentageMeasureId,\n },\n }) as Dataset\n\n binData.forEach((datum: Datum) => {\n datum[FoldMeasureId] = valueField\n datum[FoldMeasureName] = m?.alias ?? valueField\n datum[FoldMeasureValue] =\n binValueType === 'percentage' ? datum[BinPercentageMeasureId] : datum[BinCountMeasureId]\n })\n\n const res = unfoldDimensions(binData, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n })\n\n res.dataset.forEach((d) => {\n newDatasets.push(d)\n })\n unfoldInfo = res.unfoldInfo\n } else if (encoding.x0?.length && encoding.x1?.length && encoding.y?.length) {\n const res = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item: Dimension) => item.id),\n subMeasures.filter((item) => encoding.y?.includes(item.id)).slice(0, 1),\n encoding as Encoding,\n {\n colorItemAsId: false,\n colorMeasureId,\n },\n )\n\n res.dataset.forEach((datum) => {\n datum[BinStartMeasureId] = datum[encoding.x0![0]]\n datum[BinEndMeasureId] = datum[encoding.x1![0]]\n datum[FoldMeasureId] = datum[encoding.y![0]]\n })\n\n newDatasets = res.dataset\n foldInfo = res.foldInfo\n unfoldInfo = res.unfoldInfo\n }\n\n const reshapeInfo = {\n id: groupId,\n index,\n foldInfo,\n unfoldInfo,\n }\n datasets.push(newDatasets)\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n return {\n ...result,\n dataset: datasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n histogramConfig,\n markStyle,\n annotation,\n sortLegend,\n pivotReshapeWithHistogramEncoding,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n encodingAdapter,\n deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n defaultEncodingForHistogram,\n encodingForHistogram,\n reshapeWithHistogramEncoding,\n regressionLine,\n} from '../pipes'\n\nexport const histogramAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n histogramConfig,\n\n encodingAdapter(\n [defaultEncodingForHistogram, buildMeasures],\n [\n encodingForHistogram,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithHistogramEncoding], [pivotReshapeWithHistogramEncoding]),\n\n sortLegend,\n theme,\n markStyle,\n annotation,\n regressionLine,\n]\n","import type { IHistogramChartSpec } from '@visactor/vchart'\nimport { BinEndMeasureId, BinStartMeasureId, FoldMeasureValue } from 'src/index'\nimport type { SpecPipe } from 'src/types'\n\nexport const initHistogram: SpecPipe = (spec) => {\n const result = { ...spec } as IHistogramChartSpec\n\n // 直方图默认支持明细数据\n result.type = 'histogram'\n result.xField = BinStartMeasureId\n result.x2Field = BinEndMeasureId\n result.yField = FoldMeasureValue\n // result.seriesField = unfoldInfo.encodingColorId\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { isPivotChart } from 'src/pipeline/utils'\nimport type { SpecPipe } from 'src/types'\n\nexport const datasetHistogram: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { id } = datasetReshapeInfo[0]\n\n const fields: Record<string, object> = {}\n\n return {\n ...spec,\n data: {\n id,\n // 透视表不使用 dataValues\n values: isPivotChart(vseed) ? undefined : advancedVSeed.dataset.flat(),\n fields: fields,\n },\n } as unknown as ISpec\n}\n","import { pipe, uniqueBy, isNullish } from 'remeda'\nimport type { Dimension, Dimensions, Encoding, Spec, SpecPipe, Tooltip } from 'src/types'\nimport type { Datum, ISpec, ITooltipLinePattern } from '@visactor/vchart'\nimport { BinEndMeasureId, BinStartMeasureId, ColorEncoding, FoldMeasureValue, XEncoding } from 'src/dataReshape'\n\nconst VCHART_OUTLIER_KEY = '__VCHART_BOX_PLOT_OUTLIER_VALUE'\n\nexport const tooltipHistogram: SpecPipe = (spec, context): Partial<Spec> => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { chartType, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n\n result.tooltip = {\n visible: enable,\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(encoding.tooltip || [], dimensions, encoding as Encoding),\n },\n dimension: {\n title: {\n visible: false,\n },\n content: createMarkContent(encoding.tooltip || [], dimensions, encoding as Encoding),\n },\n }\n return result as unknown as ISpec\n}\n\nconst createMarkContent = (tooltip: string[], dimensions: Dimensions, encoding: Encoding) => {\n const dims = pipe(\n dimensions.filter((item) => tooltip.includes(item.id)),\n uniqueBy((item: Dimension) => item.id),\n uniqueBy((item: Dimension) => item.alias),\n )\n\n const dimContent = dims.map((item: Dimension) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias ?? item.id,\n value: (datum: Datum | undefined) => {\n if (!isNullish(datum?.[VCHART_OUTLIER_KEY])) {\n if (encoding.color?.includes(item.id)) {\n return datum?.[ColorEncoding] as string\n }\n if (encoding.x?.includes(item.id)) {\n return datum?.[XEncoding] as string\n }\n }\n\n return datum?.[item.id] as string\n },\n }))\n\n const defaultContent = [\n {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (datum: Datum | undefined) => {\n if (!datum) {\n return ''\n }\n return `${datum[BinStartMeasureId]} ~ ${datum[BinEndMeasureId]}`\n },\n value: (datum: Datum | undefined) => {\n if (!datum) {\n return ''\n }\n return datum[FoldMeasureValue] as string | number\n },\n },\n ]\n\n return [...dimContent, defaultContent] as ITooltipLinePattern[]\n}\n","import type { ICartesianSeries, IChart, IHistogramChartSpec, IVChart } from '@visactor/vchart'\nimport type { KDEOptions } from '@visactor/vutils'\nimport { isNullish, uniqueBy } from 'remeda'\nimport { kde, array } from '@visactor/vutils'\nimport { BinEndMeasureId, BinStartMeasureId } from 'src/dataReshape'\nimport type { Datum, Dimension, SpecPipe, Encoding, RegressionLineConfig, KdeRegressionLine } from 'src/types'\nimport { defaultRegressionLineColor, defaultRegressionLineLabelX, defaultRegressionLineLabelY } from './common'\n\nexport const kdeRegressionLine: SpecPipe = (spec, context) => {\n const result = { ...spec } as IHistogramChartSpec\n const { advancedVSeed, vseed } = context\n const { chartType, encoding = {} as Encoding, dimensions, regressionLine } = advancedVSeed\n const { dataset } = vseed\n const lineTheme = advancedVSeed.config[chartType as 'histogram']?.regressionLine as RegressionLineConfig\n\n if (!regressionLine || !regressionLine.kdeRegressionLine) {\n return result\n }\n\n const rowColumnFields = uniqueBy(\n dimensions.filter((dim: Dimension) => dim.encoding === 'row' || dim.encoding === 'column'),\n (item: Dimension) => item.id,\n )\n\n const lineList = array(regressionLine.kdeRegressionLine)\n\n if (!result.customMark) {\n result.customMark = []\n }\n\n lineList.forEach((line, lineIndex) => {\n const theme = (lineTheme.kdeRegressionLine ?? {}) as KdeRegressionLine\n const { color, lineWidth, lineDash, text, textColor, textFontSize, textFontWeight } = line as KdeRegressionLine\n\n const childrenMarks: any[] = []\n\n ;(result.customMark as any[]).push({\n type: 'group',\n interactive: false,\n zIndex: 500,\n name: `kdeRegressionLine-${lineIndex}`,\n style: {\n data: (datum: any, ctx: any) => {\n const vchart = ctx.vchart as IVChart\n const chart = vchart.getChart() as IChart\n const series = chart.getAllSeries().filter((s: any) => s.type === 'bar')\n\n // 直方图使用的是bar系列\n if (series && series.length) {\n const s = series[0] as ICartesianSeries\n const region = s.getRegion().getLayoutStartPoint()\n\n const fieldX = s.fieldX?.[0]\n const scaleY = s.getYAxisHelper().getScale?.(0)\n const viewData = s.getViewData()?.latestData\n\n if (!dataset || !dataset.length || !viewData || !viewData.length || !scaleY) {\n return null\n }\n const simpleData = dataset\n .filter((entry: Datum) => {\n return rowColumnFields.length\n ? rowColumnFields.every((dim: Dimension) => {\n return entry[dim.id] === viewData[0][dim.id]\n })\n : true\n })\n .map((d: Datum) => (d as any)[encoding.value?.[0] as string]) as number[]\n const res = kde(simpleData, {\n bandwidth: Math.abs(viewData[0][BinEndMeasureId] - viewData[0][BinStartMeasureId]),\n } as KDEOptions)\n const N = Math.max(3, Math.floor(simpleData.length / 4))\n const lineData = res.evaluateGrid(N)\n const scaleR = (k: number) => {\n return scaleY.scale(k * simpleData.length * res.bandwidth)\n }\n\n const linePoints = lineData.map((ld: Datum) => {\n const d = { [fieldX]: ld.x }\n return {\n x: s.dataToPositionX(d)! + region.x,\n y: scaleR(ld.y as number) + region.y,\n }\n })\n\n return {\n linePoints,\n color: color ?? s.getOption().globalScale.getScale('color')?.scale(s.getSeriesKeys()[0]),\n }\n }\n return null\n },\n },\n children: childrenMarks,\n })\n\n childrenMarks.push({\n type: 'line',\n interactive: false,\n zIndex: 500,\n style: {\n lineWidth: lineWidth ?? theme.lineWidth,\n lineDash: lineDash ?? theme.lineDash,\n stroke: color ?? defaultRegressionLineColor,\n points: (datum: any, ctx: any, opt: any) => {\n const parentNode = opt.mark?._product?.parent\n\n if (parentNode?.attribute?.data) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return parentNode.attribute.data.linePoints\n }\n\n return []\n },\n },\n })\n\n if (!isNullish(text)) {\n childrenMarks.push({\n type: 'text',\n interactive: false,\n zIndex: 500,\n style: {\n textAlign: 'end',\n fill: textColor ?? theme.textColor,\n fontSize: textFontSize ?? theme.textFontSize,\n fontWeight: textFontWeight ?? theme.textFontWeight,\n text: text,\n x: defaultRegressionLineLabelX,\n y: defaultRegressionLineLabelY,\n },\n })\n }\n })\n\n return result\n}\n","import type { ICartesianSeries, IChart, IHistogramChartSpec, IVChart } from '@visactor/vchart'\nimport { isNullish, uniqueBy } from 'remeda'\nimport { ecdf, array } from '@visactor/vutils'\nimport type { Datum, Dimension, SpecPipe, Encoding, RegressionLineConfig, EcdfRegressionLine } from 'src/types'\nimport { defaultRegressionLineColor, defaultRegressionLineLabelX, defaultRegressionLineLabelY } from './common'\n\nexport const ecdfRegressionLine: SpecPipe = (spec, context) => {\n const result = { ...spec } as IHistogramChartSpec\n const { advancedVSeed, vseed } = context\n const { chartType, encoding = {} as Encoding, dimensions, regressionLine } = advancedVSeed\n const { dataset } = vseed\n const lineTheme = advancedVSeed.config[chartType as 'histogram']?.regressionLine as RegressionLineConfig\n\n if (!regressionLine || !regressionLine.ecdfRegressionLine) {\n return result\n }\n\n const rowColumnFields = uniqueBy(\n dimensions.filter((dim: Dimension) => dim.encoding === 'row' || dim.encoding === 'column'),\n (item: Dimension) => item.id,\n )\n\n const lineList = array(regressionLine.ecdfRegressionLine)\n\n if (!result.customMark) {\n result.customMark = []\n }\n\n lineList.forEach((line, lineIndex) => {\n const theme = (lineTheme?.ecdfRegressionLine ?? {}) as EcdfRegressionLine\n const { color, lineWidth, lineDash, text, textColor, textFontSize, textFontWeight } = line as EcdfRegressionLine\n\n const childrenMarks: any[] = []\n\n ;(result.customMark as any[]).push({\n type: 'group',\n interactive: false,\n zIndex: 500,\n name: `ecdfRegressionLine-${lineIndex}`,\n style: {\n data: (datum: any, ctx: any) => {\n const vchart = ctx.vchart as IVChart\n const chart = vchart.getChart() as IChart\n const series = chart.getAllSeries().filter((s: any) => s.type === 'bar')\n\n // 直方图使用的是bar系列\n if (series && series.length) {\n const s = series[0] as ICartesianSeries\n const region = s.getRegion().getLayoutStartPoint()\n\n const fieldX = s.fieldX?.[0]\n const scaleY = s.getYAxisHelper().getScale?.(0)\n const viewData = s.getViewData()?.latestData\n\n if (!dataset || !dataset.length || !viewData || !viewData.length || !scaleY) {\n return null\n }\n const simpleData = dataset\n .filter((entry: Datum) => {\n return rowColumnFields.length\n ? rowColumnFields.every((dim: Dimension) => {\n return entry[dim.id] === viewData[0][dim.id]\n })\n : true\n })\n .map((d: Datum) => (d as any)[encoding.value?.[0] as string]) as number[]\n const res = ecdf(simpleData)\n const N = Math.max(3, Math.floor(simpleData.length / 4))\n const lineData = res.evaluateGrid(N)\n const yRange = scaleY.range()\n const y0 = yRange[0]\n const y1 = yRange[yRange.length - 1]\n const scaleR = (e: number) => {\n return y0 + (y1 - y0) * e\n }\n\n const linePoints = lineData.map((ld: Datum) => {\n const d = { [fieldX]: ld.x }\n return {\n x: s.dataToPositionX(d)! + region.x,\n y: scaleR(ld.y as number) + region.y,\n }\n })\n\n return {\n linePoints,\n color: color ?? s.getOption().globalScale.getScale('color')?.scale(s.getSeriesKeys()[0]),\n }\n }\n return null\n },\n },\n children: childrenMarks,\n })\n\n childrenMarks.push({\n type: 'line',\n interactive: false,\n zIndex: 500,\n style: {\n lineWidth: lineWidth ?? theme.lineWidth,\n lineDash: lineDash ?? theme.lineDash,\n stroke: color ?? defaultRegressionLineColor,\n points: (datum: any, ctx: any, opt: any) => {\n const parentNode = opt.mark?._product?.parent\n\n if (parentNode?.attribute?.data) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return parentNode.attribute.data.linePoints\n }\n\n return []\n },\n },\n })\n\n if (!isNullish(text)) {\n childrenMarks.push({\n type: 'text',\n interactive: false,\n zIndex: 500,\n style: {\n textAlign: 'end',\n fill: textColor ?? theme.textColor,\n fontSize: textFontSize ?? theme.textFontSize,\n fontWeight: textFontWeight ?? theme.textFontWeight,\n text: text,\n x: defaultRegressionLineLabelX,\n y: defaultRegressionLineLabelY,\n },\n })\n }\n })\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n xLinear,\n backgroundColor,\n label,\n discreteLegend,\n color,\n pivotAdapter,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n datasetHistogram,\n progressive,\n colorAdapter,\n linearColor,\n colorLegend,\n colorBarStyleFill,\n pivotColorLegend,\n initHistogram,\n yLinear,\n verticalCrosshairRect,\n tooltipHistogram,\n kdeRegressionLine,\n ecdfRegressionLine,\n pivotTitle,\n pivotAxisStyle,\n} from '../pipes'\n\nconst histogram: SpecPipeline = [\n initHistogram,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetHistogram,\n progressive,\n xLinear,\n yLinear,\n label,\n tooltipHistogram,\n colorAdapter(discreteLegend, colorLegend),\n verticalCrosshairRect,\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n kdeRegressionLine,\n ecdfRegressionLine,\n]\n\nconst pivotHistogram: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n datasetPivot,\n pivotIndicators([\n initHistogram,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetHistogram,\n progressive,\n xLinear,\n pivotAxisStyle(yLinear),\n label,\n tooltipHistogram,\n colorBarStyleFill(barStyle),\n verticalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n kdeRegressionLine,\n ecdfRegressionLine,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const histogramSpecPipeline: SpecPipeline = [pivotAdapter(histogram, pivotHistogram)]\n","import { histogramSpecPipeline, histogramAdvancedPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerHistogram = () => {\n Builder._advancedPipelineMap['histogram'] = histogramAdvancedPipeline\n Builder._specPipelineMap['histogram'] = histogramSpecPipeline\n}\n","export const getDarkCrosshairLine = () => ({\n visible: true,\n labelVisible: true,\n labelColor: '#ffffff',\n labelBackgroundColor: '#404349',\n lineColor: '#55595F',\n})\n\nexport const getDarkCrosshairRect = () => ({\n visible: true,\n labelVisible: true,\n labelColor: '#4B4F54',\n labelBackgroundColor: '#ffffff',\n rectColor: '#E2E3E6',\n})\n\nexport const getLightCrosshairLine = () => ({\n visible: true,\n labelVisible: true,\n labelColor: '#ffffff',\n labelBackgroundColor: '#21252C',\n lineColor: '#21252C',\n})\nexport const getLightCrosshairRect = () => ({\n visible: true,\n labelVisible: true,\n labelColor: '#ffffff',\n labelBackgroundColor: '#364159',\n rectColor: '#3641594d',\n})\n","export const getLightColorScheme = () => [\n '#8D72F6',\n '#5766EC',\n '#66A3FE',\n '#51D5E6',\n '#4EC0B3',\n '#F9DF90',\n '#F9AD71',\n '#ED8888',\n '#E9A0C3',\n '#D77DD3',\n]\nexport const getDarkColorScheme = () => [\n '#2E62F1',\n '#4DC36A',\n '#FF8406',\n '#FFCC00',\n '#4F44CF',\n '#5AC8FA',\n '#003A8C',\n '#B08AE2',\n '#FF6341',\n '#98DD62',\n]\nexport const getLightLinearColorScheme = () => ['#C2CEFF', '#5766EC']\nexport const getDarkLinearColorScheme = () => ['#A0CEFF', '#2E62F1']\nexport const getLightColor = () => ({\n linearColorScheme: getLightLinearColorScheme(),\n colorScheme: getLightColorScheme(),\n positiveColor: '#7E5DFF',\n negativeColor: '#EB3373',\n})\nexport const getDarkColor = () => ({\n linearColorScheme: getDarkLinearColorScheme(),\n colorScheme: getDarkColorScheme(),\n positiveColor: '#7E5DFF',\n negativeColor: '#EB3373',\n})\n","export const getDefaultLabel = () => ({\n enable: true,\n wrap: true,\n showValue: true,\n showValuePercent: false,\n labelColorSmartInvert: false,\n labelOverlap: true,\n})\n\nexport const getDarkLabel = () => ({\n ...getDefaultLabel(),\n labelStroke: '#21252C',\n})\n\nexport const getLightLabel = () => ({\n ...getDefaultLabel(),\n labelStroke: '#fff',\n})\n","import type { Legend } from 'src/types'\n\nexport const getDefaultLegend = (): Legend => ({\n enable: true,\n border: true,\n maxSize: 1,\n shapeType: 'rectRound',\n position: 'rt',\n labelColor: '#646A73',\n labelFontSize: 12,\n labelFontWeight: 400,\n})\n","export const getDefaultTableConfig = () => ({\n bodyFontSize: 12,\n bodyBackgroundColor: 'transparent',\n headerFontSize: 12,\n})\n\nexport const getLightTableConfig = () => ({\n ...getDefaultTableConfig(),\n borderColor: '#e3e5eb',\n\n bodyFontColor: '#141414',\n\n headerFontColor: '#21252c',\n headerBackgroundColor: '#f6f7f9',\n\n hoverBodyBackgroundColor: '#bedaff',\n hoverBodyInlineBackgroundColor: '#bedaff33',\n hoverHeaderBackgroundColor: '#D9DDE4',\n hoverHeaderInlineBackgroundColor: '#D9DDE455',\n\n selectedBorderColor: '#4080ff',\n selectedBackgroundColor: '#bedaff33',\n\n backgroundColor: 'transparent',\n})\n\nexport const getDarkTableConfig = () => ({\n ...getDefaultTableConfig(),\n borderColor: '#4b4e53',\n\n bodyFontColor: '#fdfdfd',\n headerFontColor: '#fdfdfd',\n headerBackgroundColor: '#36393e',\n\n hoverBodyBackgroundColor: '#4284ff66',\n hoverBodyInlineBackgroundColor: '#4284ff10',\n hoverHeaderBackgroundColor: '#6f7984cc',\n hoverHeaderInlineBackgroundColor: '#4b4f54',\n\n selectedBorderColor: '#3073f2',\n selectedBackgroundColor: '#4284ff33',\n})\n\nconst pickPivotChartGridConfig = (tableConfig: any) => {\n return {\n outlineBorderLineWidth: 0,\n frameCornerRadius: 0,\n borderColor: tableConfig.borderColor,\n bodyFontColor: tableConfig.bodyFontColor,\n headerFontColor: tableConfig.headerFontColor,\n\n headerBackgroundColor: 'transparent',\n hoverHeaderBackgroundColor: tableConfig.hoverHeaderBackgroundColor,\n hoverHeaderInlineBackgroundColor: tableConfig.hoverHeaderInlineBackgroundColor,\n\n titleFontColor: tableConfig.headerFontColor,\n titleFontSize: tableConfig.headerFontSize,\n titleFontWeight: 'bold',\n }\n}\n\nexport const getLightPivotChartGridConfig = () => {\n return pickPivotChartGridConfig(getLightTableConfig())\n}\n\nexport const getDarkPivotChartGridConfig = () => {\n return pickPivotChartGridConfig(getDarkTableConfig())\n}\n","import type { Tooltip } from 'src/types'\n\nexport const getDefaultTooltip = (): Tooltip => ({\n enable: true,\n})\n","import type { YBandAxis, YLinearAxis } from 'src/types'\n\nexport const getLightLinearAxis = (): YLinearAxis => ({\n nice: true,\n zero: true,\n inverse: false,\n label: {\n visible: true,\n labelAngle: 0,\n labelColor: '#797B85',\n labelFontSize: 12,\n labelFontWeight: 400,\n },\n title: {\n visible: false,\n titleText: '',\n titleColor: '#646A73',\n titleFontSize: 12,\n titleFontWeight: 400,\n },\n grid: {\n visible: true,\n gridColor: '#36415926',\n gridWidth: 0.5,\n gridLineDash: [4, 2],\n },\n tick: {\n visible: false,\n tickInside: false,\n tickSize: 4,\n tickColor: '#3641594d',\n },\n line: {\n visible: false,\n lineColor: '#3641594d',\n lineWidth: 1,\n },\n})\n\nexport const getLightBandAxis = (): YBandAxis => ({\n labelAutoHide: true,\n labelAutoHideGap: 4,\n labelAutoLimit: true,\n labelAutoLimitLength: 80,\n labelAutoRotate: false,\n labelAutoRotateAngleRange: [0, -45, -90],\n label: {\n visible: true,\n labelAngle: 0,\n labelColor: '#797B85',\n labelFontSize: 12,\n labelFontWeight: 400,\n },\n title: {\n visible: false,\n titleText: '',\n titleColor: '#646A73',\n titleFontSize: 12,\n titleFontWeight: 400,\n },\n grid: {\n visible: false,\n gridColor: '#36415926',\n gridWidth: 0.5,\n gridLineDash: [4, 2],\n },\n tick: {\n visible: false,\n tickInside: false,\n tickSize: 4,\n tickColor: '#3641594d',\n },\n line: {\n visible: true,\n lineColor: '#3641594d',\n lineWidth: 1,\n },\n})\n\nexport const getDarkLinearAxis = (): YLinearAxis => ({\n nice: true,\n zero: true,\n label: {\n visible: true,\n labelAngle: 0,\n labelColor: '#E2E3E6',\n labelFontSize: 12,\n labelFontWeight: 400,\n },\n title: {\n visible: false,\n titleText: '',\n titleColor: '#FDFDFD',\n titleFontSize: 12,\n titleFontWeight: 400,\n },\n grid: {\n visible: true,\n gridColor: '#303339',\n gridWidth: 0.5,\n gridLineDash: [4, 2],\n },\n tick: {\n visible: false,\n tickInside: false,\n tickSize: 4,\n tickColor: '#4B4F54',\n },\n line: {\n visible: false,\n lineColor: '#4B4F54',\n lineWidth: 1,\n },\n})\n\nexport const getDarkBandAxis = (): YBandAxis => ({\n labelAutoHide: true,\n labelAutoHideGap: 4,\n labelAutoLimit: true,\n labelAutoLimitLength: 80,\n labelAutoRotate: false,\n labelAutoRotateAngleRange: [0, -45, -90],\n label: {\n visible: true,\n labelAngle: 0,\n labelColor: '#E2E3E6',\n labelFontSize: 12,\n labelFontWeight: 400,\n },\n title: {\n visible: false,\n titleText: '',\n titleColor: '#FDFDFD',\n titleFontSize: 12,\n titleFontWeight: 400,\n },\n grid: {\n visible: false,\n gridColor: '#303339',\n gridWidth: 0.5,\n gridLineDash: [4, 2],\n },\n tick: {\n visible: false,\n tickInside: false,\n tickSize: 4,\n tickColor: '#4B4F54',\n },\n line: {\n visible: true,\n lineColor: '#4B4F54',\n lineWidth: 1,\n },\n})\n","import type {\n AnnotationAreaConfig,\n AnnotationHorizontalLineConfig,\n AnnotationPointConfig,\n} from 'src/types/properties/config/annotation/annotation'\n\nexport const getDefaultAnnotationPoint = (): AnnotationPointConfig => ({\n textBackgroundVisible: true,\n textFontSize: 12,\n textFontWeight: 400,\n\n textBackgroundBorderRadius: 4,\n textBackgroundBorderWidth: 1,\n textBackgroundPadding: 2,\n})\n\nexport const getLightAnnotationPoint = (): AnnotationPointConfig => ({\n ...getDefaultAnnotationPoint(),\n textColor: '#ffffff',\n textBackgroundColor: '#364159',\n textBackgroundBorderColor: '#3641594d',\n})\n\nexport const getDefaultAnnotationLine = (): AnnotationHorizontalLineConfig => ({\n lineVisible: true,\n lineWidth: 1,\n lineStyle: 'solid' as const,\n\n textFontSize: 12,\n textFontWeight: 400,\n startSymbolVisible: true,\n endSymbolVisible: false,\n\n textBackgroundVisible: true,\n textBackgroundBorderWidth: 1,\n textBackgroundBorderRadius: 0,\n textBackgroundPadding: 2,\n})\n\nexport const getLightAnnotationHorizontalLine = (): AnnotationHorizontalLineConfig => ({\n ...getDefaultAnnotationLine(),\n lineColor: '#BCC1CB',\n\n textColor: '#ffffff',\n\n textBackgroundColor: '#BCC1CB',\n textBackgroundBorderColor: '#BCC1CB',\n})\n\nexport const getLightAnnotationVerticalLine = () => getLightAnnotationHorizontalLine()\n\nexport const getDefaultAnnotationArea = (): AnnotationAreaConfig => ({\n textFontSize: 12,\n textFontWeight: 400,\n textBackgroundVisible: true,\n textBackgroundBorderWidth: 1,\n textBackgroundBorderRadius: 0,\n textBackgroundPadding: 4,\n areaBorderWidth: 0,\n areaBorderRadius: 0,\n areaLineDash: [2, 2],\n\n outerPadding: 4,\n})\n\nexport const getLightAnnotationArea = (): AnnotationAreaConfig => ({\n ...getDefaultAnnotationArea(),\n textColor: '#ffffff',\n\n textBackgroundColor: '#BCC1CB',\n textBackgroundBorderColor: '#BCC1CB',\n\n areaColor: '#BCC1CB',\n areaColorOpacity: 0.12,\n areaBorderColor: '#BCC1CB',\n})\n\nexport const getLightAnnotation = () => ({\n annotationPoint: getLightAnnotationPoint(),\n annotationHorizontalLine: getLightAnnotationHorizontalLine(),\n annotationVerticalLine: getLightAnnotationVerticalLine(),\n annotationArea: getLightAnnotationArea(),\n})\n\n// --- dark ---\nexport const getDarkAnnotationPoint = (): AnnotationPointConfig => ({\n ...getDefaultAnnotationPoint(),\n textColor: '#4B4F54',\n\n textBackgroundColor: '#ffffff',\n textBackgroundBorderColor: '#ffffff',\n})\n\nexport const getDarkAnnotationHorizontalLine = (): AnnotationHorizontalLineConfig => ({\n ...getDefaultAnnotationLine(),\n lineColor: '#55595F',\n\n textColor: '#E2E3E6',\n textBackgroundColor: '#55595F',\n textBackgroundBorderColor: '#55595F',\n})\n\nexport const getDarkAnnotationVerticalLine = () => getDarkAnnotationHorizontalLine()\n\nexport const getDarkAnnotationArea = (): AnnotationAreaConfig => ({\n ...getDefaultAnnotationArea(),\n textColor: '#E2E3E6',\n\n textBackgroundColor: '#55595F',\n textBackgroundBorderColor: '#55595F',\n\n areaColor: '#E2E3E6',\n areaColorOpacity: 0.15,\n areaBorderColor: '#E2E3E6',\n})\n\nexport const getDarkAnnotation = () => ({\n annotationPoint: getDarkAnnotationPoint(),\n annotationHorizontalLine: getDarkAnnotationHorizontalLine(),\n annotationVerticalLine: getDarkAnnotationVerticalLine(),\n annotationArea: getDarkAnnotationArea(),\n})\n\nexport default getLightAnnotation\n","import type { FunnelTransformConfig } from 'src/types/properties/config/funnelTransform'\n\nexport const getLightFunnelTransformTheme = (): FunnelTransformConfig => {\n return {\n backgroundColor: '#F6F7F9',\n textColor: '#737880',\n }\n}\n\nexport const getDarkFunnelTransformTheme = (): FunnelTransformConfig => {\n return {\n backgroundColor: '#2A2D33',\n textColor: '#888C93',\n }\n}\n","import type { HeatmapCell } from 'src/types/properties/config/heatmap/heatmap'\n\nexport const getLightHeatmapCellTheme = (): HeatmapCell => {\n return {\n stroke: '#fff',\n }\n}\n\nexport const getDarkHeatmapCellTheme = (): HeatmapCell => {\n return {\n stroke: '#404349',\n }\n}\n","import type { RegressionLineConfig } from 'src/types/properties/regressionLine'\n\nexport const getDefaultRegressionLine = () => {\n return {\n lineWidth: 2,\n textFontSize: 12,\n textFontWeight: 400,\n }\n}\n\nexport const getLightRegressionLine = (): Partial<RegressionLineConfig> => {\n return {\n kdeRegressionLine: {\n ...getDefaultRegressionLine(),\n textColor: '#364159',\n },\n ecdfRegressionLine: {\n ...getDefaultRegressionLine(),\n textColor: '#364159',\n },\n linearRegressionLine: {\n ...getDefaultRegressionLine(),\n textColor: '#364159',\n confidenceIntervalOpacity: 0.2,\n },\n lowessRegressionLine: {\n ...getDefaultRegressionLine(),\n textColor: '#364159',\n confidenceIntervalOpacity: 0.2,\n },\n polynomialRegressionLine: {\n ...getDefaultRegressionLine(),\n textColor: '#364159',\n confidenceIntervalOpacity: 0.2,\n },\n logisticRegressionLine: {\n ...getDefaultRegressionLine(),\n textColor: '#364159',\n confidenceIntervalOpacity: 0.2,\n },\n }\n}\n\nexport const getDarkRegressionLine = (): Partial<RegressionLineConfig> => {\n return {\n kdeRegressionLine: {\n ...getDefaultRegressionLine(),\n textColor: '#FFFFFF',\n },\n ecdfRegressionLine: {\n ...getDefaultRegressionLine(),\n textColor: '#FFFFFF',\n },\n linearRegressionLine: {\n ...getDefaultRegressionLine(),\n textColor: '#FFFFFF',\n confidenceIntervalOpacity: 0.2,\n },\n lowessRegressionLine: {\n ...getDefaultRegressionLine(),\n textColor: '#FFFFFF',\n confidenceIntervalOpacity: 0.2,\n },\n polynomialRegressionLine: {\n ...getDefaultRegressionLine(),\n textColor: '#FFFFFF',\n confidenceIntervalOpacity: 0.2,\n },\n logisticRegressionLine: {\n ...getDefaultRegressionLine(),\n textColor: '#FFFFFF',\n confidenceIntervalOpacity: 0.2,\n },\n }\n}\n","import type { CustomThemeConfig, YBandAxis } from 'src/types'\nimport {\n getDefaultLegend,\n getLightColor,\n getLightCrosshairLine,\n getLightCrosshairRect,\n getLightLabel,\n getLightPivotChartGridConfig,\n getLightTableConfig,\n} from '../common'\nimport { getDefaultTooltip } from '../common/tooltip'\nimport { getLightBandAxis, getLightLinearAxis } from '../common/axes'\nimport { getLightAnnotation } from '../common/annotaion'\nimport { getLightFunnelTransformTheme } from '../common/funnelTransform'\nimport { getLightHeatmapCellTheme } from '../common/heatmapCell'\nimport { getLightRegressionLine } from '../common/regressionLine'\n\nexport const lightTheme = (): CustomThemeConfig => {\n const linearAxis = getLightLinearAxis()\n const bandAxis: YBandAxis = getLightBandAxis()\n const barBandAxis: YBandAxis = {\n ...bandAxis,\n labelAutoHide: false,\n labelAutoHideGap: 1,\n labelAutoLimit: false,\n labelAutoLimitLength: undefined,\n labelAutoRotate: false,\n labelAutoRotateAngleRange: [0, -45, -90],\n }\n\n const crosshairLine = getLightCrosshairLine()\n const crosshairRect = getLightCrosshairRect()\n\n const baseConfig = {\n backgroundColor: 'transparent',\n color: getLightColor(),\n label: getLightLabel(),\n legend: getDefaultLegend(),\n tooltip: getDefaultTooltip(),\n }\n const tableConfig = getLightTableConfig()\n\n return {\n config: {\n // table\n table: tableConfig,\n pivotTable: tableConfig,\n // cartesian\n line: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine,\n\n pivotGrid: getLightPivotChartGridConfig(),\n annotation: getLightAnnotation(),\n },\n column: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairRect,\n stackCornerRadius: [4, 4, 0, 0],\n pivotGrid: getLightPivotChartGridConfig(),\n annotation: getLightAnnotation(),\n\n regressionLine: getLightRegressionLine(),\n },\n columnParallel: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairRect,\n stackCornerRadius: [4, 4, 0, 0],\n pivotGrid: getLightPivotChartGridConfig(),\n annotation: getLightAnnotation(),\n },\n columnPercent: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: {\n ...linearAxis,\n },\n crosshairRect,\n stackCornerRadius: [4, 4, 0, 0],\n pivotGrid: getLightPivotChartGridConfig(),\n annotation: getLightAnnotation(),\n },\n bar: {\n ...baseConfig,\n xAxis: linearAxis,\n yAxis: barBandAxis,\n crosshairRect,\n stackCornerRadius: [0, 4, 4, 0],\n pivotGrid: getLightPivotChartGridConfig(),\n annotation: getLightAnnotation(),\n },\n barParallel: {\n ...baseConfig,\n xAxis: linearAxis,\n yAxis: barBandAxis,\n crosshairRect,\n stackCornerRadius: [0, 4, 4, 0],\n pivotGrid: getLightPivotChartGridConfig(),\n annotation: getLightAnnotation(),\n },\n barPercent: {\n ...baseConfig,\n xAxis: {\n ...linearAxis,\n },\n yAxis: barBandAxis,\n crosshairRect,\n stackCornerRadius: [0, 4, 4, 0],\n pivotGrid: getLightPivotChartGridConfig(),\n annotation: getLightAnnotation(),\n },\n area: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine,\n pivotGrid: getLightPivotChartGridConfig(),\n annotation: getLightAnnotation(),\n },\n areaPercent: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: {\n ...linearAxis,\n },\n crosshairLine,\n pivotGrid: getLightPivotChartGridConfig(),\n annotation: getLightAnnotation(),\n },\n scatter: {\n ...baseConfig,\n crosshairLine,\n sizeRange: [8, 24],\n xAxis: {\n ...linearAxis,\n line: {\n ...linearAxis.line,\n visible: true,\n },\n },\n yAxis: {\n ...linearAxis,\n line: {\n ...linearAxis.line,\n visible: true,\n },\n },\n label: {\n ...baseConfig.label,\n showValue: false,\n showValuePercent: false,\n },\n pivotGrid: getLightPivotChartGridConfig(),\n annotation: getLightAnnotation(),\n\n regressionLine: getLightRegressionLine(),\n },\n dualAxis: {\n ...baseConfig,\n xAxis: bandAxis,\n primaryYAxis: linearAxis,\n secondaryYAxis: { ...linearAxis, grid: { visible: false } },\n dualChartType: {\n primary: 'column',\n secondary: 'line',\n },\n crosshairRect,\n pivotGrid: getLightPivotChartGridConfig(),\n annotation: getLightAnnotation(),\n },\n // polar\n pie: {\n ...baseConfig,\n label: {\n ...baseConfig.label,\n showValuePercent: true,\n labelLayout: 'arc',\n showDimension: true,\n },\n pivotGrid: getLightPivotChartGridConfig(),\n },\n donut: {\n ...baseConfig,\n label: {\n ...baseConfig.label,\n showValuePercent: true,\n labelLayout: 'arc',\n showDimension: true,\n },\n pivotGrid: getLightPivotChartGridConfig(),\n },\n radar: {\n ...baseConfig,\n pivotGrid: getLightPivotChartGridConfig(),\n },\n rose: {\n ...baseConfig,\n label: {\n ...baseConfig.label,\n showValuePercent: true,\n showDimension: true,\n },\n pivotGrid: getLightPivotChartGridConfig(),\n },\n roseParallel: {\n ...baseConfig,\n label: {\n ...baseConfig.label,\n showValuePercent: true,\n showDimension: true,\n },\n\n pivotGrid: getLightPivotChartGridConfig(),\n },\n // other\n funnel: {\n ...baseConfig,\n\n transform: getLightFunnelTransformTheme(),\n\n pivotGrid: getLightPivotChartGridConfig(),\n },\n heatmap: {\n ...baseConfig,\n label: {\n ...baseConfig.label,\n labelColorSmartInvert: true,\n },\n cell: getLightHeatmapCellTheme(),\n pivotGrid: getLightPivotChartGridConfig(),\n },\n histogram: {\n ...baseConfig,\n xAxis: linearAxis,\n yAxis: linearAxis,\n crosshairRect,\n pivotGrid: getLightPivotChartGridConfig(),\n annotation: getLightAnnotation(),\n regressionLine: getLightRegressionLine(),\n },\n boxPlot: {\n ...baseConfig,\n xAxis: linearAxis,\n yAxis: linearAxis,\n crosshairRect,\n pivotGrid: getLightPivotChartGridConfig(),\n annotation: getLightAnnotation(),\n },\n },\n }\n}\n","import type { CustomThemeConfig, YBandAxis } from 'src/types'\nimport {\n getDarkColor,\n getDarkCrosshairLine,\n getDarkCrosshairRect,\n getDarkTableConfig,\n getDefaultLegend,\n getDarkPivotChartGridConfig,\n getDarkLabel,\n} from '../common'\nimport { getDefaultTooltip } from '../common/tooltip'\nimport { getDarkBandAxis, getDarkLinearAxis } from '../common/axes'\nimport { getDarkAnnotation } from '../common/annotaion'\nimport { getDarkFunnelTransformTheme } from '../common/funnelTransform'\nimport { getDarkHeatmapCellTheme } from '../common/heatmapCell'\nimport { getDarkRegressionLine } from '../common/regressionLine'\n\nexport const darkTheme = (): CustomThemeConfig => {\n const linearAxis = getDarkLinearAxis()\n const bandAxis = getDarkBandAxis()\n const barBandAxis: YBandAxis = {\n ...bandAxis,\n labelAutoHide: false,\n labelAutoHideGap: 1,\n labelAutoLimit: false,\n labelAutoLimitLength: undefined,\n labelAutoRotate: false,\n labelAutoRotateAngleRange: [0, -45, -90],\n }\n const crosshairLine = getDarkCrosshairLine()\n const crosshairRect = getDarkCrosshairRect()\n\n const baseConfig = {\n backgroundColor: 'transparent',\n color: getDarkColor(),\n label: getDarkLabel(),\n legend: getDefaultLegend(),\n tooltip: getDefaultTooltip(),\n }\n\n const tableConfig = getDarkTableConfig()\n\n return {\n config: {\n table: tableConfig,\n pivotTable: tableConfig,\n\n // cartesian\n line: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine: crosshairLine,\n pivotGrid: getDarkPivotChartGridConfig(),\n annotation: getDarkAnnotation(),\n },\n column: {\n ...baseConfig,\n\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairRect: crosshairRect,\n stackCornerRadius: [4, 4, 0, 0],\n pivotGrid: getDarkPivotChartGridConfig(),\n annotation: getDarkAnnotation(),\n\n regressionLine: getDarkRegressionLine(),\n },\n columnParallel: {\n ...baseConfig,\n\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairRect: crosshairRect,\n stackCornerRadius: [4, 4, 0, 0],\n pivotGrid: getDarkPivotChartGridConfig(),\n annotation: getDarkAnnotation(),\n },\n columnPercent: {\n ...baseConfig,\n\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairRect: crosshairRect,\n stackCornerRadius: [4, 4, 0, 0],\n pivotGrid: getDarkPivotChartGridConfig(),\n annotation: getDarkAnnotation(),\n },\n bar: {\n ...baseConfig,\n\n xAxis: linearAxis,\n yAxis: barBandAxis,\n crosshairRect: crosshairRect,\n stackCornerRadius: [0, 4, 4, 0],\n pivotGrid: getDarkPivotChartGridConfig(),\n annotation: getDarkAnnotation(),\n },\n barParallel: {\n ...baseConfig,\n\n xAxis: linearAxis,\n yAxis: barBandAxis,\n crosshairRect: crosshairRect,\n stackCornerRadius: [0, 4, 4, 0],\n pivotGrid: getDarkPivotChartGridConfig(),\n annotation: getDarkAnnotation(),\n },\n barPercent: {\n ...baseConfig,\n\n xAxis: linearAxis,\n yAxis: barBandAxis,\n crosshairRect: crosshairRect,\n stackCornerRadius: [0, 4, 4, 0],\n pivotGrid: getDarkPivotChartGridConfig(),\n annotation: getDarkAnnotation(),\n },\n area: {\n ...baseConfig,\n\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine: crosshairLine,\n pivotGrid: getDarkPivotChartGridConfig(),\n annotation: getDarkAnnotation(),\n },\n areaPercent: {\n ...baseConfig,\n\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine: crosshairLine,\n pivotGrid: getDarkPivotChartGridConfig(),\n annotation: getDarkAnnotation(),\n },\n scatter: {\n ...baseConfig,\n crosshairLine,\n sizeRange: [8, 24],\n xAxis: {\n ...linearAxis,\n line: {\n ...linearAxis.line,\n visible: true,\n },\n },\n yAxis: {\n ...linearAxis,\n line: {\n ...linearAxis.line,\n visible: true,\n },\n },\n label: {\n ...baseConfig.label,\n showValue: false,\n showValuePercent: false,\n },\n pivotGrid: getDarkPivotChartGridConfig(),\n annotation: getDarkAnnotation(),\n regressionLine: getDarkRegressionLine(),\n },\n dualAxis: {\n ...baseConfig,\n xAxis: bandAxis,\n primaryYAxis: linearAxis,\n secondaryYAxis: { ...linearAxis, grid: { visible: false } },\n dualChartType: {\n primary: 'column',\n secondary: 'line',\n },\n crosshairRect,\n pivotGrid: getDarkPivotChartGridConfig(),\n annotation: getDarkAnnotation(),\n },\n // polar\n pie: {\n ...baseConfig,\n label: {\n ...baseConfig.label,\n showValuePercent: true,\n labelLayout: 'arc',\n showDimension: true,\n },\n pivotGrid: getDarkPivotChartGridConfig(),\n },\n donut: {\n ...baseConfig,\n label: {\n ...baseConfig.label,\n showValuePercent: true,\n labelLayout: 'arc',\n showDimension: true,\n },\n pivotGrid: getDarkPivotChartGridConfig(),\n },\n radar: {\n ...baseConfig,\n pivotGrid: getDarkPivotChartGridConfig(),\n },\n rose: {\n ...baseConfig,\n label: {\n ...baseConfig.label,\n showValuePercent: true,\n showDimension: true,\n },\n pivotGrid: getDarkPivotChartGridConfig(),\n },\n roseParallel: {\n ...baseConfig,\n label: {\n ...baseConfig.label,\n showValuePercent: true,\n showDimension: true,\n },\n\n pivotGrid: getDarkPivotChartGridConfig(),\n },\n // other\n funnel: {\n ...baseConfig,\n transform: getDarkFunnelTransformTheme(),\n\n pivotGrid: getDarkPivotChartGridConfig(),\n },\n heatmap: {\n ...baseConfig,\n label: {\n ...baseConfig.label,\n labelColorSmartInvert: true,\n },\n\n cell: getDarkHeatmapCellTheme(),\n pivotGrid: getDarkPivotChartGridConfig(),\n },\n histogram: {\n ...baseConfig,\n\n xAxis: linearAxis,\n yAxis: linearAxis,\n crosshairRect: crosshairRect,\n pivotGrid: getDarkPivotChartGridConfig(),\n annotation: getDarkAnnotation(),\n regressionLine: getDarkRegressionLine(),\n },\n boxPlot: {\n ...baseConfig,\n\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairRect: crosshairRect,\n pivotGrid: getDarkPivotChartGridConfig(),\n annotation: getDarkAnnotation(),\n },\n },\n }\n}\n","import type { CustomThemeConfig } from 'src/types'\nimport { Builder } from '../../builder'\nimport { darkTheme, lightTheme } from '../../../theme'\n\nexport const registerCustomTheme = (\n key: string,\n themeConfig:\n | CustomThemeConfig\n | ((props: { lightTheme: CustomThemeConfig; darkTheme: CustomThemeConfig }) => CustomThemeConfig),\n) => {\n const customTheme =\n typeof themeConfig === 'function' ? themeConfig({ lightTheme: lightTheme(), darkTheme: darkTheme() }) : themeConfig\n Builder._themeMap[key] = customTheme\n}\n","import { registerCustomTheme } from './custom'\nimport { lightTheme } from '../../../theme'\n\nexport const registerLightTheme = () => {\n registerCustomTheme('light', lightTheme())\n}\n","import { darkTheme } from '../../../theme'\nimport { registerCustomTheme } from './custom'\n\nexport const registerDarkTheme = () => {\n registerCustomTheme('dark', darkTheme())\n}\n","import {\n registerArea,\n registerAreaPercent,\n registerBar,\n registerBarParallel,\n registerBarPercent,\n registerColumn,\n registerColumnParallel,\n registerColumnPercent,\n registerLine,\n registerPie,\n registerDonut,\n registerRose,\n registerRoseParallel,\n registerFunnel,\n registerScatter,\n registerTable,\n registerPivotTable,\n registerHeatmap,\n registerRadar,\n registerDualAxis,\n registerBoxplot,\n registerHistogram,\n} from './chartType'\nimport { registerDarkTheme, registerLightTheme } from './theme'\n\nexport const registerAll = () => {\n // table\n registerTable()\n registerPivotTable()\n // cartesian\n registerLine()\n registerColumn()\n registerColumnParallel()\n registerColumnPercent()\n registerBar()\n registerBarParallel()\n registerBarPercent()\n registerArea()\n registerAreaPercent()\n registerScatter()\n registerDualAxis()\n // polar\n registerPie()\n registerDonut()\n registerRose()\n registerRoseParallel()\n registerRadar()\n // other\n registerFunnel()\n registerHeatmap()\n registerBoxplot()\n registerHistogram()\n // theme\n registerLightTheme()\n registerDarkTheme()\n}\n","import type { AdvancedPipe, ChartType, SpecPipe } from 'src/types'\nimport { Builder } from '../builder'\n\nexport const updateAdvanced = (chartType: ChartType, advancedPipe: AdvancedPipe) => {\n Builder._customAdvancedPipe[chartType] = advancedPipe\n}\nexport const updateSpec = (chartType: ChartType, specPipe: SpecPipe) => {\n Builder._customSpecPipe[chartType] = specPipe\n}\n","import { z } from 'zod'\n\nexport type ChartType =\n | 'table'\n | 'pivotTable'\n // cartesian\n | 'line'\n | 'column'\n | 'columnPercent'\n | 'columnParallel'\n | 'bar'\n | 'barPercent'\n | 'barParallel'\n | 'area'\n | 'areaPercent'\n | 'scatter'\n | 'dualAxis'\n // polar\n | 'rose'\n | 'roseParallel'\n | 'pie'\n | 'donut'\n | 'radar'\n // other\n | 'heatmap'\n | 'funnel'\n | 'boxPlot'\n | 'histogram'\n\nexport const zChartType = z.enum([\n 'table',\n 'pivotTable',\n // cartesian\n 'line',\n 'column',\n 'columnPercent',\n 'columnParallel',\n 'bar',\n 'barPercent',\n 'barParallel',\n 'area',\n 'areaPercent',\n 'scatter',\n 'dualAxis',\n // polar\n 'rose',\n 'roseParallel',\n 'pie',\n 'donut',\n 'radar',\n // other\n 'funnel',\n 'heatmap',\n 'boxPlot',\n 'histogram',\n])\n","import { z } from 'zod'\n\n// 'columnPercent' 和 'areaPercent' 会改变轴值域为[0,1], VTable不支持.\nexport const zDualChartType = z.object({\n primary: z.enum(['line', 'column', 'columnParallel', 'area', 'scatter']).default('column'),\n secondary: z.enum(['line', 'column', 'columnParallel', 'area', 'scatter']).default('line'),\n})\n\nexport type DualChartType = z.infer<typeof zDualChartType>\n","import { z } from 'zod'\n\n/**\n * example dataset link:\n * [\n * { date: '2019', 20001:'type', profit:10, sales: null, },\n * { date: '2020', 20001:'type', profit:30, sales: -1.1, },\n * { date: '2021', 20001:'type', profit:30, sales: 1, },\n * { date: '2023', 20001:'type', profit:40, sales: undefined, },\n * { date: '2022', 20001:'type', profit:50, sales: 100, },\n * ]\n */\nexport const zDatum = z.record(z.string().or(z.number()), z.any())\nexport const zDataset = z.array(zDatum)\n\nexport type Datum = z.infer<typeof zDatum>\nexport type Dataset = z.infer<typeof zDataset>\n","import { z } from 'zod'\nimport type { DimensionGroup } from './dimensions'\n\nexport const zDimension = z.object({\n id: z.string(),\n alias: z.string().optional(),\n encoding: z.enum(['xAxis', 'yAxis', 'angle', 'color', 'detail', 'tooltip', 'label', 'row', 'column']).optional(),\n})\nexport const zDimensionGroup: z.ZodType<DimensionGroup> = z.object({\n id: z.string(),\n alias: z.string().optional(),\n get children() {\n return z.array(zDimensionGroup.or(zDimension)).optional()\n },\n})\nexport const zDimensions = z.array(zDimension)\nexport const zDimensionTree = z.array(zDimensionGroup.or(zDimension))\n","import { z } from 'zod'\n\nexport interface NumFormat {\n /**\n * @description 数字格式化类型, 支持数值(十进制)、百分比(%)、千分比(‰)、科学计数法\n * @default 'number'\n */\n type?: 'number' | 'percent' | 'permille' | 'scientific'\n\n /**\n * @description 数值格式化比例, 不能为0\n * @default 1\n * @example\n * - 100000 转换为 10万, ratio:10000, symbol:\"万\"\n * - 100000 转换为 10K, ratio:1000, symbol:\"K\"\n */\n ratio?: number\n\n /**\n * @description 数值格式化符号, 例如%、‰\n * @default ''\n * @example\n * - 100000 转换为 10万, ratio:10000, symbol:\"万\"\n * - 100000 转换为 10K, ratio:1000, symbol:\"K\"\n */\n symbol?: string\n\n /**\n * @description 数值格式化千分位分隔符\n * @default true\n */\n thousandSeparator?: boolean\n\n /**\n * @description 数值格式化后缀\n * @default ''\n */\n suffix?: string\n /**\n * @description 数值格式化前缀\n * @default ''\n */\n prefix?: string\n\n /**\n * @description 数值格式化小数位, 使用浏览器提供的 Intl.NumberFormat 中的 minimumFractionDigits 和 maximumFractionDigits 进行格式化, 优先级低于 significantDigits\n * @default 2\n * @example\n * - 1234.5678 转换为 1235, fractionDigits:0 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.6, fractionDigits:1 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.57, fractionDigits:2 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1230.568, fractionDigits:3 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.5678, fractionDigits:4 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.56780, fractionDigits:5 (roundingMode:halfCeil)\n */\n fractionDigits?: number\n\n /**\n * @description 数值格式化有效位, 使用浏览器提供的 Intl.NumberFormat 中的 minimumSignificantDigits 和 maximumSignificantDigits 进行格式化, 优先级高于 fractionDigits\n * @default undefined\n * @example\n * - 1234.5678 转换为 1000, significantDigits:1\n * - 1234.5678 转换为 1200, significantDigits:2\n * - 1234.5678 转换为 1230, significantDigits:3\n * - 1234.5678 转换为 1234, significantDigits:4\n * - 1234.5678 转换为 1234.6, significantDigits:5 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.57, significantDigits:6 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.568, significantDigits:7 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.5678, significantDigits:8 (roundingMode:halfCeil)\n */\n significantDigits?: number\n\n /**\n * @description 数值格式化舍入优先级, 处理同时设置了 significantDigits 和 fractionDigits 时的舍入优先级, 使用浏览器提供的 Intl.NumberFormat 进行格式化, 规则同 Intl.NumberFormat 中的 roundingPriority\n * @default 'morePrecision'\n * @example\n * - 1234.5678 转换为 1230, significantDigits:3 (roundingPriority:lessPrecision)\n * - 1234.5678 转换为 1234.5678, significantDigits:3 (roundingPriority:morePrecision)\n */\n roundingPriority?: 'morePrecision' | 'lessPrecision'\n\n /**\n * @description 数值格式化舍入模式, 使用浏览器提供的 Intl.NumberFormat 进行格式化, 规则同 Intl.NumberFormat 中的 roundingMode\n * @default 'halfExpand'\n * @example\n */\n roundingMode?:\n | 'floor'\n | 'ceil'\n | 'expand'\n | 'trunc'\n | 'halfCeil'\n | 'halfFloor'\n | 'halfExpand'\n | 'halfTrunc'\n | 'halfEven'\n}\n\nexport const zNumFormat = z\n .object({\n type: z.enum(['number', 'percent', 'permille', 'scientific']).default('number').optional(),\n ratio: z.number().default(1).optional(),\n symbol: z.string().default('').optional(),\n thousandSeparator: z.boolean().default(false).optional(),\n prefix: z.string().default('').optional(),\n suffix: z.string().default('').optional(),\n\n fractionDigits: z.number().default(2).optional(),\n significantDigits: z.number().default(0).optional(),\n roundingPriority: z.enum(['morePrecision', 'lessPrecision']).default('morePrecision').optional(),\n roundingMode: z\n .enum(['floor', 'ceil', 'halfEven', 'expand', 'trunc', 'halfFloor', 'halfCeil', 'halfExpand', 'halfTrunc'])\n .default('halfCeil')\n .optional(),\n })\n .optional()\n","import { z } from 'zod'\nimport { zNumFormat } from '../format/numFormat'\nimport type { MeasureGroup } from './measures'\n\nexport const zMeasure = z.object({\n id: z.string(),\n alias: z.string().optional(),\n autoFormat: z.boolean().default(true),\n numFormat: zNumFormat.default({}),\n format: zNumFormat.default({}),\n encoding: z\n .enum([\n 'primaryYAxis',\n 'secondaryYAxis',\n 'xAxis',\n 'yAxis',\n 'angle',\n 'radius',\n 'size',\n 'color',\n 'label',\n 'tooltip',\n 'detail',\n 'column',\n ])\n .optional(),\n parentId: z.string().optional(),\n})\n\nexport const zMeasureGroup: z.ZodType<MeasureGroup> = z.object({\n id: z.string(),\n alias: z.string().optional(),\n get children() {\n return z.array(zMeasureGroup.or(zMeasure)).optional()\n },\n})\n\nexport const zMeasures = z.array(zMeasure)\nexport const zMeasureTree = z.array(zMeasureGroup.or(zMeasure))\n","import { z } from 'zod'\nimport { zMeasure } from './zMeasures'\n\nexport const zDualMeasure = z.object({\n id: z.string(),\n\n primaryMeasures: z\n .array(\n zMeasure.omit({\n encoding: true,\n parentId: true,\n }),\n )\n .or(\n zMeasure.omit({\n parentId: true,\n encoding: true,\n }),\n )\n .optional(),\n\n secondaryMeasures: z.array(zMeasure).or(zMeasure).optional(),\n})\n\nexport const zDualMeasures = z.array(zDualMeasure)\n","import { z } from 'zod'\nimport { zMeasure } from './zMeasures'\n\nexport const zScatterMeasure = z.object({\n id: z.string(),\n\n xMeasures: z\n .array(\n zMeasure.omit({\n parentId: true,\n encoding: true,\n }),\n )\n .or(zMeasure)\n .optional(),\n\n yMeasures: z\n .array(\n zMeasure.omit({\n parentId: true,\n encoding: true,\n }),\n )\n .or(zMeasure)\n .optional(),\n})\n\nexport const zScatterMeasures = z.array(zScatterMeasure)\n","import { z } from 'zod'\n\nexport const zFoldInfo = z.object({\n foldMap: z.record(z.string(), z.string().or(z.undefined())),\n statistics: z.object({\n min: z.number(),\n max: z.number(),\n sum: z.number(),\n count: z.number(),\n colorMin: z.number(),\n colorMax: z.number(),\n }),\n measureId: z.string(),\n measureName: z.string(),\n measureValue: z.string(),\n})\nexport const zUnfoldInfo = z.object({\n encodingX: z.string(),\n encodingY: z.string(),\n encodingColor: z.string(),\n encodingColorId: z.string(),\n encodingDetail: z.string(),\n encodingAngle: z.string(),\n colorItems: z.array(z.string()),\n colorIdMap: z.record(z.string(), z.string()),\n})\n\nexport const zDatasetReshapeInfo = z.array(\n z.object({\n id: z.string(),\n index: z.number(),\n foldInfo: zFoldInfo,\n foldInfoList: z.array(zFoldInfo).nullish(),\n unfoldInfo: zUnfoldInfo,\n }),\n)\n","import { z } from 'zod'\n\nexport const zEncoding = z.object({\n x: z.array(z.string()).nullish(),\n y: z.array(z.string()).nullish(),\n angle: z.array(z.string()).nullish(),\n radius: z.array(z.string()).nullish(),\n detail: z.array(z.string()).nullish(),\n\n color: z.array(z.string()).nullish(),\n size: z.array(z.string()).nullish(),\n tooltip: z.array(z.string()).nullish(),\n label: z.array(z.string()).nullish(),\n\n row: z.array(z.string()).nullish(),\n column: z.array(z.string()).nullish(),\n\n group: z.array(z.string()).nullish().describe('已弃用, 请使用颜色替代'),\n value: z.array(z.string()).nullish(),\n q1: z.array(z.string()).nullish(),\n q3: z.array(z.string()).nullish(),\n median: z.array(z.string()).nullish(),\n min: z.array(z.string()).nullish(),\n max: z.array(z.string()).nullish(),\n outliers: z.array(z.string()).nullish(),\n\n x0: z.array(z.string()).nullish(),\n x1: z.array(z.string()).nullish(),\n})\n\n/**\n * @description 仅VSeed内AdvancedVSeed使用此结构, 其余场景请使用DimensionEncodingEnum、MeasureEncodingEnum\n */\nexport const EncodingEnum = {\n x: 'x',\n y: 'y',\n angle: 'angle',\n radius: 'radius',\n detail: 'detail',\n\n color: 'color',\n size: 'size',\n tooltip: 'tooltip',\n label: 'label',\n\n row: 'row',\n column: 'column',\n\n group: 'group',\n} as const\n","import { z } from 'zod'\n\nexport const zDimensionEncoding = z.enum([\n 'xAxis',\n 'yAxis',\n 'angle',\n 'color',\n 'detail',\n 'tooltip',\n 'label',\n 'row',\n 'column',\n])\n\nexport const DimensionEncodingEnum = {\n xAxis: 'xAxis',\n yAxis: 'yAxis',\n angle: 'angle',\n color: 'color',\n detail: 'detail',\n tooltip: 'tooltip',\n label: 'label',\n row: 'row',\n column: 'column',\n} as const\n","import { z } from 'zod'\n\nexport const zMeasureEncoding = z.enum([\n 'primaryYAxis',\n 'secondaryYAxis',\n 'xAxis',\n 'yAxis',\n 'angle',\n 'radius',\n 'size',\n 'color',\n 'detail',\n 'column',\n 'label',\n 'tooltip',\n])\n\nexport const MeasureEncodingEnum = {\n primaryYAxis: 'primaryYAxis',\n secondaryYAxis: 'secondaryYAxis',\n xAxis: 'xAxis',\n yAxis: 'yAxis',\n angle: 'angle',\n radius: 'radius',\n size: 'size',\n color: 'color',\n detail: 'detail',\n column: 'column',\n label: 'label',\n tooltip: 'tooltip',\n} as const\n","import { z } from 'zod'\nexport const zBackgroundColor = z.string().default('transparent').nullish()\n\n/**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\nexport type BackgroundColor = string | undefined\n","import { z } from 'zod'\nimport { zBackgroundColor } from './backgroundColor/backgroundColor'\n\nexport const zTableConfig = z.object({\n backgroundColor: zBackgroundColor.nullish(),\n\n // Border\n borderColor: z.string().nullish(),\n\n // Body\n bodyFontSize: z.number().nullish(),\n bodyFontColor: z.string().nullish(),\n bodyBackgroundColor: z.string().nullish(),\n // Body interaction\n hoverBodyBackgroundColor: z.string().nullish(),\n hoverBodyInlineBackgroundColor: z.string().nullish(),\n\n // Header\n headerFontSize: z.number().nullish(),\n headerFontColor: z.string().nullish(),\n headerBackgroundColor: z.string().nullish(),\n // Header interaction\n hoverHeaderBackgroundColor: z.string().nullish(),\n hoverHeaderInlineBackgroundColor: z.string().nullish(),\n\n // Interaction\n selectedBorderColor: z.string().nullish(),\n selectedBackgroundColor: z.string().nullish(),\n})\n\nexport type TableConfig = z.infer<typeof zTableConfig>\n","import { z } from 'zod'\n\nexport const zXBandAxis = z.object({\n visible: z.boolean().default(true).nullish(),\n\n labelAutoHide: z.boolean().default(true).nullish(),\n labelAutoHideGap: z.number().default(0).nullish(),\n labelAutoRotate: z.boolean().default(true).nullish(),\n labelAutoRotateAngleRange: z.array(z.number()).default([0, -45, -90]).nullish(),\n labelAutoLimit: z.boolean().default(true).nullish(),\n labelAutoLimitLength: z.number().default(100).nullish(),\n label: z\n .object({\n visible: z.boolean().default(true).nullish(),\n labelColor: z.string().default('#797B85').nullish(),\n labelFontSize: z.number().default(12).nullish(),\n labelFontWeight: z.number().default(400).nullish(),\n labelAngle: z.number().default(0).nullish(),\n })\n .nullish(),\n line: z\n .object({\n visible: z.boolean().default(true).nullish(),\n lineColor: z.string().default('rgba(54, 65, 89, 0.30)').nullish(),\n lineWidth: z.number().default(1).nullish(),\n })\n .nullish(),\n tick: z\n .object({\n visible: z.boolean().default(true).nullish(),\n tickInside: z.boolean().default(false).nullish(),\n tickColor: z.string().default('rgba(54, 65, 89, 0.30)').nullish(),\n tickSize: z.number().default(4).nullish(),\n })\n .nullish(),\n title: z\n .object({\n visible: z.boolean().default(false).nullish(),\n titleText: z.string().default('').nullish(),\n titleColor: z.string().default('#646A73').nullish(),\n titleFontSize: z.number().default(12).nullish(),\n titleFontWeight: z.number().default(400).nullish(),\n })\n .nullish(),\n grid: z\n .object({\n visible: z.boolean().default(false).nullish(),\n gridColor: z.string().default('rgba(54, 65, 89, 0.15)').nullish(),\n gridWidth: z.number().default(0.5).nullish(),\n gridLineDash: z.array(z.number()).nullish(),\n })\n .nullish(),\n})\nexport const zYBandAxis = zXBandAxis\n","import { z } from 'zod'\nimport { zNumFormat } from '../../format'\n\nexport const zXLinearAxis = z.object({\n visible: z.boolean().default(true).nullish(),\n\n min: z.number().nullish(),\n max: z.number().nullish(),\n nice: z.boolean().default(true).nullish(),\n zero: z.boolean().default(true).nullish(),\n log: z.boolean().default(false).nullish(),\n logBase: z.number().default(10).nullish(),\n inverse: z.boolean().default(false).nullish(),\n numFormat: zNumFormat.nullish(),\n label: z\n .object({\n visible: z.boolean().default(true).nullish(),\n labelColor: z.string().default('#797B85').nullish(),\n labelFontSize: z.number().default(12).nullish(),\n labelFontWeight: z.number().default(400).nullish(),\n labelAngle: z.number().default(0).nullish(),\n })\n .nullish(),\n line: z\n .object({\n visible: z.boolean().default(true).nullish(),\n lineColor: z.string().default('rgba(54, 65, 89, 0.30)').nullish(),\n lineWidth: z.number().default(1).nullish(),\n })\n .nullish(),\n tick: z\n .object({\n visible: z.boolean().default(true).nullish(),\n tickInside: z.boolean().default(false).nullish(),\n tickColor: z.string().default('rgba(54, 65, 89, 0.30)').nullish(),\n tickSize: z.number().default(4).nullish(),\n })\n .nullish(),\n title: z\n .object({\n visible: z.boolean().default(false).nullish(),\n titleText: z.string().default('').nullish(),\n titleColor: z.string().default('#646A73').nullish(),\n titleFontSize: z.number().default(12).nullish(),\n titleFontWeight: z.number().default(400).nullish(),\n })\n .nullish(),\n grid: z\n .object({\n visible: z.boolean().default(false).nullish(),\n gridColor: z.string().default('rgba(54, 65, 89, 0.15)').nullish(),\n gridWidth: z.number().default(0.5).nullish(),\n gridLineDash: z.array(z.number()).nullish(),\n })\n .nullish(),\n})\n\nexport const zYLinearAxis = zXLinearAxis\n","import { z } from 'zod'\n\nexport const zCrosshairLine = z.object({\n visible: z.boolean().nullish(),\n lineColor: z.string().nullish(),\n labelColor: z.string().nullish(),\n labelVisible: z.boolean().nullish(),\n labelBackgroundColor: z.string().nullish(),\n lineDash: z.array(z.number()).nullish(),\n})\n\nexport const zCrosshairRect = z.object({\n visible: z.boolean().nullish(),\n rectColor: z.string().nullish(),\n labelColor: z.string().nullish(),\n labelVisible: z.boolean().nullish(),\n labelBackgroundColor: z.string().nullish(),\n})\n","import { z } from 'zod'\n\nexport const zColor = z.object({\n colorScheme: z.array(z.string()).nullish(),\n linearColorScheme: z.array(z.string()).nullish(),\n colorMapping: z.record(z.string(), z.string()).nullish(),\n})\n\nexport const zLinearColor = z.object({\n linearColorScheme: z.array(z.string()).nullish(),\n})\n\nexport type Color = {\n /**\n * @description 离散颜色配色方案, 颜色配色方案用于定义图表中不同元素的颜色\n * @example ['#FFCDD2,#F8BBD0,#E1BEE7,#D1C4E9,#C5CAE9,#BBDEFB,#B3E5FC,#B2EBF2,#B2DFDB,#C8E6C9,#DCEDC8,#F0F4C3,#FFF9C4,#FFECB3,#FFE0B2']\n */\n colorScheme?: string[]\n /**\n * @description 线性渐变颜色配色方案, 线性渐变颜色配色方案用于定义图表中不同元素的颜色\n * @example ['#FFCDD2, #F8BBD0]\n */\n linearColorScheme?: string[]\n /**\n * @description 颜色映射, 颜色映射用于将数据值映射到具体的颜色\n * @example\n * {\n * 'profit': 'red',\n * 'sales': 'blue',\n * }\n */\n colorMapping?: Record<string, string>\n /**\n * @description 正负颜色配置, 用于定义图表中正值的颜色\n */\n positiveColor?: string\n /**\n * @description 正负颜色配置, 用于定义图表中负值的颜色\n */\n negativeColor?: string\n}\n","import { z } from 'zod'\nimport { zNumFormat } from '../../format'\n\nexport const zLabel = z.object({\n enable: z.boolean().nullish(),\n wrap: z.boolean().nullish(),\n showValue: z.boolean().nullish(),\n showValuePercent: z.boolean().nullish(),\n showDimension: z.boolean().nullish(),\n autoFormat: z.boolean().nullish(),\n numFormat: zNumFormat.nullish(),\n labelFontSize: z.number().nullish(),\n labelFontWeight: z.number().or(z.string()).nullish(),\n labelBackgroundColor: z.string().nullish(),\n labelColor: z.string().nullish(),\n labelColorSmartInvert: z.boolean().nullish(),\n labelPosition: z.string().nullish(),\n labelOverlap: z.boolean().nullish(),\n})\n","import { z } from 'zod'\n\nexport type Legend = {\n /**\n * 图例功能是否开启\n * @default true\n * @example enable: true\n */\n enable?: boolean\n /**\n * @description 图例边框是否开启\n * @warning 仅离散图例生效\n * @default true\n * @example border: true\n */\n border?: boolean\n\n /**\n * @description 图例字体颜色\n */\n labelColor?: string\n\n /**\n * @description 图例字体大小\n * @example labelFontSize: 10\n */\n labelFontSize?: number\n\n /**\n * @description 图例字体颜色\n * @deprecated use labelColor instead\n */\n labelFontColor?: string\n\n /**\n * @description 图例字体粗细\n * @example labelFontWeight: 400\n */\n labelFontWeight?: number | string\n /**\n * @description 图例形状\n * @warning 仅离散图例生效\n * @example shapeType: 'circle'\n */\n shapeType?:\n | 'circle'\n | 'cross'\n | 'diamond'\n | 'square'\n | 'arrow'\n | 'arrow2Left'\n | 'arrow2Right'\n | 'wedge'\n | 'thinTriangle'\n | 'triangle'\n | 'triangleUp'\n | 'triangleDown'\n | 'triangleRight'\n | 'triangleLeft'\n | 'stroke'\n | 'star'\n | 'wye'\n | 'rect'\n | 'arrowLeft'\n | 'arrowRight'\n | 'rectRound'\n | 'roundLine'\n /**\n * 图例位置\n * @default 'right'\n * @example position: 'rightTop'\n */\n position?:\n | 'left'\n | 'leftTop'\n | 'leftBottom'\n | 'lt'\n | 'lb'\n | 'top'\n | 'topLeft'\n | 'topRight'\n | 'tl'\n | 'tr'\n | 'right'\n | 'rightTop'\n | 'rightBottom'\n | 'rt'\n | 'rb'\n | 'bottom'\n | 'bottomLeft'\n | 'bottomRight'\n | 'bl'\n | 'br'\n\n /**\n * @description 存在大量图例时, 最大列数 或 图例最大行数\n * 如果position为水平方向(bottom, bottomLeft, bottomRight, bl, br, top, topLeft, topRight, tl, tr), maxSize控制显示的列数\n * 如果position为垂直方向(left, leftTop, leftBottom, lt, lb, right, rightTop, rightBottom, rt, rb), maxSize控制显示的行数\n *\n * @warning 仅离散图例生效\n * @example maxSize: 2\n * @default 1\n */\n maxSize?: number\n}\n\nexport const zLegend = z.object({\n enable: z.boolean().default(true).nullish(),\n border: z.boolean().default(true).nullish(),\n maxSize: z.number().default(1).nullish(),\n shapeType: z\n .enum([\n 'circle',\n 'cross',\n 'diamond',\n 'square',\n 'arrow',\n 'arrow2Left',\n 'arrow2Right',\n 'wedge',\n 'thinTriangle',\n 'triangle',\n 'triangleUp',\n 'triangleDown',\n 'triangleRight',\n 'triangleLeft',\n 'stroke',\n 'star',\n 'wye',\n 'rect',\n 'arrowLeft',\n 'arrowRight',\n 'rectRound',\n 'roundLine',\n ])\n .default('rectRound')\n .nullish(),\n position: z\n .enum([\n 'left',\n 'leftTop',\n 'leftBottom',\n 'lt',\n 'lb',\n 'top',\n 'topLeft',\n 'topRight',\n 'tl',\n 'tr',\n 'right',\n 'rightTop',\n 'rightBottom',\n 'rt',\n 'rb',\n 'bottom',\n 'bottomLeft',\n 'bottomRight',\n 'bl',\n 'br',\n ])\n .default('bottom')\n .nullish(),\n labelColor: z.string().default('#fff').nullish(),\n labelFontSize: z.number().default(12).nullish(),\n labelFontWeight: z.number().or(z.string()).default(400).nullish(),\n})\n\nexport type ColorLegend = Pick<Legend, 'position' | 'enable'>\nexport const zColorLegend = z.object({\n position: z\n .enum([\n 'left',\n 'leftTop',\n 'leftBottom',\n 'lt',\n 'lb',\n 'top',\n 'topLeft',\n 'topRight',\n 'tl',\n 'tr',\n 'right',\n 'rightTop',\n 'rightBottom',\n 'rt',\n 'rb',\n 'bottom',\n 'bottomLeft',\n 'bottomRight',\n 'bl',\n 'br',\n ])\n .default('bottom')\n .nullish(),\n enable: z.boolean().default(true).nullish(),\n})\n","import { z } from 'zod'\n\nexport const zTooltip = z.object({\n enable: z.boolean().default(true).nullish(),\n})\n\nexport type Tooltip = {\n /**\n * 提示信息功能是否开启\n * @default true\n */\n enable: boolean\n}\n","import { z } from 'zod'\nimport type { Datum } from '../properties'\n\nexport type ValueSelector = string | number\n\nexport type PartialDatumSelector = Datum\n\n/**\n * @description 指标选择器, 用于选择数据项中指标字段的值\n */\nexport type MeasureSelector = {\n /**\n * @description 指标字段, measures 某一项的 id\n */\n field: string\n /**\n * @description 操作符\n * - =: 选择数据项中指标字段的值等于 value 的数据项\n * - ==: 选择数据项中指标字段的值等于 value 的数据项\n * - !=: 选择数据项中指标字段的值不等于 value 的数据项\n * - >: 选择数据项中指标字段的值大于 value 的数据项\n * - <: 选择数据项中指标字段的值小于 value 的数据项\n * - >=: 选择数据项中指标字段的值大于等于 value 的数据项\n * - <=: 选择数据项中指标字段的值小于等于 value 的数据项\n * - between: 选择数据项中指标字段的值在 value 之间的 data item\n */\n operator?: '=' | '==' | '!=' | '>' | '<' | '>=' | '<=' | 'between'\n /**\n * @description 操作符\n * - =: 选择数据项中指标字段的值等于 value 的数据项, 会将值转换为字符串后进行比较, 因此 1 == \"1\" 为 true\n * - ==: 选择数据项中指标字段的值精准等于 value 的数据项, 不会做任何特殊处理, 因此 1 == \"1\" 为 false\n * - !=: 选择数据项中指标字段的值不等于 value 的数据项\n * - >: 选择数据项中指标字段的值大于 value 的数据项\n * - <: 选择数据项中指标字段的值小于 value 的数据项\n * - >=: 选择数据项中指标字段的值大于等于 value 的数据项\n * - <=: 选择数据项中指标字段的值小于等于 value 的数据项\n * - between: 选择数据项中指标字段的值在 value 之间的 data item\n * same as operator\n */\n op?: '=' | '==' | '!=' | '>' | '<' | '>=' | '<=' | 'between'\n /**\n * @description 选择数据项中指标字段的值\n * - 仅 op 为 between 时, value 为长度为2的数组, 数组中的元素为指标字段的最小值和最大值\n * - 其他情况, value 为指标字段的单个值\n */\n value: string | number | Array<string | number>\n // /**\n // * @description 是否使用原始数据进行数据匹配, 开启后会有更多的数据被匹配到\n // * 若下述数据, measures 仅设置了 value, field 为 isHigh 或 isLow, op 为 =, value 为 1,\n // * 关闭useOrigin时, 数据项并不会考虑measures之外的字段, 因此field为isHigh或isLow的字段会被忽略\n // * 开启useOrigin时, 会直接使用整个数据项进行匹配\n // * [\n // * {value: 100, isHigh: 1, isLow: 0},\n // * {value: 200, isHigh: 0, isLow: 1},\n // * {value: 300, isHigh: 1, isLow: 0},\n // * ]\n // * @default false\n // */\n // useOrigin?: boolean\n}\n\n/**\n * @description 维度选择器, 用于选择数据项中维度字段的值\n */\nexport type DimensionSelector = {\n /**\n * @description 维度字段, dimensions 某一项的 id\n */\n field: string\n /**\n * @description 操作符\n * - in: 选择数据项中维度字段的值在 value 中的数据项\n * - not in: 选择数据项中维度字段的值不在 value 中的数据项\n */\n operator?: 'in' | 'not in'\n /**\n * @description 操作符\n * - in: 选择数据项中维度字段的值在 value 中的数据项\n * - not in: 选择数据项中维度字段的值不在 value 中的数据项\n * same as operator\n */\n op?: 'in' | 'not in'\n /**\n * @description 选择数据项中维度字段的值, 支持数组\n */\n value: string | number | Array<string | number>\n // /**\n // * @description 是否使用原始数据进行数据匹配, 开启后会有更多的数据被匹配到\n // * 若下述数据, dimensions 仅设置了 name, field 为 name, op 为 =, value 为 \"high\",\n // * 关闭useOrigin时, 数据项并不会考虑dimensions之外的字段, 因此field为name的字段会被忽略\n // * 开启useOrigin时, 会直接使用整个数据项进行匹配\n // * [\n // * {name: \"low\", isHigh: \"false\", isLow: \"true\"},\n // * {name: \"low\", isHigh: \"false\", isLow: \"true\"},\n // * {name: \"high\", isHigh: \"true\", isLow: \"false\"},\n // * ]\n // * @default false\n // */\n // useOrigin?: boolean\n}\n\nexport type Selector = ValueSelector | PartialDatumSelector | MeasureSelector | DimensionSelector\n\nexport type Selectors = Array<Selector>\n\nexport const zSelector = z.union([\n z.string(),\n z.number(),\n z.object({\n field: z.string(),\n operator: z.enum(['=', '==', '!=', '>', '<', '>=', '<=', 'between']).nullish(),\n op: z.enum(['=', '==', '!=', '>', '<', '>=', '<=', 'between']).nullish(),\n value: z.union([z.string(), z.number(), z.array(z.union([z.string(), z.number()]))]),\n }),\n z.object({\n field: z.string(),\n operator: z.enum(['in', 'not in']).nullish(),\n op: z.enum(['in', 'not in']).nullish(),\n value: z.union([z.string(), z.number(), z.array(z.union([z.string(), z.number()]))]),\n }),\n])\n\nexport const zSelectors = z.array(zSelector)\n","import { zSelector, zSelectors } from '../../dataSelector'\nimport { z } from 'zod'\n\nexport const zAnnotationPoint = z.object({\n selector: z.union([zSelector, zSelectors]).nullish(),\n text: z.string().or(z.array(z.string())).nullish(),\n textColor: z.string().default('#ffffff').nullish(),\n textFontSize: z.number().default(12).nullish(),\n textFontWeight: z.number().default(400).nullish(),\n textAlign: z.enum(['left', 'right', 'center']).default('center').nullish(),\n textBaseline: z.enum(['top', 'middle', 'bottom']).default('middle').nullish(),\n textBackgroundVisible: z.boolean().default(true).nullish(),\n textBackgroundColor: z.string().default('#212121').nullish(),\n textBackgroundBorderColor: z.string().nullish(),\n textBackgroundBorderWidth: z.number().default(1).nullish(),\n textBackgroundBorderRadius: z.number().default(4).nullish(),\n textBackgroundPadding: z.number().nullish(),\n\n offsetY: z.number().default(0).nullish(),\n offsetX: z.number().default(0).nullish(),\n})\n","import { zSelector, zSelectors } from '../../dataSelector'\nimport { z } from 'zod'\n\nexport const zAnnotationHorizontalLine = z.object({\n selector: z.union([zSelector, zSelectors]).nullish(),\n yValue: z.union([z.number(), z.string(), z.array(z.union([z.number(), z.string()]))]).nullish(),\n text: z.string().or(z.array(z.string())).nullish(),\n textPosition: z\n .enum(['outsideStart', 'outsideEnd', 'outsideMiddle', 'insideStart', 'insideMiddle', 'insideEnd'])\n .default('insideEnd')\n .nullish(),\n textColor: z.string().default('#ffffff').nullish(),\n textFontSize: z.number().default(12).nullish(),\n textFontWeight: z.number().default(400).nullish(),\n textAlign: z.enum(['left', 'right', 'center']).default('right').nullish(),\n textBaseline: z.enum(['top', 'middle', 'bottom']).default('top').nullish(),\n\n lineVisible: z.boolean().default(true).nullish(),\n lineColor: z.string().default('#212121').nullish(),\n lineWidth: z.number().default(1).nullish(),\n lineStyle: z\n .union([z.literal('solid'), z.literal('dashed'), z.literal('dotted')])\n .default('dashed')\n .nullish(),\n\n textBackgroundVisible: z.boolean().default(true).nullish(),\n textBackgroundColor: z.string().default('#212121').nullish(),\n textBackgroundBorderColor: z.string().default('#212121').nullish(),\n textBackgroundBorderRadius: z.number().default(4).nullish(),\n textBackgroundBorderWidth: z.number().default(1).nullish(),\n textBackgroundPadding: z.number().default(2).nullish(),\n})\n","import { zSelector, zSelectors } from '../../dataSelector'\nimport { z } from 'zod'\n\nexport const zAnnotationArea = z.object({\n selector: z.union([zSelector, zSelectors]).nullish(),\n textPosition: z\n .enum(['top', 'topRight', 'topLeft', 'bottom', 'bottomLeft', 'bottomRight', 'left', 'right'])\n .default('top')\n .nullish(),\n text: z.string().or(z.array(z.string())).nullish(),\n textColor: z.string().default('#ffffff').nullish(),\n textFontSize: z.number().default(12).nullish(),\n textFontWeight: z.number().default(400).nullish(),\n textAlign: z.enum(['left', 'right', 'center']).default('center').nullish(),\n textBaseline: z.enum(['top', 'middle', 'bottom']).default('top').nullish(),\n\n textBackgroundVisible: z.boolean().default(true).nullish(),\n textBackgroundColor: z.string().default('#191d24').nullish(),\n textBackgroundBorderColor: z.string().default('#191d24').nullish(),\n textBackgroundBorderWidth: z.number().default(1).nullish(),\n textBackgroundBorderRadius: z.number().default(4).nullish(),\n textBackgroundPadding: z.number().default(4).nullish(),\n\n areaColor: z.string().default('#888888').nullish(),\n areaColorOpacity: z.number().default(0.15).nullish(),\n areaBorderColor: z.string().default('#888888').nullish(),\n areaBorderWidth: z.number().default(1).nullish(),\n areaBorderRadius: z.number().default(4).nullish(),\n areaLineDash: z.array(z.number()).nullish(),\n\n outerPadding: z.number().default(4).nullish(),\n})\n","import { z } from 'zod'\nimport { zAnnotationPoint } from '../../annotation/zAnnotationPoint'\nimport { zAnnotationHorizontalLine } from '../../annotation/zAnnotationHorizontalLine'\nimport { zAnnotationArea } from '../../annotation/zAnnotationArea'\n\nexport const zAnnotationPointConfig = zAnnotationPoint.omit({ selector: true, text: true }).partial()\n\n// Use pick to explicitly list fields we want to expose in config variants.\nexport const zAnnotationHorizontalLineConfig = zAnnotationHorizontalLine\n .pick({\n // only pick fields that exist on the runtime schema\n lineColor: true,\n lineWidth: true,\n lineVisible: true,\n lineStyle: true,\n\n textBackgroundVisible: true,\n textColor: true,\n textFontSize: true,\n textFontWeight: true,\n textBackgroundColor: true,\n textBackgroundBorderColor: true,\n textBackgroundBorderWidth: true,\n textBackgroundBorderRadius: true,\n textBackgroundPadding: true,\n })\n // extend with additional config-only fields that runtime schema doesn't include\n .extend({\n endSymbolVisible: z.boolean().nullish(),\n endSymbolType: z.string().nullish(),\n endSymbolSize: z.number().nullish(),\n\n startSymbolVisible: z.boolean().nullish(),\n startSymbolType: z.string().nullish(),\n startSymbolSize: z.number().nullish(),\n })\n .partial()\n\nexport const zAnnotationVerticalLineConfig = zAnnotationHorizontalLineConfig.clone()\n\nexport const zAnnotationAreaConfig = zAnnotationArea\n .pick({\n textColor: true,\n textFontSize: true,\n textFontWeight: true,\n\n textBackgroundVisible: true,\n textBackgroundColor: true,\n textBackgroundBorderColor: true,\n textBackgroundBorderWidth: true,\n textBackgroundBorderRadius: true,\n textBackgroundPadding: true,\n\n areaColor: true,\n areaColorOpacity: true,\n areaBorderColor: true,\n areaBorderWidth: true,\n areaBorderRadius: true,\n areaLineDash: true,\n\n outerPadding: true,\n })\n .partial()\n\nexport const zAnnotationConfig = z.object({\n annotationPoint: zAnnotationPointConfig.nullish(),\n annotationHorizontalLine: zAnnotationHorizontalLineConfig.nullish(),\n annotationVerticalLine: zAnnotationVerticalLineConfig.nullish(),\n annotationArea: zAnnotationAreaConfig.nullish(),\n})\n","import { z } from 'zod'\n\nexport const zPivotChartGridConfig = z.object({\n borderColor: z.string().nullish(),\n bodyFontColor: z.string().nullish(),\n headerFontColor: z.string().nullish(),\n headerBackgroundColor: z.string().nullish(),\n hoverHeaderBackgroundColor: z.string().nullish(),\n hoverHeaderInlineBackgroundColor: z.string().nullish(),\n outlineBorderLineWidth: z.number().nullish(),\n frameCornerRadius: z.number().nullish(),\n\n minChartWidth: z.number().nullish(),\n minChartHeight: z.number().nullish(),\n\n titleFontColor: z.string().nullish(),\n titleFontSize: z.number().nullish(),\n titleFontWeight: z.string().nullish(),\n})\n\nexport type PivotChartGridConfig = z.infer<typeof zPivotChartGridConfig>\n","import { z } from 'zod'\nimport { zXBandAxis, zYLinearAxis } from './axes'\nimport { zCrosshairLine } from './crosshair'\nimport { zBackgroundColor } from './backgroundColor/backgroundColor'\nimport { zColor } from './color/color'\nimport { zLabel } from './label'\nimport { zLegend } from './legend/legend'\nimport { zTooltip } from './tooltip/tooltip'\nimport { zAnnotationConfig } from './annotation/zAnnotaion'\nimport { zPivotChartGridConfig } from './pivotGrid'\n\nexport const zLineConfig = z.object({\n backgroundColor: zBackgroundColor.nullish(),\n label: zLabel.nullish(),\n color: zColor.nullish(),\n tooltip: zTooltip.nullish(),\n legend: zLegend.nullish(),\n\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairLine: zCrosshairLine.nullish(),\n pivotGrid: zPivotChartGridConfig.nullish(),\n annotation: zAnnotationConfig.nullish(),\n})\n\nexport type LineConfig = z.infer<typeof zLineConfig>\n","import { z } from 'zod'\n\nexport const zStackCornerRadius = z.number().or(z.array(z.number())).default([3, 3, 0, 0])\n\nexport type StackCornerRadius = z.infer<typeof zStackCornerRadius>\n","import { z } from 'zod'\n\nexport const zBarMaxWidth = z.number().or(z.string())\n\nexport type BarMaxWidth = z.infer<typeof zBarMaxWidth>\n\nexport const zBarGapInGroup = z.number().or(z.string())\n\nexport type BarGapInGroup = z.infer<typeof zBarGapInGroup>\n","import { z } from 'zod'\n\nexport const zEcdfRegressionLine = z.object({\n color: z.string().nullish(),\n lineWidth: z.number().nullish(),\n lineDash: z.array(z.number()).nullish(),\n text: z.string().nullish(),\n textColor: z.string().nullish(),\n textFontSize: z.number().nullish(),\n textFontWeight: z.number().nullish(),\n})\n\nexport const zKdeRegressionLine = zEcdfRegressionLine.extend({})\n\nexport const zLinearRegressionLine = zEcdfRegressionLine.extend({\n confidenceIntervalVisible: z.boolean().nullish(),\n confidenceIntervalColor: z.string().nullish(),\n confidenceIntervalOpacity: z.number().nullish(),\n})\n\nexport const zLogisticRegressionLine = zLinearRegressionLine.extend({})\nexport const zLowessRegressionLine = zLinearRegressionLine.extend({})\n\nexport const zPolynomialRegressionLine = zLinearRegressionLine.extend({\n degree: z.number().nullish(),\n})\n\nexport const zRegressionLine = z.object({\n ecdfRegressionLine: zEcdfRegressionLine.or(z.array(zEcdfRegressionLine)).nullish(),\n kdeRegressionLine: zKdeRegressionLine.or(z.array(zKdeRegressionLine)).nullish(),\n linearRegressionLine: zLinearRegressionLine.or(z.array(zLinearRegressionLine)).nullish(),\n lowessRegressionLine: zLowessRegressionLine.or(z.array(zLowessRegressionLine)).nullish(),\n polynomialRegressionLine: zPolynomialRegressionLine.or(z.array(zPolynomialRegressionLine)).nullish(),\n logisticRegressionLine: zLogisticRegressionLine.or(z.array(zLogisticRegressionLine)).nullish(),\n})\n\nexport type RegressionLineConfig = z.infer<typeof zRegressionLine>\n","import { z } from 'zod'\nimport { zXBandAxis, zYLinearAxis } from './axes'\nimport { zCrosshairRect } from './crosshair'\nimport { zStackCornerRadius } from './stackCornerRadius/stackCornerRadius'\nimport { zBackgroundColor } from './backgroundColor/backgroundColor'\nimport { zColor } from './color/color'\nimport { zLabel } from './label'\nimport { zLegend } from './legend/legend'\nimport { zTooltip } from './tooltip/tooltip'\nimport { zAnnotationConfig } from './annotation/zAnnotaion'\nimport { zPivotChartGridConfig } from './pivotGrid'\nimport { zBarGapInGroup, zBarMaxWidth } from './barWidth'\nimport { zRegressionLine } from '../regressionLine'\n\nexport const zColumnParallelConfig = z.object({\n backgroundColor: zBackgroundColor.nullish(),\n label: zLabel.nullish(),\n color: zColor.nullish(),\n tooltip: zTooltip.nullish(),\n legend: zLegend.nullish(),\n\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n stackCornerRadius: zStackCornerRadius.nullish(),\n barMaxWidth: zBarMaxWidth.nullish(),\n barGapInGroup: zBarGapInGroup.nullish(),\n pivotGrid: zPivotChartGridConfig.nullish(),\n annotation: zAnnotationConfig.nullish(),\n})\nexport const zColumnConfig = zColumnParallelConfig.extend({\n regressionLine: zRegressionLine.nullish(),\n})\nexport const zColumnPercentConfig = zColumnParallelConfig.extend({})\n\nexport type ColumnConfig = z.infer<typeof zColumnConfig>\nexport type ColumnParallelConfig = z.infer<typeof zColumnParallelConfig>\nexport type ColumnPercentConfig = z.infer<typeof zColumnPercentConfig>\n","import { z } from 'zod'\nimport { zYBandAxis, zXLinearAxis } from './axes'\nimport { zCrosshairRect } from './crosshair'\nimport { zStackCornerRadius } from './stackCornerRadius/stackCornerRadius'\nimport { zBackgroundColor } from './backgroundColor/backgroundColor'\nimport { zColor } from './color/color'\nimport { zLabel } from './label'\nimport { zLegend } from './legend/legend'\nimport { zTooltip } from './tooltip/tooltip'\nimport { zAnnotationConfig } from './annotation/zAnnotaion'\nimport { zPivotChartGridConfig } from './pivotGrid'\n\nexport const zBarConfig = z.object({\n backgroundColor: zBackgroundColor.nullish(),\n label: zLabel.nullish(),\n color: zColor.nullish(),\n tooltip: zTooltip.nullish(),\n legend: zLegend.nullish(),\n\n xAxis: zXLinearAxis.nullish(),\n yAxis: zYBandAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n stackCornerRadius: zStackCornerRadius.nullish(),\n pivotGrid: zPivotChartGridConfig.nullish(),\n annotation: zAnnotationConfig.nullish(),\n})\nexport const zBarParallelConfig = zBarConfig\nexport const zBarPercentConfig = zBarConfig\n\nexport type BarConfig = z.infer<typeof zBarConfig>\nexport type BarParallelConfig = z.infer<typeof zBarParallelConfig>\nexport type BarPercentConfig = z.infer<typeof zBarPercentConfig>\n","import { z } from 'zod'\nimport { zXBandAxis, zYLinearAxis } from './axes'\nimport { zCrosshairLine } from './crosshair'\nimport { zBackgroundColor } from './backgroundColor/backgroundColor'\nimport { zColor } from './color/color'\nimport { zLabel } from './label'\nimport { zLegend } from './legend/legend'\nimport { zTooltip } from './tooltip/tooltip'\nimport { zAnnotationConfig } from './annotation/zAnnotaion'\nimport { zPivotChartGridConfig } from './pivotGrid'\n\nexport const zAreaConfig = z.object({\n backgroundColor: zBackgroundColor.nullish(),\n label: zLabel.nullish(),\n color: zColor.nullish(),\n tooltip: zTooltip.nullish(),\n legend: zLegend.nullish(),\n\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairLine: zCrosshairLine.nullish(),\n pivotGrid: zPivotChartGridConfig.nullish(),\n annotation: zAnnotationConfig.nullish(),\n})\nexport const zAreaPercentConfig = zAreaConfig\n\nexport type AreaConfig = z.infer<typeof zAreaConfig>\nexport type AreaPercentConfig = z.infer<typeof zAreaPercentConfig>\n","import { z } from 'zod'\nimport { zXLinearAxis, zYLinearAxis } from './axes'\nimport { zCrosshairLine } from './crosshair'\nimport { zBackgroundColor } from './backgroundColor/backgroundColor'\nimport { zColor } from './color/color'\nimport { zLabel } from './label'\nimport { zLegend } from './legend/legend'\nimport { zTooltip } from './tooltip/tooltip'\nimport { zAnnotationConfig } from './annotation/zAnnotaion'\nimport { zPivotChartGridConfig } from './pivotGrid'\nimport { zRegressionLine } from '../regressionLine/zRegressionLine'\n\nexport const zScatterConfig = z.object({\n backgroundColor: zBackgroundColor.nullish(),\n label: zLabel.nullish(),\n color: zColor.nullish(),\n tooltip: zTooltip.nullish(),\n legend: zLegend.nullish(),\n\n xAxis: zXLinearAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairLine: zCrosshairLine.nullish(),\n size: z.number().or(z.array(z.number())).nullish(),\n sizeRange: z.number().or(z.array(z.number())).nullish(),\n pivotGrid: zPivotChartGridConfig.nullish(),\n annotation: zAnnotationConfig.nullish(),\n regressionLine: zRegressionLine.nullish(),\n})\n\nexport type ScatterConfig = z.infer<typeof zScatterConfig>\n","import { z } from 'zod'\nimport { zXBandAxis, zYLinearAxis } from './axes'\nimport { zCrosshairRect } from './crosshair'\nimport { zBackgroundColor } from './backgroundColor/backgroundColor'\nimport { zColor } from './color/color'\nimport { zLabel } from './label'\nimport { zLegend } from './legend/legend'\nimport { zTooltip } from './tooltip/tooltip'\nimport { zDualChartType } from '../chartType'\nimport { zAnnotationConfig } from './annotation/zAnnotaion'\nimport { zPivotChartGridConfig } from './pivotGrid'\n\nexport const zDualAxisConfig = z.object({\n backgroundColor: zBackgroundColor.nullish(),\n label: zLabel.nullish(),\n color: zColor.nullish(),\n tooltip: zTooltip.nullish(),\n legend: zLegend.nullish(),\n\n dualChartType: z.array(zDualChartType).or(zDualChartType).nullish(),\n alignTicks: z.array(z.boolean()).or(z.boolean()).nullish(),\n primaryYAxis: z.array(zYLinearAxis).or(zYLinearAxis).nullish(),\n secondaryYAxis: z.array(zYLinearAxis).or(zYLinearAxis).nullish(),\n\n xAxis: zXBandAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n pivotGrid: zPivotChartGridConfig.nullish(),\n annotation: zAnnotationConfig.nullish(),\n})\n\nexport type DualAxisConfig = z.infer<typeof zDualAxisConfig>\n","import { z } from 'zod'\nimport { zLabel } from './zLabel'\n\nexport const zPieLabel = zLabel.extend({\n labelLayout: z.union([z.literal('arc'), z.literal('labelLine'), z.literal('edge')]).nullish(),\n})\n","import { z } from 'zod'\nimport { zBackgroundColor } from './backgroundColor/backgroundColor'\nimport { zColor } from './color/color'\nimport { zPieLabel } from './label'\nimport { zLegend } from './legend/legend'\nimport { zTooltip } from './tooltip/tooltip'\nimport { zPivotChartGridConfig } from './pivotGrid'\n\nexport const zPieConfig = z.object({\n backgroundColor: zBackgroundColor.nullish(),\n label: zPieLabel.nullish(),\n color: zColor.nullish(),\n tooltip: zTooltip.nullish(),\n legend: zLegend.nullish(),\n pivotGrid: zPivotChartGridConfig.nullish(),\n cornerRadius: z.number().nullish(),\n})\nexport const zDonutConfig = zPieConfig\nexport const zRadarConfig = zPieConfig\n\nexport type PieConfig = z.infer<typeof zPieConfig>\nexport type DonutConfig = z.infer<typeof zDonutConfig>\nexport type RadarConfig = z.infer<typeof zRadarConfig>\n","import { z } from 'zod'\nimport { zBackgroundColor } from './backgroundColor/backgroundColor'\nimport { zColor } from './color/color'\nimport { zPieLabel } from './label'\nimport { zLegend } from './legend/legend'\nimport { zTooltip } from './tooltip/tooltip'\nimport { zPivotChartGridConfig } from './pivotGrid'\n\nexport const zRoseConfig = z.object({\n backgroundColor: zBackgroundColor.nullish(),\n label: zPieLabel.nullish(),\n color: zColor.nullish(),\n tooltip: zTooltip.nullish(),\n legend: zLegend.nullish(),\n pivotGrid: zPivotChartGridConfig.nullish(),\n})\nexport const zRoseParallelConfig = zRoseConfig\n\nexport type RoseConfig = z.infer<typeof zRoseConfig>\nexport type RoseParallelConfig = z.infer<typeof zRoseParallelConfig>\n","import { z } from 'zod'\n\nexport const zFunnelTransform = z.object({\n backgroundColor: z.string().nullish(),\n textColor: z.string().nullish(),\n})\n","import { z } from 'zod'\nimport { zBackgroundColor } from './backgroundColor/backgroundColor'\nimport { zColor } from './color/color'\nimport { zLabel } from './label'\nimport { zLegend } from './legend/legend'\nimport { zTooltip } from './tooltip/tooltip'\nimport { zFunnelTransform } from './funnelTransform/zFunnelTransform'\nimport { zPivotChartGridConfig } from './pivotGrid'\n\nexport const zFunnelConfig = z.object({\n backgroundColor: zBackgroundColor.nullish(),\n label: zLabel.nullish(),\n color: zColor.nullish(),\n tooltip: zTooltip.nullish(),\n legend: zLegend.nullish(),\n\n pivotGrid: zPivotChartGridConfig.nullish(),\n transform: zFunnelTransform.nullish(),\n})\n\nexport type FunnelConfig = z.infer<typeof zFunnelConfig>\n","import { z } from 'zod'\n\nexport const zHeatmapCell = z.object({\n stroke: z.string().nullish(),\n lineWidth: z.number().nullish(),\n cornerRadius: z.number().nullish(),\n})\n","import { z } from 'zod'\nimport { zBackgroundColor } from './backgroundColor/backgroundColor'\nimport { zColor } from './color/color'\nimport { zLabel } from './label'\nimport { zLegend } from './legend/legend'\nimport { zTooltip } from './tooltip/tooltip'\nimport { zPivotChartGridConfig } from './pivotGrid'\nimport { zHeatmapCell } from './heatmap/zHeatmap'\n\nexport const zHeatmapConfig = z.object({\n backgroundColor: zBackgroundColor.nullish(),\n label: zLabel.nullish(),\n color: zColor.nullish(),\n tooltip: zTooltip.nullish(),\n legend: zLegend.nullish(),\n\n pivotGrid: zPivotChartGridConfig.nullish(),\n cell: zHeatmapCell.nullish(),\n})\n\nexport type HeatmapConfig = z.infer<typeof zHeatmapConfig>\n","import type { z } from 'zod'\nimport { zTableConfig } from './table'\n\nexport const zPivotTableConfig = zTableConfig\nexport type PivotTableConfig = z.infer<typeof zPivotTableConfig>\n","import { z } from 'zod'\n\nexport const zWhiskersConfig = z.number().or(z.array(z.number())).default(1.5)\n\nexport type WhiskersConfig = z.infer<typeof zWhiskersConfig>\n","import { z } from 'zod'\nimport { zXBandAxis, zYLinearAxis } from './axes'\nimport { zCrosshairRect } from './crosshair'\nimport { zBackgroundColor } from './backgroundColor/backgroundColor'\nimport { zColor } from './color/color'\nimport { zLabel } from './label'\nimport { zLegend } from './legend/legend'\nimport { zTooltip } from './tooltip/tooltip'\nimport { zAnnotationConfig } from './annotation/zAnnotaion'\nimport { zPivotChartGridConfig } from './pivotGrid'\nimport { zWhiskersConfig } from './whiskers'\n\nexport const zBoxplotConfig = z.object({\n backgroundColor: zBackgroundColor.nullish(),\n label: zLabel.nullish(),\n color: zColor.nullish(),\n tooltip: zTooltip.nullish(),\n legend: zLegend.nullish(),\n\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n pivotGrid: zPivotChartGridConfig.nullish(),\n annotation: zAnnotationConfig.nullish(),\n\n whiskers: zWhiskersConfig.nullish(),\n})\n\nexport type BoxplotConfig = z.infer<typeof zBoxplotConfig>\n","import { z } from 'zod'\nimport { zXBandAxis, zYLinearAxis } from './axes'\nimport { zCrosshairRect } from './crosshair'\nimport { zStackCornerRadius } from './stackCornerRadius/stackCornerRadius'\nimport { zBackgroundColor } from './backgroundColor/backgroundColor'\nimport { zColor } from './color/color'\nimport { zLabel } from './label'\nimport { zLegend } from './legend/legend'\nimport { zTooltip } from './tooltip/tooltip'\nimport { zAnnotationConfig } from './annotation/zAnnotaion'\nimport { zPivotChartGridConfig } from './pivotGrid'\nimport { zRegressionLine } from '../regressionLine'\n\nexport const zHistogramConfig = z.object({\n backgroundColor: zBackgroundColor.nullish(),\n label: zLabel.nullish(),\n color: zColor.nullish(),\n tooltip: zTooltip.nullish(),\n legend: zLegend.nullish(),\n\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n stackCornerRadius: zStackCornerRadius.nullish(),\n pivotGrid: zPivotChartGridConfig.nullish(),\n annotation: zAnnotationConfig.nullish(),\n binCount: z.number().positive().nullish(),\n binStep: z.number().positive().nullish(),\n binValueType: z.literal('count').or(z.literal('percentage')).nullish(),\n regressionLine: zRegressionLine.nullish(),\n})\n\nexport type HistogramConfig = z.infer<typeof zHistogramConfig>\n","import { z } from 'zod'\nimport { zTableConfig } from './table'\nimport { zLineConfig } from './line'\nimport { zColumnConfig, zColumnParallelConfig, zColumnPercentConfig } from './column'\nimport { zBarConfig, zBarParallelConfig, zBarPercentConfig } from './bar'\nimport { zAreaConfig, zAreaPercentConfig } from './area'\nimport { zScatterConfig } from './scatter'\nimport { zDualAxisConfig } from './dualAxis'\nimport { zDonutConfig, zPieConfig, zRadarConfig } from './pie'\nimport { zRoseConfig, zRoseParallelConfig } from './rose'\nimport { zFunnelConfig } from './funnel'\nimport { zHeatmapConfig } from './heatmap'\nimport { zPivotTableConfig } from './pivotTable'\nimport { zBoxplotConfig } from './boxplot'\nimport { zHistogramConfig } from './histogram'\n\nexport type Config = z.infer<typeof zConfig>\nexport const zConfig = z.object({\n table: zTableConfig.nullish(),\n pivotTable: zPivotTableConfig.nullish(),\n\n // cartesian\n line: zLineConfig.nullish(),\n column: zColumnConfig.nullish(),\n columnParallel: zColumnParallelConfig.nullish(),\n columnPercent: zColumnPercentConfig.nullish(),\n bar: zBarConfig.nullish(),\n barParallel: zBarParallelConfig.nullish(),\n barPercent: zBarPercentConfig.nullish(),\n area: zAreaConfig.nullish(),\n areaPercent: zAreaPercentConfig.nullish(),\n\n scatter: zScatterConfig.nullish(),\n dualAxis: zDualAxisConfig.nullish(),\n\n // polar\n rose: zRoseConfig.nullish(),\n roseParallel: zRoseParallelConfig.nullish(),\n pie: zPieConfig.nullish(),\n donut: zDonutConfig.nullish(),\n radar: zRadarConfig.nullish(),\n // other\n funnel: zFunnelConfig.nullish(),\n heatmap: zHeatmapConfig.nullish(),\n boxPlot: zBoxplotConfig.nullish(),\n histogram: zHistogramConfig.nullish(),\n})\n","import { z } from 'zod'\nimport { zConfig } from '../config'\n\nexport const zCustomThemeConfig = z.object({\n config: zConfig.nullish(),\n})\n\nexport const zCustomTheme = z.record(z.string(), zCustomThemeConfig).nullish()\n\nexport type CustomTheme = z.infer<typeof zCustomTheme>\nexport type CustomThemeConfig = z.infer<typeof zCustomThemeConfig>\n","import { z } from 'zod'\n\nexport const zTheme = z.string()\n\ntype Light = 'light' & { readonly brand: unique symbol }\ntype Dark = 'dark' & { readonly brand: unique symbol }\n\n/**\n * 主题\n * @default light\n * @description 内置 light、dark 两种主题, 新的主题可以通过registerTheme自定义主题.\n */\nexport type Theme = Light | Dark | string\n","import { z } from 'zod'\nimport { zSelector, zSelectors, type Selector, type Selectors } from '../../dataSelector'\n\nexport type BarStyle = {\n /**\n * 数据选择器\n * @description\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n * @type {Selector | Selectors}\n * @example 数值选择器\n * selector = \"tool\"\n * selector = [\"tool\", \"book\"]\n * selector = 100\n * selector = [100, 200]\n * @example 局部数据选择器\n * selector = { profit: 100 }\n * selector = [{ profit: 100 }, { profit: 200 }]\n * @example 条件维度选择器\n * selector = {\n * field: 'category',\n * operator: 'in',\n * value: 'tool'\n * }\n * selector = {\n * field: 'category',\n * operator: 'not in',\n * value: 'book'\n * }\n * @example 条件指标选择器\n * selector = {\n * field: 'profit',\n * operator: '>=',\n * value: 100\n * }\n * selector = {\n * field: 'profit',\n * operator: 'between'\n * value: [100, 300]\n * }\n */\n selector?: Selector | Selectors\n\n /**\n * @description 柱图元(矩形图元)是否可见\n */\n barVisible?: boolean\n /**\n * @description 柱图元(矩形图元)颜色\n * @type {string}\n */\n barColor?: string\n /**\n * @description 柱图元(矩形图元)颜色透明度\n * @type {number}\n */\n barColorOpacity?: number\n /**\n * @description 柱图元(矩形图元)边框颜色\n * @type {string}\n */\n barBorderColor?: string\n /**\n * @description 柱图元(矩形图元)边框宽度\n * @type {number}\n */\n barBorderWidth?: number\n /**\n * @description 柱图元(矩形图元)边框样式\n * @type {number}\n * @example solid\n * @example dashed\n * @example dotted\n */\n barBorderStyle?: 'solid' | 'dashed' | 'dotted'\n /**\n * @description 柱图元(矩形图元)圆角\n * @type {number | number[]}\n * @example 4\n * @example [0, 0, 10, 10]\n */\n barRadius?: number | number[]\n}\n\nexport const zBarStyle = z.object({\n selector: z.union([zSelector, zSelectors]).nullish(),\n barVisible: z.boolean().nullish(),\n barColor: z.string().nullish(),\n barColorOpacity: z.number().nullish(),\n barBorderColor: z.string().nullish(),\n barBorderWidth: z.number().nullish(),\n barBorderStyle: z.union([z.literal('solid'), z.literal('dashed'), z.literal('dotted')]).nullish(),\n barRadius: z.union([z.number(), z.array(z.number())]).nullish(),\n})\n","import { z } from 'zod'\nimport { zSelector, zSelectors, type Selector, type Selectors } from '../../dataSelector'\n\nexport type PointStyle = {\n /**\n * 数据选择器\n * @description\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n * @type {Selector | Selectors}\n * @example 数值选择器\n * selector = \"tool\"\n * selector = [\"tool\", \"book\"]\n * selector = 100\n * selector = [100, 200]\n * @example 局部数据选择器\n * selector = { profit: 100 }\n * selector = [{ profit: 100 }, { profit: 200 }]\n * @example 条件维度选择器\n * selector = {\n * field: 'category',\n * operator: 'in',\n * value: 'tool'\n * }\n * selector = {\n * field: 'category',\n * operator: 'not in',\n * value: 'book'\n * }\n * @example 条件指标选择器\n * selector = {\n * field: 'profit',\n * operator: '>=',\n * value: 100\n * }\n * selector = {\n * field: 'profit',\n * operator: 'between'\n * value: [100, 300]\n * }\n */\n selector?: Selector | Selectors\n\n /**\n * @description 点是否可见\n */\n pointVisible?: boolean\n /**\n * 点大小\n * @description 点大小\n */\n pointSize?: number\n /**\n * 点图元颜色\n * @description 点图元颜色\n */\n pointColor?: string\n /**\n * 点图元颜色透明度\n * @description 点图元颜色透明度\n */\n pointColorOpacity?: number\n /**\n * 点图元边框颜色\n * @description 点图元边框颜色\n */\n pointBorderColor?: string\n /**\n * 点图元边框宽度\n * @description 点图元边框宽度\n */\n pointBorderWidth?: number\n /**\n * 点图元边框样式\n * @description 点图元边框样式\n * @example solid\n * @example dashed\n * @example dotted\n */\n pointBorderStyle?: 'solid' | 'dashed' | 'dotted'\n}\n\nexport const zPointStyle = z.object({\n selector: z.union([zSelector, zSelectors]).nullish(),\n pointVisible: z.boolean().nullish(),\n pointSize: z.number().nullish(),\n pointColor: z.string().nullish(),\n pointColorOpacity: z.number().nullish(),\n pointBorderColor: z.string().nullish(),\n pointBorderWidth: z.number().nullish(),\n pointBorderStyle: z.union([z.enum(['solid', 'dashed', 'dotted'])]).nullish(),\n})\n","import { z } from 'zod'\nimport { zSelector, zSelectors, type Selector, type Selectors } from '../../dataSelector'\n\nexport type LineStyle = {\n /**\n * 数据选择器\n * @description\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n * @type {Selector | Selectors}\n * @example 数值选择器\n * selector = \"tool\"\n * selector = [\"tool\", \"book\"]\n * selector = 100\n * selector = [100, 200]\n * @example 局部数据选择器\n * selector = { profit: 100 }\n * selector = [{ profit: 100 }, { profit: 200 }]\n * @example 条件维度选择器\n * selector = {\n * field: 'category',\n * operator: 'in',\n * value: 'tool'\n * }\n * selector = {\n * field: 'category',\n * operator: 'not in',\n * value: 'book'\n * }\n * @example 条件指标选择器\n * selector = {\n * field: 'profit',\n * operator: '>=',\n * value: 100\n * }\n * selector = {\n * field: 'profit',\n * operator: 'between'\n * value: [100, 300]\n * }\n */\n selector?: Selector | Selectors\n\n /**\n * @description 线段是否可见\n */\n lineVisible?: boolean\n /**\n * @description 线段是否平滑\n * @type {boolean}\n */\n lineSmooth?: boolean\n\n /**\n * @description 线段颜色\n */\n lineColor?: string\n /**\n * @description 线段颜色透明度\n */\n lineColorOpacity?: number\n /**\n * @description 线段宽度\n */\n lineWidth?: number\n /**\n * @description 线段样式\n * @example `lineStyle: 'solid'`\n */\n lineStyle?: 'solid' | 'dashed' | 'dotted'\n}\n\nexport const zLineStyle = z.object({\n selector: z.union([zSelector, zSelectors]).nullish(),\n lineVisible: z.boolean().nullish(),\n lineSmooth: z.boolean().nullish(),\n lineColor: z.string().nullish(),\n lineColorOpacity: z.number().nullish(),\n lineWidth: z.number().nullish(),\n lineStyle: z.union([z.enum(['solid', 'dashed', 'dotted'])]).nullish(),\n})\n","import { z } from 'zod'\nimport { zSelector, zSelectors } from '../../dataSelector'\n\nexport const zAreaStyle = z.object({\n selector: z.union([zSelector, zSelectors]).nullish(),\n areaVisible: z.boolean().nullish(),\n areaColor: z.string().nullish(),\n areaColorOpacity: z.number().nullish(),\n})\n","import { z } from 'zod'\nimport { zBarStyle } from './barStyle'\nimport { zPointStyle } from './pointStyle'\nimport { zLineStyle } from './lineStyle'\nimport { zAreaStyle } from './zAreaStyle'\n\nexport const zMarkStyle = z.object({\n barStyle: zBarStyle.or(z.array(zBarStyle)).nullish(),\n pointStyle: zPointStyle.or(z.array(zPointStyle)).nullish(),\n lineStyle: zLineStyle.or(z.array(zLineStyle)).nullish(),\n areaStyle: zAreaStyle.or(z.array(zAreaStyle)).nullish(),\n})\n\nexport type MarkStyle = z.infer<typeof zMarkStyle>\n","import { zSelector, zSelectors } from '../../dataSelector'\nimport { z } from 'zod'\n\nexport const zAnnotationVerticalLine = z.object({\n selector: z.union([zSelector, zSelectors]).nullish(),\n xValue: z.union([z.number(), z.string(), z.array(z.union([z.number(), z.string()]))]).nullish(),\n text: z.string().or(z.array(z.string())).nullish(),\n textPosition: z\n .enum(['outsideStart', 'outsideEnd', 'outsideMiddle', 'insideStart', 'insideMiddle', 'insideEnd'])\n .default('insideEnd')\n .nullish(),\n textColor: z.string().default('#ffffff').nullish(),\n textFontSize: z.number().default(12).nullish(),\n textFontWeight: z.number().default(400).nullish(),\n textAlign: z.enum(['left', 'right', 'center']).default('right').nullish(),\n textBaseline: z.enum(['top', 'middle', 'bottom']).default('top').nullish(),\n\n textBackgroundVisible: z.boolean().default(true).nullish(),\n textBackgroundColor: z.string().default('#212121').nullish(),\n textBackgroundBorderColor: z.string().default('#212121').nullish(),\n textBackgroundBorderRadius: z.number().default(4).nullish(),\n textBackgroundBorderWidth: z.number().default(1).nullish(),\n textBackgroundPadding: z.number().default(2).nullish(),\n\n lineVisible: z.boolean().default(true).nullish(),\n lineColor: z.string().default('#212121').nullish(),\n lineWidth: z.number().default(1).nullish(),\n lineStyle: z\n .union([z.literal('solid'), z.literal('dashed'), z.literal('dotted')])\n .default('dashed')\n .nullish(),\n})\n","import { z } from 'zod'\nimport { zAnnotationPoint } from './zAnnotationPoint'\nimport { zAnnotationVerticalLine } from './zAnnotationVerticalLine'\nimport { zAnnotationHorizontalLine } from './zAnnotationHorizontalLine'\nimport { zAnnotationArea } from './zAnnotationArea'\n\nexport const zAnnotation = z.object({\n annotationPoint: zAnnotationPoint.or(z.array(zAnnotationPoint)).nullish(),\n annotationVerticalLine: zAnnotationVerticalLine.or(z.array(zAnnotationVerticalLine)).nullish(),\n annotationHorizontalLine: zAnnotationHorizontalLine.or(z.array(zAnnotationHorizontalLine)).nullish(),\n annotationArea: zAnnotationArea.or(z.array(zAnnotationArea)).nullish(),\n})\n\nexport type Annotation = z.infer<typeof zAnnotation>\n","import { z } from 'zod'\n\nexport const zSort = z.object({\n order: z.enum(['asc', 'desc']).default('asc'),\n orderBy: z.string().nullish(),\n customOrder: z.array(z.any()).nullish(),\n})\n\n/**\n * @description 类目轴排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @default {}\n * @example\n * - order:'asc'\n * - orderBy:'date'\n * 或\n * - customOrder:['2019', '2020', '2021']\n */\nexport type Sort = {\n /**\n * @description 排序顺序, 可选值为 'asc' 或 'desc'\n * @enum ['asc', 'desc']\n * @example order:'asc'\n */\n order?: 'asc' | 'desc'\n\n /**\n * @description 排序依赖的字段, 可以是维度id或指标id\n * @example\n * - orderBy:'date'\n * - orderBy:'profit'\n */\n orderBy?: string\n\n /**\n * @description 自定义排序顺序, 该顺序将直接应用至类目轴\n */\n customOrder?: string[]\n}\n","import { z } from 'zod'\n\nexport const zSortLegend = z.object({\n order: z.enum(['asc', 'desc']).default('asc'),\n orderBy: z.string().nullish(),\n customOrder: z.array(z.any()).nullish(),\n})\n\n/**\n * @description 图例排序配置, 支持根据维度或指标排序, 以及自定义排序顺序; 排序数组遵循从左到右或从上到下的顺序\n * @default {}\n * @example\n * - order:'asc'\n * - orderBy:'date'\n * 或\n * - customOrder:['2019', '2020', '2021']\n */\nexport type SortLegend = {\n /**\n * @description 排序顺序, 可选值为 'asc' 或 'desc'\n * @default 'asc'\n * @enum ['asc', 'desc']\n * @example order:'asc'\n */\n order?: 'asc' | 'desc'\n /**\n * @description 排序依赖的字段, 可以是维度id或指标id\n * @example\n * - orderBy:'date'\n * - orderBy:'profit'\n */\n orderBy?: string\n /**\n * @description 自定义排序顺序, 该顺序将直接应用至图例, 升序从左到右或从上到下, 降序从右到左或从下到上\n */\n customOrder?: string[]\n}\n","import { z } from 'zod'\n\nexport const zAnalysis = z.object({\n orderMapping: z.record(z.string(), z.array(z.string())).nullish(),\n})\n","import { z } from 'zod'\n\nexport type Locale = 'zh-CN' | 'en-US'\n\nexport type TranslateRecordType = Record<string, { [local in Locale]: string }>\n\nexport const zLocale = z.enum(['zh-CN', 'en-US']).default('zh-CN')\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport { zBackgroundColor, zDataset, zDimensions, zMeasureTree, zTheme } from '../../properties'\n\nexport const zTable = z.object({\n chartType: z.literal('table'),\n dataset: zDataset.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n\n backgroundColor: zBackgroundColor.nullish(),\n borderColor: z.string().nullish(),\n bodyFontSize: z.number().nullish(),\n bodyFontColor: z.string().nullish(),\n bodyBackgroundColor: z.string().nullish(),\n hoverBodyBackgroundColor: z.string().nullish(),\n hoverBodyInlineBackgroundColor: z.string().nullish(),\n headerFontSize: z.number().nullish(),\n headerFontColor: z.string().nullish(),\n headerBackgroundColor: z.string().nullish(),\n hoverHeaderBackgroundColor: z.string().nullish(),\n hoverHeaderInlineBackgroundColor: z.string().nullish(),\n selectedBorderColor: z.string().nullish(),\n selectedBackgroundColor: z.string().nullish(),\n\n theme: zTheme.nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport { zBackgroundColor, zDataset, zDimensions, zTheme, zMeasures } from '../../properties'\n\nexport const zPivotTable = z.object({\n chartType: z.literal('pivotTable'),\n dataset: zDataset.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasures.nullish(),\n\n backgroundColor: zBackgroundColor.nullish(),\n borderColor: z.string().nullish(),\n bodyFontSize: z.number().nullish(),\n bodyFontColor: z.string().nullish(),\n bodyBackgroundColor: z.string().nullish(),\n hoverBodyBackgroundColor: z.string().nullish(),\n hoverBodyInlineBackgroundColor: z.string().nullish(),\n headerFontSize: z.number().nullish(),\n headerFontColor: z.string().nullish(),\n headerBackgroundColor: z.string().nullish(),\n hoverHeaderBackgroundColor: z.string().nullish(),\n hoverHeaderInlineBackgroundColor: z.string().nullish(),\n selectedBorderColor: z.string().nullish(),\n selectedBackgroundColor: z.string().nullish(),\n\n theme: zTheme.nullish(),\n locale: zLocale.nullish(),\n})\n","import { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zColor,\n zCrosshairLine,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zLegend,\n zLineStyle,\n zMeasureTree,\n zPointStyle,\n zSort,\n zSortLegend,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\n\nimport { z } from 'zod'\n\nexport const zLine = z.object({\n chartType: z.literal('line'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairLine: zCrosshairLine.nullish(),\n sort: zSort.nullish(),\n sortLegend: zSortLegend.nullish(),\n theme: zTheme.nullish(),\n pointStyle: z.array(zPointStyle).or(zPointStyle).nullish(),\n lineStyle: z.array(zLineStyle).or(zLineStyle).nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zBarMaxWidth,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zPolynomialRegressionLine,\n zSort,\n zSortLegend,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\n\nexport const zColumn = z.object({\n chartType: z.literal('column'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n sort: zSort.nullish(),\n sortLegent: zSortLegend.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n stackCornerRadius: zStackCornerRadius.nullish(),\n barMaxWidth: zBarMaxWidth.nullish(),\n theme: zTheme.nullish(),\n barStyle: z.array(zBarStyle).or(zBarStyle).nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n polynomialRegressionLine: z.array(zPolynomialRegressionLine).or(zPolynomialRegressionLine).or(z.boolean()).nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zBarGapInGroup,\n zBarMaxWidth,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\n\nexport const zColumnParallel = z.object({\n chartType: z.literal('columnParallel'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n stackCornerRadius: zStackCornerRadius.nullish(),\n barMaxWidth: zBarMaxWidth.nullish(),\n barGapInGroup: zBarGapInGroup.nullish(),\n theme: zTheme.nullish(),\n barStyle: z.array(zBarStyle).or(zBarStyle).nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n locale: zLocale.nullish(),\n})\n","import { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zBarMaxWidth,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\n\nimport { z } from 'zod'\n\nexport const zColumnPercent = z.object({\n chartType: z.literal('columnPercent'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n stackCornerRadius: zStackCornerRadius.nullish(),\n barMaxWidth: zBarMaxWidth.nullish(),\n theme: zTheme.nullish(),\n barStyle: z.array(zBarStyle).or(zBarStyle).nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n locale: zLocale.nullish(),\n})\n","import { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zBarMaxWidth,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXLinearAxis,\n zYBandAxis,\n} from '../../properties'\n\nimport { z } from 'zod'\n\nexport const zBar = z.object({\n chartType: z.literal('bar'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXLinearAxis.nullish(),\n yAxis: zYBandAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n stackCornerRadius: zStackCornerRadius.nullish(),\n barMaxWidth: zBarMaxWidth.nullish(),\n theme: zTheme.nullish(),\n barStyle: z.array(zBarStyle).or(zBarStyle).nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zBarGapInGroup,\n zBarMaxWidth,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXLinearAxis,\n zYBandAxis,\n} from '../../properties'\n\nexport const zBarParallel = z.object({\n chartType: z.literal('barParallel'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXLinearAxis.nullish(),\n yAxis: zYBandAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n stackCornerRadius: zStackCornerRadius.nullish(),\n barMaxWidth: zBarMaxWidth.nullish(),\n barGapInGroup: zBarGapInGroup.nullish(),\n theme: zTheme.nullish(),\n barStyle: z.array(zBarStyle).or(zBarStyle).nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zBarMaxWidth,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXLinearAxis,\n zYBandAxis,\n} from '../../properties'\n\nexport const zBarPercent = z.object({\n chartType: z.literal('barPercent'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXLinearAxis.nullish(),\n yAxis: zYBandAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n stackCornerRadius: zStackCornerRadius.nullish(),\n barMaxWidth: zBarMaxWidth.nullish(),\n theme: zTheme.nullish(),\n barStyle: z.array(zBarStyle).or(zBarStyle).nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zAreaStyle,\n zBackgroundColor,\n zColor,\n zCrosshairLine,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zLegend,\n zLineStyle,\n zMeasureTree,\n zPointStyle,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\n\nexport const zArea = z.object({\n chartType: z.literal('area'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairLine: zCrosshairLine.nullish(),\n theme: zTheme.nullish(),\n pointStyle: z.array(zPointStyle).or(zPointStyle).nullish(),\n lineStyle: z.array(zLineStyle).or(zLineStyle).nullish(),\n areaStyle: z.array(zAreaStyle).or(zAreaStyle).nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n locale: zLocale.nullish(),\n})\n","import { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zAreaStyle,\n zBackgroundColor,\n zColor,\n zCrosshairLine,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zLegend,\n zLineStyle,\n zMeasureTree,\n zPointStyle,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\n\nimport { z } from 'zod'\n\nexport const zAreaPercent = z.object({\n chartType: z.literal('areaPercent'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairLine: zCrosshairLine.nullish(),\n theme: zTheme.nullish(),\n pointStyle: z.array(zPointStyle).or(zPointStyle).nullish(),\n lineStyle: z.array(zLineStyle).or(zLineStyle).nullish(),\n areaStyle: z.array(zAreaStyle).or(zAreaStyle).nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zColor,\n zCrosshairLine,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zLegend,\n zLinearRegressionLine,\n zLogisticRegressionLine,\n zLowessRegressionLine,\n zMeasureTree,\n zPointStyle,\n zPolynomialRegressionLine,\n zScatterMeasures,\n zTheme,\n zTooltip,\n zXLinearAxis,\n zYLinearAxis,\n} from '../../properties'\n\nexport const zScatter = z.object({\n chartType: z.literal('scatter'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n scatterMeasures: zScatterMeasures.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n size: z.number().or(z.array(z.number())).nullish(),\n sizeRange: z.number().or(z.array(z.number())).nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXLinearAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairLine: zCrosshairLine.nullish(),\n theme: zTheme.nullish(),\n pointStyle: z.array(zPointStyle).or(zPointStyle).nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n linearRegressionLine: z.array(zLinearRegressionLine).or(zLinearRegressionLine).or(z.boolean()).nullish(),\n lowessRegressionLine: z.array(zLowessRegressionLine).or(zLowessRegressionLine).or(z.boolean()).nullish(),\n polynomialRegressionLine: z.array(zPolynomialRegressionLine).or(zPolynomialRegressionLine).or(z.boolean()).nullish(),\n logisticRegressionLine: z.array(zLogisticRegressionLine).or(zLogisticRegressionLine).or(z.boolean()).nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from 'src/types/i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zAreaStyle,\n zBackgroundColor,\n zBarGapInGroup,\n zBarMaxWidth,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zDualChartType,\n zDualMeasures,\n zLabel,\n zLegend,\n zLineStyle,\n zMeasureTree,\n zPointStyle,\n zSort,\n zSortLegend,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from 'src/types/properties'\n\nexport const zDualAxis = z.object({\n chartType: z.literal('dualAxis'),\n\n dataset: zDataset.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n dualMeasures: zDualMeasures.nullish(),\n\n dualChartType: z.array(zDualChartType).or(zDualChartType).nullish(),\n alignTicks: z.array(z.boolean()).or(z.boolean()).nullish(),\n\n primaryYAxis: z.array(zYLinearAxis).or(zYLinearAxis).nullish(),\n secondaryYAxis: z.array(zYLinearAxis).or(zYLinearAxis).nullish(),\n xAxis: zXBandAxis.nullish(),\n\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n\n crosshairRect: zCrosshairRect.nullish(),\n sort: zSort.nullish(),\n sortLegend: zSortLegend.nullish(),\n theme: zTheme.nullish(),\n barMaxWidth: zBarMaxWidth.nullish(),\n barGapInGroup: zBarGapInGroup.nullish(),\n\n barStyle: z.array(zBarStyle).or(zBarStyle).nullish(),\n pointStyle: z.array(zPointStyle).or(zPointStyle).nullish(),\n lineStyle: z.array(zLineStyle).or(zLineStyle).nullish(),\n areaStyle: z.array(zAreaStyle).or(zAreaStyle).nullish(),\n\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zEcdfRegressionLine,\n zEncoding,\n zKdeRegressionLine,\n zLabel,\n zLegend,\n zMeasureTree,\n zTheme,\n zTooltip,\n zXLinearAxis,\n zYLinearAxis,\n} from '../../properties'\n\nexport const zHistogram = z.object({\n chartType: z.literal('histogram'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXLinearAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n binCount: z.number().positive().nullish(),\n binStep: z.number().positive().nullish(),\n binValueType: z.literal('count').or(z.literal('percentage')).nullish(),\n theme: zTheme.nullish(),\n barStyle: z.array(zBarStyle).or(zBarStyle).nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n ecdfRegressionLine: z.array(zEcdfRegressionLine).or(zEcdfRegressionLine).or(z.boolean()).nullish(),\n kdeRegressionLine: z.array(zKdeRegressionLine).or(zKdeRegressionLine).or(z.boolean()).nullish(),\n locale: zLocale.nullish(),\n})\n\nexport type Histogram = z.infer<typeof zHistogram>\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\n\nimport {\n zBackgroundColor,\n zColor,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zTheme,\n zTooltip,\n} from '../../properties'\n\nexport const zRose = z.object({\n chartType: z.literal('rose'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n theme: zTheme.nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zBackgroundColor,\n zColor,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zTheme,\n zTooltip,\n} from '../../properties'\n\nexport const zRoseParallel = z.object({\n chartType: z.literal('roseParallel'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n theme: zTheme.nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zBackgroundColor,\n zColor,\n zDataset,\n zDimensions,\n zEncoding,\n zLegend,\n zMeasureTree,\n zPieLabel,\n zTheme,\n zTooltip,\n} from '../../properties'\n\nexport const zPie = z.object({\n chartType: z.literal('pie'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zPieLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n theme: zTheme.nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\n\nimport {\n zBackgroundColor,\n zColor,\n zDataset,\n zDimensions,\n zEncoding,\n zLegend,\n zMeasureTree,\n zPieLabel,\n zTheme,\n zTooltip,\n} from '../../properties'\n\nexport const zDonut = z.object({\n chartType: z.literal('donut'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zPieLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n theme: zTheme.nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\n\nimport {\n zBackgroundColor,\n zColor,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zTheme,\n zTooltip,\n} from '../../properties'\n\nexport const zRadar = z.object({\n chartType: z.literal('radar'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n theme: zTheme.nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zBackgroundColor,\n zColor,\n zColorLegend,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zMeasureTree,\n zTheme,\n zTooltip,\n} from '../../properties'\n\nexport const zFunnel = z.object({\n chartType: z.literal('funnel'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zColorLegend.nullish(),\n tooltip: zTooltip.nullish(),\n theme: zTheme.nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\n\nimport {\n zBackgroundColor,\n zColor,\n zColorLegend,\n zDataset,\n zDimensions,\n zLabel,\n zMeasureTree,\n zTheme,\n zTooltip,\n} from '../../properties'\n\nexport const zHeatmap = z.object({\n chartType: z.literal('heatmap'),\n dataset: zDataset.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zColorLegend.nullish(),\n tooltip: zTooltip.nullish(),\n theme: zTheme.nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zSort,\n zSortLegend,\n zTheme,\n zTooltip,\n zWhiskersConfig,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\n\nexport const zBoxplot = z.object({\n chartType: z.literal('boxPlot'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n sort: zSort.nullish(),\n sortLegent: zSortLegend.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n theme: zTheme.nullish(),\n whiskers: zWhiskersConfig.nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\n\nimport { zBar } from './chartType/bar'\nimport { zBarParallel } from './chartType/barParallel'\nimport { zColumn } from './chartType/column'\nimport { zColumnParallel } from './chartType/columnParallel'\nimport { zColumnPercent } from './chartType/columnPercent'\nimport { zLine } from './chartType/line'\nimport { zRose } from './chartType/rose'\nimport { zBarPercent } from './chartType/barPercent'\nimport { zPie } from './chartType/pie'\nimport { zDonut } from './chartType/donut'\nimport { zArea } from './chartType/area'\nimport { zAreaPercent } from './chartType/areaPercent'\nimport {\n zBoxplot,\n zDualAxis,\n zFunnel,\n zHeatmap,\n zHistogram,\n zPivotTable,\n zRadar,\n zRoseParallel,\n zScatter,\n zTable,\n} from './chartType'\n\nexport const zVSeed = z.discriminatedUnion('chartType', [\n zTable,\n zPivotTable,\n // cartesian\n zLine,\n zColumn,\n zColumnParallel,\n zColumnPercent,\n zBar,\n zBarParallel,\n zBarPercent,\n zArea,\n zAreaPercent,\n zScatter,\n zDualAxis,\n // polar\n zPie,\n zDonut,\n zRose,\n zRoseParallel,\n zRadar,\n // other\n zFunnel,\n zHeatmap,\n zBoxplot,\n zHistogram,\n])\n","import { z } from 'zod'\nimport { zChartType } from './properties/chartType'\nimport { zDataset } from './properties/dataset'\nimport { zDimensionTree } from './properties/dimensions'\nimport { zMeasureTree } from './properties/measures'\nimport { zEncoding } from './properties/encoding'\nimport { zDatasetReshapeInfo } from './properties/datasetReshapeInfo'\nimport { zTheme, zCustomThemeConfig } from './properties/theme'\nimport { zConfig } from './properties/config'\nimport { zAnalysis, zAnnotation, zRegressionLine, zMarkStyle } from './properties'\nimport { zLocale } from './i18n'\n\nexport const zAdvancedVSeed = z.object({\n chartType: zChartType,\n dataset: zDataset,\n datasetReshapeInfo: zDatasetReshapeInfo,\n dimensions: zDimensionTree,\n measures: zMeasureTree,\n encoding: zEncoding,\n config: zConfig,\n analysis: zAnalysis,\n theme: zTheme,\n markStyle: zMarkStyle,\n customTheme: zCustomThemeConfig,\n annotation: zAnnotation,\n locale: zLocale,\n regressionLine: zRegressionLine,\n})\n\nexport type AdvancedVSeed = z.infer<typeof zAdvancedVSeed>\n"],"names":["Object","__webpack_require__","e","Symbol","execPipeline","pipeline","context","initialValue","prev","cur","Intl","translateMap","value","segments","values","text","segment","index","translatedText","isNullish","console","locale","intl","buildAdvanced","builder","start","performance","Date","chartType","Error","Builder","advancedVSeed","end","buildSpec","spec","build","preorderTraverse","tree","callback","stack","node","stop","children","i","child","measureDepth","measures","depth","Math","isMeasureTreeWithChildren","measure","isMeasureTreeWithParentId","normalizeMeasureTree","createEmptyMeasureGroup","currentGroup","measureGroups","item","ANNOTATION_Z_INDEX","LINEAR_AXIS_INNER_OFFSET_TOP","DUAL_AXIS_CHART_COLUMN_Z_INDEX","DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX","DUAL_AXIS_LABEL_Z_INDEX","DEFAULT_PARENT_ID","ChartTypeEnum","DATUM_HIDE_KEY","isTable","vseed","isPivotTable","isRadar","isAreaPercent","isColumnPercent","isBarPercent","isBarLikeChart","isVTable","isVChart","isPivotChart","isPivot","isCombination","dimensions","dimension","parentIds","unique","getColorItems","datasetReshapeInfo","colorItems","d","colorIdMap","getColorIdMap","advanced","customPipe","themeKey","checkVSeed","dataset","isEmpty","Array","initAdvancedVSeed","isMeasure","isMeasureGroup","isMeasures","defaultMeasures","clonedMeasures","clone","top100dataset","key","undefined","isDimension","isDimensionGroup","findMeasureById","id","result","findFirstMeasure","findAllMeasures","defaultDimensions","clonedDimensions","newDimensions","dim","records","tableConfig","config","pick","theme","customTheme","chartConfigTheme","chartConfig","mergedConfig","mergeDeep","_k","mergeArray","chartCustomTheme","arr","themeItem","isString","isNumber","isObjectType","merge","tableAdvancedPipeline","initTable","backgroundColor","dimensionTreeToColumns","columns","treeTreeToColumns","field","groupNode","title","props","createNumFormatter","format","type","ratio","thousandSeparator","prefix","suffix","symbol","fractionDigits","significantDigits","roundingMode","roundingPriority","numFormatterOptions","numFormatter","num","Number","typeSymbol","String","numStr","parts","autoNumFormatter","createFormatter","autoFormatter","createFormatterByMeasure","v","numFormat","autoFormat","formatterFormat","measureTreeToColumns","fieldFormat","formatter","datum","bodyStyle","themeConfig","borderColor","fontColor","fontSize","hoverCellBgColor","hoverInlineColor","headerStyle","themConfig","frameStyle","selectionStyle","tableSpecPipeline","registerTable","ORIGINAL_DATA","Separator","FoldMeasureName","FoldMeasureId","FoldMeasureValue","MeasureName","FoldPrimaryMeasureValue","FoldSecondaryMeasureValue","FoldXMeasureValue","FoldYMeasureValue","FoldXMeasureId","FoldYMeasureId","XEncoding","YEncoding","AngleEncoding","DetailEncoding","ColorEncoding","ColorIdEncoding","Q1MeasureValue","Q3MeasureValue","MinMeasureId","MaxMeasureId","OutliersMeasureId","MedianMeasureId","BinStartMeasureId","BinEndMeasureId","BinCountMeasureId","BinPercentageMeasureId","defaultMeasureName","encodingForPivotTable","vseedMeasures","hasDimensionEncoding","hasMeasureEncoding","encoding","generateDimensionEncoding","generateDefaultDimensionEncoding","generateMeasureEncoding","generateDefaultMeasureEncoding","uniqueDimIds","foldMeasures","options","measureId","measureName","measureValue","colorMeasureId","allowEmptyFold","foldInfo","Infinity","ids","j","omit","alias","valueNumber","reshapePivotTable","newDatasets","pivotTableConfig","pivotTableAdvancedPipeline","initPivotTable","pivotColumns","pivotRows","rows","titleOnDimension","pivotIndicators","hasRow","foldMapValues","col","row","table","foldMeasureId","rowHeaderStyle","cornerHeaderStyle","hoverCellColor","dataConfig","aggregationRules","pivotTableSpecPipeline","registerPivotTable","MeaName","encodingAdapter","noEncodingPipeline","hasEncodingPipeline","addColorToEncoding","isMultiMeasure","defaultEncodingForLine","encodingForLine","color","label","tooltip","buildMeasures","generateMeasuresByParentId","basicMeasuresToMeasureTree","measureTree","parent","deleteMeasureTreeByCallback","parents","Map","nodesToProcess","visited","Set","parentList","deleteEncodingForMeasure","encodingKeys","deleteDimensionTreeByCallback","dimensionTree","deleteTooltipAndLabelDimension","pivotAdapter","pivotPipeline","unfoldDimensions","separator","colorItemAsId","unfoldInfo","x","y","detail","angle","angleDimensions","xDimensions","yDimensions","colorDimensions","detailDimensions","applyEncoding","colorItem","colorId","dataReshapeByEncoding","foldMeasureName","foldMeasureValue","foldedDataset","finalDataset","colorAdapter","ordinalPipe","linearPipe","isLinearColor","measureIdList","getColorMeasureId","reshapeWithEncoding","uniqueBy","pivotReshapeWithEncoding","datasets","measureGroup","groupId","newSubDataset","calcOrder","sortConfig","order","orderBy","res","sort","a","b","aValue","bValue","sortXBandAxis","sortAxis","xField","axisOrderResult","sortLegend","nameMap","pre","orderRes","itemNameOrId","replaceNullToUndefined","obj","isPlainObject","pipe","mapValues","lineConfig","markStyle","annotation","lineAdvancedPipeline","initLine","baseConfig","colorScheme","colorMapping","createSpecifiedForColorMapping","matchedList","colors","accurateMap","name","colorValue","accurateMatchedList","colorKey","colorAlias","fuzzyMatchedList","linearColor","linearColorScheme","datasetXY","analysis","orderMapping","fields","progressive","defaultTitleText","idList","allMeasures","f","xBand","visible","tick","grid","line","labelAutoHide","labelAutoHideGap","labelAutoLimit","labelAutoLimitLength","labelAutoRotate","labelAutoRotateAngleRange","bandAxis","sampling","createLinearFormat","createLinearPercentFormat","percentFormatter","yLinear","zero","nice","inverse","max","min","log","logBase","linearAxis","verticalCrosshairLine","lineColor","labelColor","labelVisible","labelBackgroundColor","crosshair","discreteLegend","legend","enable","position","labelFontColor","labelFontSize","labelFontWeight","maxSize","border","shapeType","orient","colorLegend","colorPointStyleFill","stylePipe","selector","vchartDatum","vchartKeys","k","selectors","isValueSelector","isMeasureSelector","op","selectorValueArr","isDimensionSelector","isPartialDatumSelector","pointStyle","customMap","pointStyles","style","pointBorderColor","pointBorderStyle","pointBorderWidth","pointColor","pointColorOpacity","pointSize","pointVisible","pointStateDimensionHover","point","pointStateHover","colorLineStyleFill","getCurveType","lineSmooth","getCurveTension","lineStyle","lineStyles","lineColorOpacity","lineWidth","lineVisible","dashSegment","curveType","curveTension","_","dashGap","buildLabel","generateMeasureValue","labelAutoFormat","generateMeasurePercent","sum","vseedDimensions","advancedVSeedDimensions","advancedVSeedMeasures","foldInfoList","wrap","showValue","showValuePercent","showDimension","labelOverlap","labelColorSmartInvert","labelStroke","labelPosition","hasDimLabelEncoding","labelDims","labelMeas","data","entry","dimLabels","meaLabels","statistics","measureValueLabel","measurePercentLabel","createMarkContent","createDimensionContent","foldMap","encodingColor","dims","meas","dimContent","colorName","originalData","isSubset","sub","annotationPoint","annotationPointList","isHorizontalBar","defaultStyle","markPoint","selectorPoint","textColor","textFontSize","textFontWeight","textAlign","textBaseline","textBackgroundBorderColor","textBackgroundBorderRadius","textBackgroundBorderWidth","textBackgroundColor","textBackgroundPadding","textBackgroundVisible","offsetX","offsetY","selectedData","dx","dy","annotationVerticalLine","annotationVerticalLineList","positionMap","markLine","xValue","textPosition","generateOneMarkLine","isArray","xValueArr","newMarkLine","annotationHorizontalLine","annotationHorizontalLineList","yValue","yValueArr","annotationArea","annotationAreaList","markArea","areaColor","areaColorOpacity","areaBorderColor","areaBorderRadius","areaBorderWidth","areaLineDash","outerPadding","isBottom","xyList","positionData","yAxisHelper","xAxisHelper","yScale","minX","maxX","minY","maxY","xScale","splitLine","splitLineConfig","array","splitValue","colorTheme","colorConfig","ctx","lineSeries","chart","vchart","s","lineMark","lineGraphics","points","seg","pt","splitCoordinate","p","lineStroke","areaFill","VUtilColor","attrs","opt","parentNode","seriesSpec","measureValueKey","initPivot","pivotGridStyle","onlyCombination","transparent","hasColumnDimension","bodyFontColor","headerFontColor","headerBackgroundColor","hoverHeaderBackgroundColor","hoverHeaderInlineBackgroundColor","outlineBorderLineWidth","frameCornerRadius","arg","chartPipeline","indicators","reshapeInfo","newDataset","newDatasetReshapeInfo","chartSpec","pivotIndicatorsAsRow","pivotIndicatorsAsCol","datasetPivot","pivotAxisStyle","axisStyle","axis","pivotRowDimensions","rowDimensions","pivotColumnDimensions","columnDimensions","pivotTitle","pivotDiscreteLegend","colorSpecified","legends","pivotColorLegend","legendPosition","pivotLine","lineSpecPipeline","registerLine","defaultEncodingForColumn","encodingForColumn","onlyMeasureName","columnConfig","regressionLine","keys","regressionLineConfig","hasLine","columnAdvancedPipeline","initColumn","stackCornerRadius","barMaxWidth","stackInverse","verticalCrosshairRect","rectColor","colorBarStyleFill","barStyle","showStroke","barStyles","barBorderColor","barBorderStyle","barBorderWidth","barColor","barColorOpacity","barRadius","barVisible","annotationAreaBand","defaultOptions","bandPosition","xBandWidth","startX","endX","width","middleX","yBandWidth","startY","endY","middleY","defaultRegressionLineColor","defaultRegressionLineLabelX","defaultRegressionLineLabelY","columnPolynomialRegressionLine","lineTheme","lineList","lineIndex","lineDash","confidenceIntervalOpacity","confidenceIntervalVisible","childrenMarks","rect","yClamper","clamper","fieldX","fieldY","xValues","confidenceInterval","evaluateGrid","regressionPolynomial","xVal","filteredData","N","halfBandWidth","linePoints","lineData","intervalData","column","pivotColumn","columnSpecPipeline","registerColumn","pieConfig","areaConfig","areaPercentConfig","barConfig","barParallelConfig","barPercentConfig","columnParallelConfig","columnPercentConfig","donutConfig","roseConfig","roseParallelConfig","radarConfig","funnelConfig","heatmapConfig","columnParallelAdvancedPipeline","initColumnParallel","sameDimensionsMode","isDeepEqual","barGapInGroup","columnParallel","pivotColumnParallel","columnParallelSpecPipeline","registerColumnParallel","columnPercentAdvancedPipeline","percent","columnPercent","pivotColumnPercent","columnPercentSpecPipeline","registerColumnPercent","defaultEncodingForBar","encodingForBar","sortYBandAxis","yField","barAdvancedPipeline","initBar","datasetYX","xLinear","yBand","horizontalCrosshairRect","bar","pivotBar","barSpecPipeline","registerBar","barParallelAdvancedPipeline","initBarParallel","barParallel","pivotBarParallel","barParallelSpecPipeline","registerBarParallel","barPercentAdvancedPipeline","barPercent","pivotBarPercent","barPercentSpecPipeline","registerBarPercent","areaAdvancedPipeline","initArea","colorAreaStyleFill","areaStyle","areaStyles","group","areaGroups","groupBy","areaVisible","area","pivotArea","areaSpecPipeline","registerArea","areaPercentAdvancedPipeline","areaPercent","pivotAreaPercent","areaPercentSpecPipeline","registerAreaPercent","defaultEncodingForScatter","encodingForScatter","dimensionsWithoutMeasureName","buildMeasuresForScatter","scatterMeasures","basicMeasuresToScatterMeasures","scatterMeasuresToMeasureTree","basicMeasures","yMeasures","xMeasures","isYAxis","isXAxis","groupChildren","arrPrimaryMeasures","arrSecondaryMeasures","scatterChart","Boolean","isX","isY","scatterConfig","reshapeWithScatterEncoding","unfoldInfoList","pivotReshapeWithScatterEncoding","datasetList","scatterAdvancedPipeline","initScatter","datasetScatter","scatterSize","size","labelScatter","tooltipScatter","meaContent","horizontalCrosshairLine","generateRegressionLinePipe","regressionFunction","getOptions","colorAttrOptions","groups","groupData","mainColor","ld","areaPoints","linearRegressionLine","regressionLinear","lowessRegressionLine","regressionLowess","polynomialRegressionLine","logisticRegressionLine","regressionLogistic","scatter","pivotScatter","scatterSpecPipeline","registerScatter","defaultEncodingForDualAxis","encodingForDualAxis","buildMeasuresForDualAxis","dualMeasures","basicMeasuresToDualMeasures","dualMeasuresToMeasureTree","primaryMeasures","secondaryMeasures","isPrimaryYAxis","isSecondaryYAxis","dualChart","isPrimary","isSecondary","reshapeWithDualEncoding","pivotReshapeWithDualEncoding","dualAxisConfig","dualAxisAdvancedPipeline","series","args","seriesDualAxis","createDualContext","initDualAxisPrimary","initDualAxisSecondary","dualChartTypePrimary","primary","secondary","bothColumn","columnSpec","dualChartTypeSecondary","datasetPrimary","datasetSecondary","labelPrimary","labelSecondary","tooltipPrimary","tooltipSecondary","yLinearPrimary","reshapeInfoId","primaryYAxis","yAxisConfig","alignTicks","alignTicksConfig","isEmptySecondary","seriesIds","seriesId","yLinearSecondary","secondaryYAxis","onlySecondary","sync","linearColorForDualAxis","dualAxis","pivotDualAxis","dualAxisSpecPipeline","registerDualAxis","defaultEncodingForPie","encodingForPie","pieAdvancedPipeline","initPie","colorPieStyleFill","pieStyle","labelPie","pivotHideIndicatorName","addRegionPadding","pie","pivotPie","pieSpecPipeline","registerPie","donutAdvancedPipeline","initDonut","donut","pivotDonut","donutSpecPipeline","registerDonut","defaultEncodingForRose","encodingForRose","roseAdvancedPipeline","initRose","hasNegativeValue","radiusAxis","colorRoseStyleFill","roseStyle","rose","pivotRose","roseSpecPipeline","registerRose","roseParallelAdvancedPipeline","initRoseParallel","roseParallel","pivotRoseParallel","roseParallelSpecPipeline","registerRoseParallel","defaultEncodingForRadar","encodingForRadar","radarAdvancedPipeline","initRadar","radarAngleAxis","radarRadiusAxis","radar","pivotRadar","radarSpecPipeline","registerRadar","defaultEncodingForFunnel","encodingForFunnel","funnelAdvancedPipeline","initFunnel","colorFunnelStyleFill","funnelStyle","funnelTransformStyle","funnel","pivotFunnel","funnelSpecPipeline","registerFunnel","defaultEncodingForHeatmap","encodingForHeatmap","colorDims","heatmapAdvancedPipeline","heatmapColorLegend","range","val","colorCellStyleFill","cellStyle","cell","tooltipHeatmap","initHeatmap","heatmap","pivotHeatmap","heatmapSpecPipeline","registerHeatmap","boxplotConfig","defaultEncodingForBoxplot","encodingForBoxplot","c","reshapeWithBoxplotEncoding","uniqDims","whiskers","m","boxPlotData","boxplot","pivotReshapeWithBoxplotEncoding","rowColumnFields","subMeasures","boxplotAdvancedPipeline","initBoxplot","datasetBoxplot","boxPlotMeasureKeys","VCHART_OUTLIER_KEY","tooltipBoxplot","valueMeasure","defaultFormatter","tooltipItems","outerlierMeasure","mea","pivotBoxplot","boxplotSpecPipeline","registerBoxplot","histogramConfig","defaultEncodingForHistogram","encodingForHistogram","reshapeWithHistogramEncoding","binCount","binStep","binValueType","valueField","binData","bin","pivotReshapeWithHistogramEncoding","histogramAdvancedPipeline","initHistogram","datasetHistogram","tooltipHistogram","kdeRegressionLine","region","scaleY","viewData","simpleData","kde","scaleR","ecdfRegressionLine","ecdf","yRange","y0","y1","histogram","pivotHistogram","histogramSpecPipeline","registerHistogram","getDarkCrosshairLine","getDarkCrosshairRect","getLightCrosshairLine","getLightCrosshairRect","getLightColorScheme","getDarkColorScheme","getLightLinearColorScheme","getDarkLinearColorScheme","getLightColor","getDarkColor","getDefaultLabel","getDarkLabel","getLightLabel","getDefaultLegend","getDefaultTableConfig","getLightTableConfig","getDarkTableConfig","pickPivotChartGridConfig","getLightPivotChartGridConfig","getDarkPivotChartGridConfig","getDefaultTooltip","getLightLinearAxis","getLightBandAxis","getDarkLinearAxis","getDarkBandAxis","getDefaultAnnotationPoint","getLightAnnotationPoint","getDefaultAnnotationLine","getLightAnnotationHorizontalLine","getLightAnnotationVerticalLine","getDefaultAnnotationArea","getLightAnnotationArea","getLightAnnotation","getDarkAnnotationPoint","getDarkAnnotationHorizontalLine","getDarkAnnotationVerticalLine","getDarkAnnotationArea","getDarkAnnotation","getLightFunnelTransformTheme","getDarkFunnelTransformTheme","getLightHeatmapCellTheme","getDarkHeatmapCellTheme","getDefaultRegressionLine","getLightRegressionLine","getDarkRegressionLine","lightTheme","barBandAxis","crosshairLine","crosshairRect","darkTheme","registerCustomTheme","registerLightTheme","registerDarkTheme","registerAll","updateAdvanced","advancedPipe","updateSpec","specPipe","zChartType","z","zDualChartType","zDatum","zDataset","zDimension","zDimensionGroup","zDimensions","zDimensionTree","zNumFormat","zMeasure","zMeasureGroup","zMeasures","zMeasureTree","zDualMeasure","zDualMeasures","zScatterMeasure","zScatterMeasures","zFoldInfo","zUnfoldInfo","zDatasetReshapeInfo","zEncoding","EncodingEnum","zDimensionEncoding","DimensionEncodingEnum","zMeasureEncoding","MeasureEncodingEnum","zBackgroundColor","zTableConfig","zXBandAxis","zYBandAxis","zXLinearAxis","zYLinearAxis","zCrosshairLine","zCrosshairRect","zColor","zLinearColor","zLabel","zLegend","zColorLegend","zTooltip","zSelector","zSelectors","zAnnotationPoint","zAnnotationHorizontalLine","zAnnotationArea","zAnnotationPointConfig","zAnnotationHorizontalLineConfig","zAnnotationVerticalLineConfig","zAnnotationAreaConfig","zAnnotationConfig","zPivotChartGridConfig","zLineConfig","zStackCornerRadius","zBarMaxWidth","zBarGapInGroup","zEcdfRegressionLine","zKdeRegressionLine","zLinearRegressionLine","zLogisticRegressionLine","zLowessRegressionLine","zPolynomialRegressionLine","zRegressionLine","zColumnParallelConfig","zColumnConfig","zColumnPercentConfig","zBarConfig","zBarParallelConfig","zBarPercentConfig","zAreaConfig","zAreaPercentConfig","zScatterConfig","zDualAxisConfig","zPieLabel","zPieConfig","zDonutConfig","zRadarConfig","zRoseConfig","zRoseParallelConfig","zFunnelTransform","zFunnelConfig","zHeatmapCell","zHeatmapConfig","zPivotTableConfig","zWhiskersConfig","zBoxplotConfig","zHistogramConfig","zConfig","zCustomThemeConfig","zCustomTheme","zTheme","zBarStyle","zPointStyle","zLineStyle","zAreaStyle","zMarkStyle","zAnnotationVerticalLine","zAnnotation","zSort","zSortLegend","zAnalysis","zLocale","zTable","zPivotTable","zLine","zColumn","zColumnParallel","zColumnPercent","zBar","zBarParallel","zBarPercent","zArea","zAreaPercent","zScatter","zDualAxis","zHistogram","zRose","zRoseParallel","zPie","zDonut","zRadar","zFunnel","zHeatmap","zBoxplot","zVSeed","zAdvancedVSeed"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["webpack://@visactor/vseed/webpack/runtime/create_fake_namespace_object","webpack://@visactor/vseed/webpack/runtime/define_property_getters","webpack://@visactor/vseed/webpack/runtime/has_own_property","webpack://@visactor/vseed/webpack/runtime/make_namespace_object","webpack://@visactor/vseed/./src/pipeline/utils/pipeline.ts","webpack://@visactor/vseed/./src/i18n/i18n.ts","webpack://@visactor/vseed/./src/builder/builder/buildAdvanced.ts","webpack://@visactor/vseed/./src/builder/builder/buildSpec.ts","webpack://@visactor/vseed/./src/builder/builder/build.ts","webpack://@visactor/vseed/./src/pipeline/utils/tree/traverse.ts","webpack://@visactor/vseed/./src/pipeline/utils/measures/depth.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/utils.ts","webpack://@visactor/vseed/./src/pipeline/utils/constant.ts","webpack://@visactor/vseed/./src/pipeline/utils/chatType.ts","webpack://@visactor/vseed/./src/builder/builder/advanced/colorItems.ts","webpack://@visactor/vseed/./src/builder/builder/builder.ts","webpack://@visactor/vseed/./src/pipeline/utils/valid/checkVSeed.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/init/initAdvancedVSeed.ts","webpack://@visactor/vseed/./src/pipeline/utils/measures/typeGuard.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/default/defaultMeasures.ts","webpack://@visactor/vseed/./src/pipeline/utils/dimensions/typeGuard.ts","webpack://@visactor/vseed/./src/pipeline/utils/measures/find.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/default/defaultDimensions.ts","webpack://@visactor/vseed/./src/pipeline/utils/replaceNullToUndefined.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/cellStyle/cellStyle.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/records/records.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/config/tableConfig.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/theme/theme.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipeline/table.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/init/table.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/columns/dimensionsToColumns.ts","webpack://@visactor/vseed/./src/pipeline/utils/format/createNumFormatter.ts","webpack://@visactor/vseed/./src/pipeline/utils/format/createFormatter.ts","webpack://@visactor/vseed/./src/pipeline/utils/format/createFormatterByMeasure.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/columns/measuresToColumns.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/theme/bodyStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/theme/headerStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/theme/frameStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/theme/selectionStyle.ts","webpack://@visactor/vseed/./src/dataSelector/selector.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/cellStyle/common.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/cellStyle/table.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipeline/table.ts","webpack://@visactor/vseed/./src/builder/register/chartType/table.ts","webpack://@visactor/vseed/./src/dataReshape/constant.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/default/defaultMeasureId.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/encoding/pivotTable.ts","webpack://@visactor/vseed/./src/dataReshape/foldMeasures.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/reshape/reshapePivotTable.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/config/pivotTableConfig.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipeline/pivotTable.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/init/pivotTable.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/columns/pivotColumns.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/rows/pivotRows.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/corner/titleOnDimension.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/indicators/pivotIndicators.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/theme/rowHeaderStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/theme/cornerHeaderStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/cellStyle/pivot.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/indicators/pivotDataConfig.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipeline/pivotTable.ts","webpack://@visactor/vseed/./src/builder/register/chartType/pivotTable.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/init/initAdvancedVSeed.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/default/defaultMeasures.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/default/defaultDimensions.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/default/defaultMeasureId.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/adapter/encodingAdapter.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/color/addColorToEncoding.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/line.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/buildMeasures.ts","webpack://@visactor/vseed/./src/pipeline/utils/measures/delete.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/deleteEncodingForMeasure.ts","webpack://@visactor/vseed/./src/pipeline/utils/dimensions/delete.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/dimensions/deleteTooltipAndLabelDimensions.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/pivot/pivotAdapter.ts","webpack://@visactor/vseed/./src/dataReshape/unfoldDimensions.ts","webpack://@visactor/vseed/./src/dataReshape/dataReshapeByEncoding.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/colorAdapter.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeWithEncoding.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithEncoding.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/analysis/common.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/analysis/sortXBand.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/analysis/sortLegend.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/config/line.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/markStyle/markStyle.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/annotation/annotation.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/line.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/line.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/color.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/linearColor.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/backgroundColor/background.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/datasetXY.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/progressive.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/title/defaultTitleText.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/xBand.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/format/linearFormat.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/yLinear.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/crosshair/verticalCrosshairLine.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/legend/discreteLegend.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/legend/colorLegend.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/colorPointStyleFill.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/pointStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/pointState.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/colorLineStyleFill.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/curve/curve.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/lineStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/label/label.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltip.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/utils.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/annotationPoint.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/annotationVerticalLine.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/annotationHorizontalLine.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/annotationArea.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/splitLine.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/pivot.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/pivotChart/pivotGridStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/pivotChart/pivotIndicators.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/datasetPivot.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/pivotChart/pivotAxisStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/pivotChart/pivotRowDimensions.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/pivotChart/pivotColumnDimensions.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/pivotChart/pivotTitle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/legend/pivotDiscreteLegend.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/legend/pivotColorLegend.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/pivotChart/pivotAdapter.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/line.ts","webpack://@visactor/vseed/./src/builder/register/chartType/line.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/column.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/config/column.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/regressionLine/regressionLine.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/column.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/column.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/stack/stackCornerRadius.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/barWidth/barMaxWidth.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/stack/stack.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/crosshair/verticalCrosshairRect.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/colorBarStyleFill.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/barStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/annotationAreaBand.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/regressionLine/common.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/regressionLine/columnRegressionLine.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/column.ts","webpack://@visactor/vseed/./src/builder/register/chartType/column.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/config/pie.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/config/index.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/columnParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/columnParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/barWidth/barGapInGroup.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/columnParallel.ts","webpack://@visactor/vseed/./src/builder/register/chartType/columnParallel.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/columnPercent.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/percent/percent.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/columnPercent.ts","webpack://@visactor/vseed/./src/builder/register/chartType/columnPercent.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/bar.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/analysis/sortYBand.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/bar.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/bar.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/datasetYX.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/xLinear.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/yBand.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/crosshair/horizontalCrosshairRect.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/bar.ts","webpack://@visactor/vseed/./src/builder/register/chartType/bar.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/barParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/barParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/barParallel.ts","webpack://@visactor/vseed/./src/builder/register/chartType/barParallel.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/barPercent.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/barPercent.ts","webpack://@visactor/vseed/./src/builder/register/chartType/barPercent.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/area.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/area.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/colorAreaStyleFill.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/areaStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/area.ts","webpack://@visactor/vseed/./src/builder/register/chartType/area.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/areaPercent.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/areaPercent.ts","webpack://@visactor/vseed/./src/builder/register/chartType/areaPercent.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/scatter.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/buildMeasuresForScatter.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/config/scatter.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeWithScatterEncoding.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithScatterEncoding.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/scatter.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/scatter.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/datasetScatter.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/size/scatterSize.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/label/labelScatter.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipScatter.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/crosshair/horizontalCrosshairLine.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/regressionLine/linearRegressionLine.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/scatter.ts","webpack://@visactor/vseed/./src/builder/register/chartType/scatter.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/dualAxis.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/buildMeasuresForDualAxis.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/config/dualAxis.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/dualAxis.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/series/series.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/dualAxis.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dual/dualChartType.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/datasetDualAxis.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/label/labelDualAxis.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/yLinearPrimary.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/yLinearSecondary.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/linearColorForDualAxis.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/dualAxis.ts","webpack://@visactor/vseed/./src/builder/register/chartType/dualAxis.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/pie.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/pie.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/pie.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/colorPieStyleFill.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/pieStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/label/labelPie.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/pivotChart/pivotHideIndicatorName.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/region/addRegionPadding.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/pie.ts","webpack://@visactor/vseed/./src/builder/register/chartType/pie.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/donut.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/donut.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/donut.ts","webpack://@visactor/vseed/./src/builder/register/chartType/donut.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/rose.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/rose.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/rose.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/radius.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/colorRoseStyleFill.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/roseStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/rose.ts","webpack://@visactor/vseed/./src/builder/register/chartType/rose.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/roseParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/roseParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/roseParallel.ts","webpack://@visactor/vseed/./src/builder/register/chartType/roseParallel.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/radar.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/radar.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/radar.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/radarAngle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/radarRadius.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/radar.ts","webpack://@visactor/vseed/./src/builder/register/chartType/radar.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/funnel.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/funnel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/funnel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/colorFunnelStyleFill.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/funnelStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/funnelTransformStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/funnel.ts","webpack://@visactor/vseed/./src/builder/register/chartType/funnel.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/heatmap.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/heatmap.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/legend/heatmapColorLegend.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/colorCellStyleFill.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/cellStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/heatmap.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/heatmap.ts","webpack://@visactor/vseed/./src/builder/register/chartType/heatmap.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/config/boxplot.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/boxplot.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeWithBoxplotEncoding.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/boxplot.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/boxplot.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/datasetBoxplot.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipBoxplot.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/boxplot.ts","webpack://@visactor/vseed/./src/builder/register/chartType/boxplot.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/config/histogram.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/histogram.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeWithHistogramEncoding.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithHistogramEncoding.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/histogram.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/histogram.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/datasetHistogram.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipHistogram.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/regressionLine/kdeRegressionLine.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/regressionLine/ecdfRegressionLine.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/histogram.ts","webpack://@visactor/vseed/./src/builder/register/chartType/histogram.ts","webpack://@visactor/vseed/./src/theme/common/crosshair.ts","webpack://@visactor/vseed/./src/theme/common/color.ts","webpack://@visactor/vseed/./src/theme/common/label.ts","webpack://@visactor/vseed/./src/theme/common/legend.ts","webpack://@visactor/vseed/./src/theme/common/table.ts","webpack://@visactor/vseed/./src/theme/common/tooltip.ts","webpack://@visactor/vseed/./src/theme/common/axes.ts","webpack://@visactor/vseed/./src/theme/common/annotaion.ts","webpack://@visactor/vseed/./src/theme/common/funnelTransform.ts","webpack://@visactor/vseed/./src/theme/common/heatmapCell.ts","webpack://@visactor/vseed/./src/theme/common/regressionLine.ts","webpack://@visactor/vseed/./src/theme/light/light.ts","webpack://@visactor/vseed/./src/theme/dark/dark.ts","webpack://@visactor/vseed/./src/builder/register/theme/custom.ts","webpack://@visactor/vseed/./src/builder/register/theme/light.ts","webpack://@visactor/vseed/./src/builder/register/theme/dark.ts","webpack://@visactor/vseed/./src/builder/register/all.ts","webpack://@visactor/vseed/./src/builder/register/custom.ts","webpack://@visactor/vseed/./src/types/properties/chartType/chartType.ts","webpack://@visactor/vseed/./src/types/properties/chartType/dualChartType.ts","webpack://@visactor/vseed/./src/types/properties/dataset/dataset.ts","webpack://@visactor/vseed/./src/types/properties/dimensions/zDimensions.ts","webpack://@visactor/vseed/./src/types/properties/format/numFormat.ts","webpack://@visactor/vseed/./src/types/properties/measures/zMeasures.ts","webpack://@visactor/vseed/./src/types/properties/measures/zDualMeasures.ts","webpack://@visactor/vseed/./src/types/properties/measures/zScatterMeasures.ts","webpack://@visactor/vseed/./src/types/properties/datasetReshapeInfo/zDatasetReshapeInfo.ts","webpack://@visactor/vseed/./src/types/properties/encoding/zEncoding.ts","webpack://@visactor/vseed/./src/types/properties/encoding/zDimensionEncoding.ts","webpack://@visactor/vseed/./src/types/properties/encoding/zMeasureEncoding.ts","webpack://@visactor/vseed/./src/types/properties/config/backgroundColor/backgroundColor.ts","webpack://@visactor/vseed/./src/types/properties/config/table.ts","webpack://@visactor/vseed/./src/types/properties/config/axes/zBandAxis.ts","webpack://@visactor/vseed/./src/types/properties/config/axes/zLinearAxis.ts","webpack://@visactor/vseed/./src/types/properties/config/crosshair/zCrosshair.ts","webpack://@visactor/vseed/./src/types/properties/config/color/color.ts","webpack://@visactor/vseed/./src/types/dataSelector/selector.ts","webpack://@visactor/vseed/./src/types/properties/config/label/zLabel.ts","webpack://@visactor/vseed/./src/types/properties/config/legend/legend.ts","webpack://@visactor/vseed/./src/types/properties/config/tooltip/tooltip.ts","webpack://@visactor/vseed/./src/types/properties/annotation/zAnnotationPoint.ts","webpack://@visactor/vseed/./src/types/properties/annotation/zAnnotationHorizontalLine.ts","webpack://@visactor/vseed/./src/types/properties/annotation/zAnnotationArea.ts","webpack://@visactor/vseed/./src/types/properties/config/annotation/zAnnotaion.ts","webpack://@visactor/vseed/./src/types/properties/config/pivotGrid/pivotGrid.ts","webpack://@visactor/vseed/./src/types/properties/config/line.ts","webpack://@visactor/vseed/./src/types/properties/config/stackCornerRadius/stackCornerRadius.ts","webpack://@visactor/vseed/./src/types/properties/config/barWidth/index.ts","webpack://@visactor/vseed/./src/types/properties/regressionLine/zRegressionLine.ts","webpack://@visactor/vseed/./src/types/properties/config/column.ts","webpack://@visactor/vseed/./src/types/properties/config/bar.ts","webpack://@visactor/vseed/./src/types/properties/config/area.ts","webpack://@visactor/vseed/./src/types/properties/config/scatter.ts","webpack://@visactor/vseed/./src/types/properties/config/dualAxis.ts","webpack://@visactor/vseed/./src/types/properties/config/label/zPieLabel.ts","webpack://@visactor/vseed/./src/types/properties/config/pie.ts","webpack://@visactor/vseed/./src/types/properties/config/rose.ts","webpack://@visactor/vseed/./src/types/properties/config/funnelTransform/zFunnelTransform.ts","webpack://@visactor/vseed/./src/types/properties/config/funnel.ts","webpack://@visactor/vseed/./src/types/properties/config/heatmap/zHeatmap.ts","webpack://@visactor/vseed/./src/types/properties/config/heatmap.ts","webpack://@visactor/vseed/./src/types/properties/config/pivotTable.ts","webpack://@visactor/vseed/./src/types/properties/config/whiskers/index.ts","webpack://@visactor/vseed/./src/types/properties/config/boxplot.ts","webpack://@visactor/vseed/./src/types/properties/config/histogram.ts","webpack://@visactor/vseed/./src/types/properties/config/config.ts","webpack://@visactor/vseed/./src/types/properties/theme/customTheme.ts","webpack://@visactor/vseed/./src/types/properties/theme/theme.ts","webpack://@visactor/vseed/./src/types/properties/markStyle/barStyle.ts","webpack://@visactor/vseed/./src/types/properties/markStyle/pointStyle.ts","webpack://@visactor/vseed/./src/types/properties/markStyle/lineStyle.ts","webpack://@visactor/vseed/./src/types/properties/markStyle/zAreaStyle.ts","webpack://@visactor/vseed/./src/types/properties/markStyle/markStyle.ts","webpack://@visactor/vseed/./src/types/properties/annotation/zAnnotationVerticalLine.ts","webpack://@visactor/vseed/./src/types/properties/annotation/annotation.ts","webpack://@visactor/vseed/./src/types/properties/analysis/sort.ts","webpack://@visactor/vseed/./src/types/properties/analysis/sortLegend.ts","webpack://@visactor/vseed/./src/types/properties/analysis/analysis.ts","webpack://@visactor/vseed/./src/types/properties/cellStyle/bodyCellStyle.ts","webpack://@visactor/vseed/./src/types/i18n/i18n.ts","webpack://@visactor/vseed/./src/types/chartType/table/zTable.ts","webpack://@visactor/vseed/./src/types/chartType/pivotTable/zPivotTable.ts","webpack://@visactor/vseed/./src/types/chartType/line/zLine.ts","webpack://@visactor/vseed/./src/types/chartType/column/zColumn.ts","webpack://@visactor/vseed/./src/types/chartType/columnParallel/zColumnParallel.ts","webpack://@visactor/vseed/./src/types/chartType/columnPercent/zColumnPercent.ts","webpack://@visactor/vseed/./src/types/chartType/bar/zBar.ts","webpack://@visactor/vseed/./src/types/chartType/barParallel/zBarParallel.ts","webpack://@visactor/vseed/./src/types/chartType/barPercent/zBarPercent.ts","webpack://@visactor/vseed/./src/types/chartType/area/zArea.ts","webpack://@visactor/vseed/./src/types/chartType/areaPercent/zAreaPercent.ts","webpack://@visactor/vseed/./src/types/chartType/scatter/zScatter.ts","webpack://@visactor/vseed/./src/types/chartType/dualAxis/zDualAxis.ts","webpack://@visactor/vseed/./src/types/chartType/histogram/zHistogram.ts","webpack://@visactor/vseed/./src/types/chartType/rose/zRose.ts","webpack://@visactor/vseed/./src/types/chartType/roseParallel/zRoseParallel.ts","webpack://@visactor/vseed/./src/types/chartType/pie/zPie.ts","webpack://@visactor/vseed/./src/types/chartType/donut/zDonut.ts","webpack://@visactor/vseed/./src/types/chartType/radar/zRadar.ts","webpack://@visactor/vseed/./src/types/chartType/funnel/zFunnel.ts","webpack://@visactor/vseed/./src/types/chartType/heatmap/zHeatmap.ts","webpack://@visactor/vseed/./src/types/chartType/boxplot/zBoxplot.ts","webpack://@visactor/vseed/./src/types/zVseed.ts","webpack://@visactor/vseed/./src/types/properties/cellStyle/cellStyle.ts","webpack://@visactor/vseed/./src/types/advancedVSeed.ts"],"sourcesContent":["var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n __webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => { def[key] = () => (value[key]) });\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import type { ExecPipelineType, Pipe } from 'src/types'\n\n/**\n * 执行pipeline, 每个pipe负责构建结果的一部分, 构建完成后得到完整的目标结果\n * @param pipeline pipeline数组, 每个pipe负责构建结果的一部分\n * @param initialValue 初始值\n * @param context 上下文\n * @returns 执行后的结果\n */\nexport const execPipeline: ExecPipelineType = <T, U>(\n pipeline: Array<Pipe<T, U>>,\n context: U,\n initialValue: Partial<T> = {},\n): T => {\n const result = pipeline.reduce((prev, cur) => {\n return cur(prev, context)\n }, initialValue)\n return result as T\n}\n","import { isNullish } from 'remeda'\nimport * as translateMap from './i18nData.json'\nimport type { Locale, TranslateRecordType } from '../types'\n\nclass Intl {\n private static instance: Intl\n\n private translateMap: TranslateRecordType = translateMap as unknown as TranslateRecordType\n private locale: Locale = 'zh-CN'\n\n canTranslate = (value: string) => !!this.translateMap[value]\n\n /**\n * @example i18n`指标名称`\n */\n i18n = (segments: TemplateStringsArray, ...values: Array<number | string>) => {\n const text = segments.map((segment, index) => segment + (values[index] || '')).join('')\n const translatedText = this.translateMap?.[text]?.[this.locale]\n if (isNullish(translatedText)) {\n console.warn(`i18n ${this.locale} no translate: ${text}`)\n return text\n }\n return translatedText\n }\n\n setLocale = (locale: Locale): void => {\n this.locale = locale\n }\n\n getLocale: () => Locale = () => this.locale\n\n public static getInstance() {\n if (!Intl.instance) {\n Intl.instance = new Intl()\n }\n\n return Intl.instance\n }\n}\n\nconst intl = Intl.getInstance()\n\nexport { intl }\n","import type { AdvancedPipelineContext, AdvancedVSeed } from 'src/types'\nimport { execPipeline } from '../../pipeline'\nimport { Builder } from './builder'\nimport { intl } from 'src/i18n'\n\nexport const buildAdvanced = (builder: Builder): AdvancedVSeed | null => {\n const start = typeof performance !== 'undefined' ? performance.now() : Date.now()\n const { chartType } = builder.vseed\n if (!chartType) {\n throw new Error('chartType is nil in buildAdvanced')\n }\n\n const pipeline = Builder.getAdvancedPipeline(chartType)\n if (!pipeline) {\n throw new Error(\n `please invoke registerAll or register ${chartType} before build, no advanced pipeline for chartType ${chartType}`,\n )\n }\n\n const context: AdvancedPipelineContext = {\n vseed: builder.vseed,\n customTheme: Builder.getThemeMap(),\n }\n if (builder.vseed.locale) {\n intl.setLocale(builder.vseed.locale)\n }\n\n try {\n const advancedVSeed = execPipeline<AdvancedVSeed, AdvancedPipelineContext>(pipeline, context)\n builder.advancedVSeed = advancedVSeed\n return advancedVSeed\n } catch (e) {\n console.error(e)\n throw new Error(`buildAdvanced error: ${(e as Error).message}.\\ndetails info in console`)\n } finally {\n const end = typeof performance !== 'undefined' ? performance.now() : Date.now()\n builder.performance['buildAdvanced'] = `${(end - start).toFixed(4)}ms`\n }\n}\n","import type { Spec } from 'src/types'\nimport { Builder } from './builder'\nimport type { AdvancedVSeed, SpecPipelineContext } from 'src/types'\nimport { execPipeline } from '../../pipeline'\nimport { intl } from 'src/i18n'\n\nexport const buildSpec = (builder: Builder, advancedVSeed: AdvancedVSeed): Spec => {\n const start = typeof performance !== 'undefined' ? performance.now() : Date.now()\n\n const { chartType } = builder.vseed\n\n const pipeline = Builder.getSpecPipeline(chartType)\n if (!pipeline) {\n throw new Error(\n `please invoke registerAll or register ${chartType} before build, no spec pipeline for chartType ${chartType}`,\n )\n }\n\n const context: SpecPipelineContext = {\n vseed: builder.vseed,\n advancedVSeed,\n }\n if (builder.vseed.locale) {\n intl.setLocale(builder.vseed.locale)\n }\n\n try {\n const spec = execPipeline<Spec, SpecPipelineContext>(pipeline, context)\n builder.spec = spec\n return spec\n } catch (e) {\n console.error(e)\n throw new Error(`buildSpec error: ${(e as Error).message}.\\ndetails info in console`)\n } finally {\n const end = typeof performance !== 'undefined' ? performance.now() : Date.now()\n builder.performance['buildSpec'] = `${(end - start).toFixed(4)}ms`\n }\n}\n","import type { Spec } from 'src/types'\nimport type { Builder } from './builder'\n\nexport const build = (builder: Builder): Spec => {\n const advancedVSeed = builder.buildAdvanced()\n if (!advancedVSeed) {\n throw new Error('advancedVSeed is null')\n }\n const spec = builder.buildSpec(advancedVSeed)\n return spec\n}\n","/**\n * 支持泛型与可配置子节点键名的非递归前序遍历\n * @param tree 根节点数组\n * @param callback 遍历时对每个节点执行的回调,返回 true 时停止遍历\n * @param childrenKey 子节点键名(默认 'children')\n */\ntype WithChildren<Node, K extends string> = Node & { [P in K]?: Node[] }\n\nexport const preorderTraverse = <Node, K extends string = 'children'>(\n tree: Node[],\n callback: (node: Node) => boolean,\n childrenKey: K = 'children' as K,\n) => {\n if (!tree || tree.length === 0) return\n\n const stack: Node[] = [...tree].reverse()\n\n while (stack.length > 0) {\n const node = stack.pop() as Node\n const stop = callback(node)\n if (stop === true) {\n return\n }\n\n const children = (node as WithChildren<Node, K>)[childrenKey]\n if (Array.isArray(children) && children.length > 0) {\n for (let i = children.length - 1; i >= 0; i--) {\n const child = children[i]\n stack.push(child)\n }\n }\n }\n}\n","import type { Measure, MeasureTree } from 'src/types'\nimport { preorderTraverse } from '../tree/traverse'\n\n/**\n * 获取measures的深度\n * @param measures\n * @param id\n * @returns\n */\nexport const measureDepth = (measures: MeasureTree = []): number => {\n if (!measures) return 0\n let depth = 1\n preorderTraverse<Measure, 'children'>(measures, (node) => {\n if ('children' in node) {\n depth = Math.max(depth, 1 + measureDepth(node.children as MeasureTree))\n }\n return false\n })\n return depth\n}\n","import type { MeasureGroup, MeasureTree } from 'src/types'\n\n/**\n * @description 检查是否为指标树, 指标树深度大于1. 如果存在一个指标为组, 即有children配置, 则认为是指标树.\n * @param vseed vseed\n * @returns\n */\nexport const isMeasureTreeWithChildren = <T extends MeasureTree>(measures?: T) => {\n if (!measures) {\n return false\n }\n\n return measures.some((measure) => 'children' in measure)\n}\n\n/**\n * @description 检查是否为指标树, 指标树存在parentId. 如果存在一个指标有parentId, 则认为是指标树.\n * @param vseed vseed\n * @returns\n */\nexport const isMeasureTreeWithParentId = <T extends MeasureTree>(measures?: T) => {\n if (!measures) {\n return false\n }\n\n return measures.some((measure) => 'parentId' in measure)\n}\n\n/**\n * @description 保证指标树中的每一组都有children, 没有children的指标, 会被放到一个默认的指标组中.\n * @param measures 指标树\n * @returns\n */\nexport const normalizeMeasureTree = (measures: MeasureTree) => {\n const createEmptyMeasureGroup = (): MeasureGroup => {\n return {\n id: 'group',\n alias: '',\n children: [],\n }\n }\n\n let currentGroup: MeasureGroup = createEmptyMeasureGroup()\n const measureGroups: MeasureGroup[] = []\n for (const measure of measures) {\n if ('children' in measure) {\n // 当前指标组之前的所有独立指标成组\n if (currentGroup.children?.length) {\n currentGroup.id = [currentGroup.id, ...currentGroup.children.map((item) => item.id)].join('-')\n currentGroup.alias = currentGroup.children.map((item) => item.alias).join('-')\n measureGroups.push(currentGroup)\n currentGroup = createEmptyMeasureGroup()\n }\n // 当前是指标组\n measureGroups.push(measure)\n } else {\n currentGroup.children?.push(measure)\n }\n }\n\n // 最后一组\n if (currentGroup.children?.length) {\n currentGroup.id = [currentGroup.id, ...currentGroup.children.map((item) => item.id)].join('-')\n currentGroup.alias = currentGroup.children.map((item) => item.alias).join('-')\n measureGroups.push(currentGroup)\n currentGroup = createEmptyMeasureGroup()\n }\n\n return measureGroups\n}\n","// 标注层 z-index\nexport const ANNOTATION_Z_INDEX = 1000\n// 线性轴 顶部空隙 预留5px\nexport const LINEAR_AXIS_INNER_OFFSET_TOP = 12\n// 双轴图 柱图 ZIndex\nexport const DUAL_AXIS_CHART_COLUMN_Z_INDEX = 1000\n// 双轴图 非柱图 ZIndex\nexport const DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX = 1001\n// 双轴图 标注层 ZIndex\nexport const DUAL_AXIS_LABEL_Z_INDEX = 1002\n// 默认父级id\nexport const DEFAULT_PARENT_ID = '__DefaultParentId__'\n// 轴标签间距\nexport const AXIS_LABEL_SPACE = 8\n// 透视轴 band 类型内边距\nexport const BAND_AXIS_INNER_OFFSET_IN_PIVOT = 2\n\n// 图表类型枚举\nexport const ChartTypeEnum = {\n Table: 'table',\n PivotTable: 'pivotTable',\n // cartesian\n Line: 'line',\n Column: 'column',\n ColumnPercent: 'columnPercent',\n ColumnParallel: 'columnParallel',\n Bar: 'bar',\n BarPercent: 'barPercent',\n BarParallel: 'barParallel',\n Area: 'area',\n AreaPercent: 'areaPercent',\n DualAxis: 'dualAxis',\n Scatter: 'scatter',\n // polar\n Rose: 'rose',\n RoseParallel: 'roseParallel',\n Pie: 'pie',\n Donut: 'donut',\n Radar: 'radar',\n // other\n Funnel: 'funnel',\n Heatmap: 'heatmap',\n Boxplot: 'boxPlot',\n Histogram: 'histogram',\n} as const\n\n// Heatmap hide cell\nexport const DATUM_HIDE_KEY = '__VSEED_HideItem__'\n","import { type Dimensions, type DimensionGroup, type DimensionTree, type VSeed, type Measure } from 'src/types'\nimport { measureDepth } from './measures'\nimport { isMeasureTreeWithChildren, isMeasureTreeWithParentId } from '../advanced/chart/pipes/measures/utils'\nimport { unique } from 'remeda'\nimport { ChartTypeEnum, DEFAULT_PARENT_ID } from './constant'\n\nexport const isTable = (vseed: VSeed) => {\n return vseed.chartType === ChartTypeEnum.Table\n}\nexport const isPivotTable = (vseed: VSeed) => {\n return vseed.chartType === ChartTypeEnum.PivotTable\n}\nexport const isRadar = (vseed: VSeed) => {\n return vseed.chartType === ChartTypeEnum.Radar\n}\nexport const isAreaPercent = (vseed: VSeed) => {\n return vseed.chartType === ChartTypeEnum.AreaPercent\n}\nexport const isColumnPercent = (vseed: VSeed) => {\n return vseed.chartType === ChartTypeEnum.ColumnPercent\n}\nexport const isBarPercent = (vseed: VSeed) => {\n return vseed.chartType === ChartTypeEnum.BarPercent\n}\n\nexport const isBarLikeChart = (vseed: VSeed) => {\n return (\n vseed.chartType === ChartTypeEnum.Bar ||\n vseed.chartType === ChartTypeEnum.BarPercent ||\n vseed.chartType === ChartTypeEnum.BarParallel\n )\n}\n\nexport const isVTable = (vseed: VSeed) => {\n return ['table', 'pivotTable'].includes(vseed.chartType)\n}\nexport const isVChart = (vseed: VSeed): boolean => {\n return !isVTable(vseed)\n}\n\n/**\n * @description 透视图表或组合图\n * - 透视图表定义: 存在 column 或 row的 encoding\n * - 组合图表定义: 存在多组指标的情况\n * - 透视组合图表: 存在 column 或 row的 encoding 且 存在多组指标的情况\n * 上述三者都只能使用 VTable.PivotChart 绘制\n */\nexport const isPivotChart = (vseed: VSeed) => {\n if (isVTable(vseed)) {\n return false\n }\n\n if (isPivot(vseed)) {\n return true\n }\n\n return isCombination(vseed)\n}\n\n/**\n * @description 存在column 或 row的encoding\n */\nexport const isPivot = (vseed: VSeed) => {\n const { dimensions = [] } = vseed as {\n dimensions: Dimensions\n }\n\n return dimensions && dimensions.some((dimension) => dimension.encoding === 'row' || dimension.encoding === 'column')\n}\n/**\n * @description 不存在column 或 row的encoding, 但是有多组指标的情况\n */\nexport const isCombination = (vseed: VSeed) => {\n if (isMeasureTreeWithParentId(vseed.measures)) {\n const parentIds = vseed.measures?.map((measure: Measure) => measure.parentId || DEFAULT_PARENT_ID)\n return parentIds && unique(parentIds).length > 1\n }\n\n if (vseed.chartType === 'dualAxis' || vseed.chartType === 'scatter') {\n if (vseed.chartType === 'scatter') {\n if (isMeasureTreeWithChildren(vseed.measures)) {\n const depth = measureDepth(vseed.measures)\n return depth === 3\n }\n\n if (vseed.scatterMeasures && vseed.scatterMeasures.length > 1) {\n return true\n }\n return false\n }\n if (vseed.chartType === 'dualAxis') {\n if (isMeasureTreeWithChildren(vseed.measures)) {\n const depth = measureDepth(vseed.measures)\n return depth === 3\n }\n\n if (vseed.dualMeasures && vseed.dualMeasures.length > 1) {\n return true\n }\n }\n\n return false\n }\n\n const { measures = [] } = vseed as {\n measures: DimensionTree\n dimensions: Dimensions\n }\n\n const hasMeasureGroup = measures && measures.some((measure: DimensionGroup) => measure && measure.children)\n\n return hasMeasureGroup\n}\n","import { unique } from 'remeda'\nimport type { Builder } from '../builder'\nimport { isPivotTable, isTable } from 'src/pipeline'\n\nexport const getColorItems = (builder: Builder): { id: string; alias: string }[] => {\n const advancedVSeed = builder.advancedVSeed\n\n if (!advancedVSeed || isTable(builder.vseed) || isPivotTable(builder.vseed)) {\n return []\n }\n\n const { datasetReshapeInfo } = advancedVSeed\n const colorItems = unique(datasetReshapeInfo.flatMap((d) => d.unfoldInfo.colorItems))\n const colorIdMap = datasetReshapeInfo.reduce<Record<string, { id: string; alias: string }>>((prev, cur) => {\n return { ...prev, ...cur.unfoldInfo.colorIdMap }\n }, {})\n\n return colorItems.map((d) => ({\n id: d,\n alias: colorIdMap[d]?.alias,\n }))\n}\n\nexport const getColorIdMap = (builder: Builder): Record<string, { id: string; alias: string }> => {\n const advancedVSeed = builder.advancedVSeed\n\n if (!advancedVSeed || isTable(builder.vseed) || isPivotTable(builder.vseed)) {\n return {}\n }\n\n const { datasetReshapeInfo } = advancedVSeed\n const colorIdMap = datasetReshapeInfo.reduce<Record<string, { id: string; alias: string }>>((prev, cur) => {\n return { ...prev, ...cur.unfoldInfo.colorIdMap }\n }, {})\n\n return colorIdMap\n}\n","import type {\n AdvancedPipe,\n AdvancedPipeline,\n AdvancedVSeed,\n ChartType,\n CustomThemeConfig,\n Spec,\n SpecPipe,\n SpecPipeline,\n VSeed,\n VSeedBuilder,\n} from 'src/types'\nimport { buildAdvanced } from './buildAdvanced'\nimport { buildSpec } from './buildSpec'\nimport { build } from './build'\nimport { intl } from 'src/i18n'\nimport { getColorIdMap, getColorItems } from './advanced'\n\nexport class Builder implements VSeedBuilder {\n private _vseed: VSeed\n private _advancedVSeed: AdvancedVSeed | null = null\n private _spec: Spec | null = null\n private _performance: Record<string, string | number> = {}\n\n constructor(vseed: VSeed) {\n this._vseed = vseed\n this._vseed.locale = vseed.locale || intl.getLocale()\n }\n\n /**\n * @description 构建spec\n * @returns spec\n */\n build = <T extends Spec>(): T => build(this) as T\n\n /**\n * @description 构建spec\n * @param advanced 高级配置\n * @returns spec\n */\n buildSpec = (advanced: AdvancedVSeed): Spec => buildSpec(this, advanced)\n\n /**\n * @description 构建spec\n * @returns AdvancedVSeed | null\n */\n buildAdvanced = (): AdvancedVSeed | null => buildAdvanced(this)\n\n /**\n * @description 获取颜色项, 颜色项可以重复,\n * @returns 颜色项\n */\n getColorItems = () => getColorItems(this)\n\n /**\n * @description 获取颜色id映射\n * @returns 颜色id映射\n */\n getColorIdMap = () => getColorIdMap(this)\n\n /**\n * @description 获取vseed\n * @returns vseed\n */\n get vseed() {\n return this._vseed\n }\n\n /**\n * @description 设置vseed\n * @param value vseed\n */\n set vseed(value) {\n this._vseed = value\n }\n\n /**\n * @description 获取advancedVSeed\n * @returns advancedVSeed\n */\n get advancedVSeed() {\n return this._advancedVSeed\n }\n\n /**\n *\n * @description 设置advancedVSeed\n * @param value advancedVSeed\n */\n set advancedVSeed(value) {\n this._advancedVSeed = value\n }\n\n /**\n * @description 获取spec\n * @returns spec\n */\n get spec() {\n return this._spec\n }\n\n /**\n * @description 设置spec\n * @param value spec\n */\n set spec(value) {\n this._spec = value\n }\n\n /**\n * @description 获取performance, 统计了构建spec和advancedVSeed的时间\n * @returns performance\n */\n get performance() {\n return this._performance\n }\n\n /**\n * @description 设置performance\n * @param value performance\n */\n set performance(value) {\n this._performance = value\n }\n\n /**\n * @description 获取advancedPipeline\n * @param chartType 图表类型\n * @returns advancedPipeline\n */\n static getAdvancedPipeline = (chartType: ChartType) => {\n const customPipe = Builder._customAdvancedPipe[chartType] as AdvancedPipe\n const pipeline = Builder._advancedPipelineMap[chartType] as AdvancedPipeline\n if (customPipe) {\n pipeline.push(customPipe)\n }\n return pipeline\n }\n\n /**\n * @description 获取specPipeline\n * @param chartType 图表类型\n * @returns specPipeline\n */\n\n static getSpecPipeline = (chartType: ChartType) => {\n const customPipe = Builder._customSpecPipe[chartType] as SpecPipe\n const pipeline = Builder._specPipelineMap[chartType] as SpecPipeline\n if (customPipe) {\n pipeline.push(customPipe)\n }\n return pipeline\n }\n\n /**\n * @description 根据主题key获取主题配置\n * @param themeKey 主题key\n * @example Builder.getTheme('light'), 获取浅色主题\n * @returns 主题配置\n */\n static getTheme = (themeKey?: string) => Builder._themeMap[themeKey || 'light']\n\n /**\n * @description 获取主题配置映射表\n * @example Builder.getThemeMap()\n * @returns 主题配置映射表\n */\n static getThemeMap = () => Builder._themeMap\n\n /**\n * @description 从vseed创建builder\n * @param vseed 完整的vseed DSL\n * @returns builder\n */\n static from = (vseed: VSeed) => new Builder(vseed)\n\n static _advancedPipelineMap: Partial<Record<ChartType, AdvancedPipeline>> = {}\n static _specPipelineMap: Partial<Record<ChartType, SpecPipeline>> = {}\n static _customAdvancedPipe: Partial<Record<ChartType, AdvancedPipe>> = {}\n static _customSpecPipe: Partial<Record<ChartType, SpecPipe>> = {}\n static _themeMap: Record<string, CustomThemeConfig> = {}\n}\n","import { isEmpty } from 'remeda'\nimport type { VSeed } from 'src/types'\n\nexport const checkVSeed = (vseed: VSeed) => {\n const { chartType, dataset, dimensions, measures } = vseed\n if (!chartType) {\n throw new Error('chartType is required')\n }\n if (!dataset || isEmpty(dataset)) {\n throw new Error('dataset is required, and must be an array')\n }\n if (dimensions && !Array.isArray(dimensions)) {\n throw new Error('dimensions must be an array')\n }\n if (measures && !Array.isArray(measures)) {\n throw new Error('measures must be an array')\n }\n}\n","import { checkVSeed } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed } from 'src/types'\n\nexport const initAdvancedVSeed: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType, locale } = vseed\n\n checkVSeed(vseed)\n\n return {\n ...advancedVSeed,\n chartType,\n locale: locale || 'zh-CN',\n } as AdvancedVSeed\n}\n","import type { Measure, MeasureGroup } from 'src/types'\n\nexport const isMeasure = (measure: Measure | MeasureGroup): measure is Measure => {\n return !('children' in measure)\n}\n\nexport const isMeasureGroup = (measure: Measure | MeasureGroup): measure is MeasureGroup => {\n return 'children' in measure\n}\n\nexport const isMeasures = (measures: Measure[] | MeasureGroup[]): measures is Measure[] => {\n return measures.every(isMeasure)\n}\n","import { clone } from 'remeda'\nimport { isMeasure, preorderTraverse } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Datum } from 'src/types'\n\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 preorderTraverse(clonedMeasures, (node) => {\n if (isMeasure(node)) {\n node.alias = node.alias || node.id\n }\n return false\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","import type { Dimension, DimensionGroup } from 'src/types'\n\nexport const isDimension = (dimension: Dimension | DimensionGroup): dimension is Dimension => {\n return !('children' in dimension)\n}\n\nexport const isDimensionGroup = (dimension: Dimension | DimensionGroup): dimension is DimensionGroup => {\n return 'children' in dimension\n}\n\n// export const isDimensions = (dimensions: Dimension[] | DimensionGroup[]): dimensions is Dimension[] => {\n// return dimensions.every(isDimension)\n// }\n","import type { Measure, MeasureTree } from 'src/types'\nimport { preorderTraverse } from '../tree'\n\nexport const findMeasureById = (measures: MeasureTree = [], id: string): Measure | undefined => {\n if (!measures) return undefined\n let result: Measure | undefined\n\n preorderTraverse<Measure, 'children'>(measures, (node) => {\n if (!('children' in node)) {\n if (node.id === id) {\n result = node\n return true\n }\n }\n return false\n })\n return result\n}\n\nexport const findFirstMeasure = (measures: MeasureTree = []): Measure | undefined => {\n if (!measures) return undefined\n let result: Measure | undefined\n preorderTraverse<Measure, 'children'>(measures, (node) => {\n if (!('children' in node)) {\n result = node\n return true\n }\n return false\n })\n return result\n}\n\nexport const findAllMeasures = (measures: MeasureTree = []): Measure[] => {\n if (!measures) return []\n const result: Measure[] = []\n preorderTraverse<Measure, 'children'>(measures, (node) => {\n if (!('children' in node)) {\n result.push(node)\n }\n return false\n })\n return result\n}\n","import { clone } from 'remeda'\nimport { findAllMeasures, isDimension, preorderTraverse } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Datum, Dimensions, DimensionTree } from 'src/types'\n\nexport const defaultDimensions: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dimensions, dataset } = vseed\n\n if (dimensions && dimensions.length > 0) {\n const clonedDimensions = clone(dimensions)\n preorderTraverse(clonedDimensions, (node) => {\n if (isDimension(node)) {\n node.alias = node.alias || node.id\n }\n return false\n })\n return {\n ...advancedVSeed,\n dimensions: clonedDimensions,\n }\n }\n\n const measures = findAllMeasures(advancedVSeed.measures as DimensionTree)\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n const newDimensions = Object.keys(sample)\n .filter(\n (key) =>\n top100dataset.some((item) => typeof item[key] === 'string') &&\n !['', null, undefined].includes(key) &&\n !measures.some((measure) => measure.id === key),\n )\n .map((dim) => ({\n id: dim,\n alias: dim,\n })) as Dimensions\n\n return {\n ...result,\n dimensions: newDimensions,\n }\n}\n","import { isPlainObject, mapValues, pipe } from 'remeda'\n\n// 递归类型,将所有 null 替换为 undefined\ntype NullToUndefined<T> = T extends null\n ? undefined\n : T extends (infer U)[]\n ? NullToUndefined<U>[]\n : T extends object\n ? { [K in keyof T]: NullToUndefined<T[K]> }\n : T\n\nexport const replaceNullToUndefined = <T>(obj: T): NullToUndefined<T> => {\n if (obj === null) {\n return undefined as NullToUndefined<T>\n }\n if (Array.isArray(obj)) {\n // 递归处理数组元素\n return obj.map(replaceNullToUndefined) as NullToUndefined<T>\n }\n if (isPlainObject(obj)) {\n // 使用 remeda 的 mapValues 递归处理对象属性\n return pipe(\n obj as object,\n mapValues((value) => replaceNullToUndefined(value)),\n ) as NullToUndefined<T>\n }\n return obj as NullToUndefined<T>\n}\n","import { pick } from 'remeda'\nimport { replaceNullToUndefined } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed } from 'src/types'\n\nexport const cellStyle: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n\n const pickedCellStyle = pick(vseed, ['bodyCellStyle']) as AdvancedVSeed['cellStyle']\n\n const style = replaceNullToUndefined(pickedCellStyle)\n\n return { ...advancedVSeed, cellStyle: style }\n}\n","import type { AdvancedPipe } from 'src/types'\n\nexport const records: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { dataset } = vseed\n return {\n ...advancedVSeed,\n dataset,\n }\n}\n","import { pick } from 'remeda'\nimport type { AdvancedPipe, Config } from 'src/types'\n\nexport const tableConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const config = pick(vseed, [\n 'backgroundColor',\n 'bodyFontSize',\n 'bodyFontColor',\n 'bodyBackgroundColor',\n 'headerFontSize',\n 'headerFontColor',\n 'headerBackgroundColor',\n 'hoverHeaderBackgroundColor',\n 'hoverHeaderInlineBackgroundColor',\n 'selectedBorderColor',\n 'selectedBackgroundColor',\n ]) as Config['pivotTable']\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result\n}\n","import { clone, isNullish, isNumber, isObjectType, isString, merge, mergeDeep } from 'remeda'\nimport type { AdvancedPipe, AdvancedVSeed } from 'src/types'\n\nexport const theme: AdvancedPipe = (advancedVSeed, context) => {\n const { customTheme, vseed } = context\n const { theme = 'light', chartType } = vseed\n const result = {\n ...advancedVSeed,\n } as AdvancedVSeed\n\n if (!customTheme || !customTheme[theme]) {\n return result\n }\n\n const chartConfigTheme = customTheme?.[theme].config?.[chartType]\n if (chartConfigTheme) {\n const chartConfig = result.config?.[chartType] || {}\n const mergedConfig = mergeDeep(chartConfigTheme, clone(chartConfig))\n\n // 数组项不会被Merge, 需要将1个主题配置, 合并到数组的每一项\n for (const _k in mergedConfig) {\n const key = _k as keyof typeof mergedConfig\n // 配置的第一层, 如果是数组, 则数组的每一项目和主题配置合并\n if (Array.isArray(mergedConfig[key])) {\n mergedConfig[key] = mergeArray(mergedConfig[key], chartConfigTheme[key])\n }\n }\n\n result.config = {\n [chartType]: mergedConfig,\n }\n }\n\n const chartCustomTheme = customTheme?.[theme]?.config?.[chartType]\n\n result.customTheme = {\n config: {\n [chartType]: chartCustomTheme,\n },\n }\n\n return result\n}\n\nconst mergeArray = <Destination extends Array<object>, Source extends object | number | string | undefined | null>(\n arr: Destination,\n themeItem: Source,\n): Destination => {\n if (isNullish(themeItem) || isString(themeItem) || isNumber(themeItem)) {\n return arr\n }\n\n if (!Array.isArray(arr)) {\n return arr\n }\n\n if (arr.some((d) => !isObjectType(d))) {\n return arr\n }\n\n return arr.map((item) => {\n return merge(themeItem, item)\n }) as Destination\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport { initAdvancedVSeed, records, tableConfig, defaultMeasures, defaultDimensions, cellStyle } from '../pipes'\nimport { theme } from '../../chart/pipes'\n\nexport const tableAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n cellStyle,\n\n records,\n tableConfig,\n theme,\n]\n","import type { ListTableConstructorOptions } from '@visactor/vtable'\nimport type { SpecPipe } from 'src/types'\n\nexport const initTable: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { dataset } = advancedVSeed\n const { config } = advancedVSeed\n const { backgroundColor = 'transparent' } = config.table || {}\n\n return {\n ...spec,\n records: dataset,\n widthMode: 'standard',\n defaultHeaderColWidth: 'auto',\n heightMode: 'autoHeight',\n autoWrapText: true,\n columnResizeMode: 'all',\n showHeader: true,\n tooltip: {\n isShowOverflowTextTooltip: true,\n },\n animationAppear: {\n duration: 300,\n delay: 250,\n type: 'one-by-one',\n direction: 'row',\n },\n hover: {\n highlightMode: 'row',\n },\n theme: {\n cellInnerBorder: false,\n underlayBackgroundColor: backgroundColor,\n },\n } as ListTableConstructorOptions\n}\n","import type { ColumnsDefine, ListTableConstructorOptions } from '@visactor/vtable'\nimport { isMeasure } from 'src/pipeline/utils'\nimport type { Dimension, DimensionGroup, DimensionTree, SpecPipe } from 'src/types'\n\nexport const dimensionTreeToColumns: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const dimensions = (advancedVSeed as unknown as { dimensions: DimensionTree }).dimensions\n const result = { ...spec } as ListTableConstructorOptions\n const eachNode = (node: Dimension | DimensionGroup) => {\n if (isMeasure(node)) {\n return {\n width: 'auto',\n }\n }\n\n return {}\n }\n const columns = treeTreeToColumns<Dimension, DimensionGroup>(dimensions, eachNode)\n\n return {\n ...result,\n columns: [...(result.columns || []), ...columns] as ListTableConstructorOptions['columns'],\n }\n}\n\nconst treeTreeToColumns = <\n T extends { id: string; alias?: string },\n U extends { id: string; alias?: string; children?: (T | U)[] },\n>(\n tree: (T | U)[],\n callback?: (node: T | U) => object,\n): ColumnsDefine[] => {\n const result = tree.map((item) => {\n if ('children' in item && Array.isArray(item.children)) {\n const groupNode = item as unknown as U\n const field = groupNode.id\n const title = groupNode.alias ?? groupNode.id\n const props = callback?.(groupNode) || {}\n // group\n return {\n field,\n title,\n columns: treeTreeToColumns(item.children, callback),\n ...props,\n }\n } else {\n const field = item.id\n const title = item.alias ?? item.id\n const props = callback?.(item) || {}\n // leaf\n return {\n field,\n title,\n ...props,\n }\n }\n }) as unknown as ColumnsDefine[]\n\n return result || []\n}\n","import { isNumber } from 'remeda'\nimport { intl } from '../../../i18n'\nimport type { Formatter, Locale, NumFormat } from 'src/types'\n\nexport const createNumFormatter = (format?: Partial<NumFormat>, locale: Locale = intl.getLocale()): Formatter => {\n const {\n type = 'number',\n ratio = 1,\n thousandSeparator = true,\n prefix = '',\n suffix = '',\n symbol = '',\n fractionDigits = 2,\n significantDigits,\n roundingMode = 'halfExpand',\n roundingPriority = 'auto',\n } = format || {}\n\n const numFormatterOptions: Intl.NumberFormatOptions = {\n style: 'decimal',\n notation: type === 'scientific' ? 'scientific' : 'standard',\n // @ts-expect-error roundingMode is not in NumberFormatOptions\n roundingMode,\n roundingPriority,\n }\n\n if (isNumber(fractionDigits)) {\n if (fractionDigits >= 0) {\n numFormatterOptions.minimumFractionDigits = fractionDigits\n numFormatterOptions.maximumFractionDigits = fractionDigits\n }\n }\n if (isNumber(significantDigits) && significantDigits > 0) {\n if (significantDigits > 0) {\n numFormatterOptions.minimumSignificantDigits = significantDigits\n numFormatterOptions.maximumSignificantDigits = significantDigits\n }\n }\n\n const numFormatter = new Intl.NumberFormat(locale, { ...numFormatterOptions, useGrouping: thousandSeparator })\n\n return (value?: number | string) => {\n let num = Number(value)\n let typeSymbol = ''\n if (Number.isNaN(num)) {\n return String(value)\n }\n\n // apply ratio for percent/permille\n if (type === 'percent') {\n num *= 100\n typeSymbol = '%'\n } else if (type === 'permille') {\n num *= 1000\n typeSymbol = '‰'\n } else if (type === 'number') {\n num = num / (ratio || 1)\n }\n\n // format value\n let numStr = numFormatter.format(num)\n\n // add thousand separator\n if (thousandSeparator) {\n const parts = numStr.split('.')\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')\n numStr = parts.join('.')\n }\n\n const validSymbol = symbol ?? ''\n\n // add symbol, typeSymbol, prefix and suffix\n return `${prefix}${numStr}${typeSymbol}${validSymbol}${suffix}`\n }\n}\n\nexport const autoNumFormatter = (value?: number | string, locale: Locale = intl.getLocale()): string => {\n if (value === undefined || value === null) return String(value)\n const num = Number(value)\n if (Number.isNaN(num)) return String(value)\n\n const numFormatterOptions: Intl.NumberFormatOptions = {\n style: 'decimal',\n notation: 'compact',\n useGrouping: true,\n }\n numFormatterOptions.minimumFractionDigits = 0\n numFormatterOptions.maximumFractionDigits = 2\n\n const numFormatter = new Intl.NumberFormat(locale, { ...numFormatterOptions })\n\n return numFormatter.format(Number(value))\n}\n","import type { Formatter, Locale, NumFormat } from 'src/types'\nimport { autoNumFormatter, createNumFormatter } from './createNumFormatter'\nimport { intl } from 'src/i18n'\n\nexport const createFormatter = (format: Partial<NumFormat>, locale?: Locale): Formatter => {\n return createNumFormatter(format, locale)\n}\n\nexport const autoFormatter = (value?: number | string, locale: Locale = intl.getLocale()): string => {\n return autoNumFormatter(value, locale)\n}\n","import type { Formatter, Measure } from 'src/types'\nimport { autoFormatter, createFormatter } from './createFormatter'\nimport { isEmpty, isNullish } from 'remeda'\n\nexport const createFormatterByMeasure = (measure?: Measure): Formatter => {\n if (!measure) {\n return (v) => String(v)\n }\n const { numFormat, format, autoFormat } = measure\n\n const formatterFormat = numFormat || format || {}\n\n if (autoFormat === true) {\n return autoFormatter\n }\n\n if (isNullish(autoFormat) && isEmpty(formatterFormat)) {\n return autoFormatter\n }\n\n if (!isEmpty(formatterFormat)) {\n return createFormatter(formatterFormat)\n }\n\n return (v) => String(v)\n}\n","import type { ColumnsDefine, ListTableConstructorOptions } from '@visactor/vtable'\nimport { createFormatterByMeasure, isMeasure } from 'src/pipeline/utils'\nimport type { MeasureGroup, Measure, MeasureTree, SpecPipe, Datum } from 'src/types'\n\nexport const measureTreeToColumns: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const measures = (advancedVSeed as unknown as { measures: MeasureTree }).measures\n const result = { ...spec } as ListTableConstructorOptions\n\n const eachNode = (node: Measure | MeasureGroup) => {\n if (isMeasure(node)) {\n return {\n width: 'auto',\n fieldFormat: fieldFormat(node),\n }\n }\n\n return {}\n }\n const columns = treeTreeToColumns<Measure, MeasureGroup>(measures, eachNode)\n return {\n ...result,\n columns: [...(result.columns || []), ...columns] as ListTableConstructorOptions['columns'],\n }\n}\n\nconst fieldFormat = (node: Measure) => {\n const formatter = createFormatterByMeasure(node)\n\n return (datum: Datum) => {\n const { id } = node\n const value = datum[id] as number | string | undefined\n return formatter(value)\n }\n}\nconst treeTreeToColumns = <\n T extends { id: string; alias?: string },\n U extends { id: string; alias?: string; children?: (T | U)[] },\n>(\n tree: (T | U)[],\n callback?: (node: T | U) => object,\n): ColumnsDefine[] => {\n const result = tree.map((item) => {\n if ('children' in item && Array.isArray(item.children)) {\n const groupNode = item as unknown as U\n const field = groupNode.id\n const title = groupNode.alias ?? groupNode.id\n const props = callback?.(groupNode) || {}\n // group\n return {\n field,\n title,\n columns: treeTreeToColumns(item.children, callback),\n ...props,\n }\n } else {\n const field = item.id\n const title = item.alias ?? item.id\n const props = callback?.(item) || {}\n // leaf\n return {\n field,\n title,\n ...props,\n }\n }\n }) as unknown as ColumnsDefine[]\n\n return result || []\n}\n","import type { SpecPipe, TableConfig } from 'src/types'\nimport type { ThemeLike, WithTheme } from './type'\n\nexport const bodyStyle: SpecPipe = (spec, context) => {\n const result = { ...spec } as Partial<typeof spec> & WithTheme\n const { advancedVSeed } = context\n const { chartType, config } = advancedVSeed\n const themeConfig = config?.[chartType] as TableConfig\n\n if (!result.theme || !themeConfig) return result\n\n // basic\n const borderColor = themeConfig.borderColor || 'rgb(224, 224, 224)'\n const backgroundColor = themeConfig.bodyBackgroundColor || '#fff'\n const fontColor = themeConfig.bodyFontColor || '#1B1F23'\n const fontSize = themeConfig.bodyFontSize || 12\n // Interaction\n const hoverCellBgColor = themeConfig.hoverBodyBackgroundColor || '#bedaff'\n const hoverInlineColor = themeConfig.hoverBodyInlineBackgroundColor || '#bedaff'\n\n if (!result.theme) result.theme = {}\n ;(result.theme as ThemeLike).bodyStyle = {\n borderColor: borderColor,\n borderLineWidth: 1,\n padding: [8, 12, 8, 12],\n textAlign: 'right',\n hover: {\n cellBgColor: hoverCellBgColor,\n inlineRowBgColor: hoverInlineColor,\n inlineColumnBgColor: hoverInlineColor,\n },\n color: fontColor,\n fontSize: fontSize,\n fontStyle: 'normal',\n fontWeight: 'normal',\n fontVariant: 'normal',\n bgColor: backgroundColor,\n lineHeight: fontSize * 1.5,\n }\n\n return result\n}\n","import type { SpecPipe, TableConfig } from 'src/types'\nimport type { ThemeLike, WithTheme } from './type'\n\nexport const headerStyle: SpecPipe = (spec, context) => {\n const result = { ...spec } as Partial<typeof spec> & WithTheme\n const { advancedVSeed } = context\n const { config, chartType } = advancedVSeed\n const themConfig = config?.[chartType] as TableConfig\n\n if (!result.theme || !themConfig) return result\n\n // basic\n const borderColor = themConfig.borderColor || 'rgb(224, 224, 224)'\n const backgroundColor = themConfig.headerBackgroundColor || '#EEF1F5'\n const fontColor = themConfig.headerFontColor || '#1B1F23'\n const fontSize = themConfig.headerFontSize || 12\n // Interaction\n const hoverCellBgColor = themConfig.hoverHeaderBackgroundColor || '#bedaff'\n const hoverInlineColor = themConfig.hoverHeaderInlineBackgroundColor || '#bedaff'\n\n ;(result.theme as ThemeLike).headerStyle = {\n borderColor: borderColor,\n borderLineWidth: 1,\n padding: [8, 12, 8, 12],\n textAlign: 'center',\n hover: {\n cellBgColor: hoverCellBgColor,\n inlineRowBgColor: hoverInlineColor,\n inlineColumnBgColor: hoverInlineColor,\n },\n frameStyle: {\n borderColor: borderColor,\n borderLineWidth: [0, 0, 1, 0],\n },\n fontSize: fontSize,\n fontVariant: 'normal',\n fontStyle: 'normal',\n fontWeight: 'bold',\n color: fontColor,\n bgColor: backgroundColor,\n lineHeight: fontSize * 1.5,\n }\n\n return result\n}\n","import type { SpecPipe, TableConfig } from 'src/types'\nimport type { ThemeLike, WithTheme } from './type'\n\nexport const frameStyle: SpecPipe = (spec, context) => {\n const result = { ...spec } as Partial<typeof spec> & WithTheme\n const { advancedVSeed } = context\n const { config, chartType } = advancedVSeed\n const themConfig = config?.[chartType] as TableConfig\n\n if (!result.theme || !themConfig) return result\n\n const borderColor = themConfig.borderColor || 'rgb(224, 224, 224)'\n\n ;(result.theme as ThemeLike).frameStyle = {\n borderColor,\n borderLineWidth: 1,\n cornerRadius: 4,\n }\n\n return result\n}\n","import type { SpecPipe, TableConfig } from 'src/types'\nimport type { ThemeLike, WithTheme } from './type'\n\nexport const selectionStyle: SpecPipe = (spec, context) => {\n const result = { ...spec } as Partial<typeof spec> & WithTheme\n const { advancedVSeed } = context\n const { config, chartType } = advancedVSeed\n const themConfig = config?.[chartType] as TableConfig\n\n if (!result.theme || !themConfig) return result\n\n const borderColor = themConfig.selectedBorderColor || 'rgb(224, 224, 224)'\n const backgroundColor = themConfig.selectedBackgroundColor || 'rgb(224, 224, 224, 0.5)'\n\n ;(result.theme as ThemeLike).selectionStyle = {\n cellBorderColor: borderColor,\n cellBorderLineWidth: 2,\n cellBgColor: backgroundColor,\n }\n\n return result\n}\n","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\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 if (Object.values(datum).find((v) => v === selector)) {\n return true\n }\n }\n\n // 2. 指标选择器\n else if (isMeasureSelector(selector)) {\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 (String(datum[selector.field]) === String(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 (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 (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 (datum[selector.field] <= selectorValueArr[0]) {\n return true\n }\n break\n case 'between':\n if (\n Array.isArray(selector.value) &&\n datum[selector.field] >= selectorValueArr[0] &&\n datum[selector.field] <= selectorValueArr[1]\n ) {\n return true\n }\n break\n }\n }\n // 3. 维度选择器\n else if (isDimensionSelector(selector)) {\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 // 4. 部分数据对象选择器\n else if (isPartialDatumSelector(selector)) {\n if (Object.keys(selector).every((key) => datum[key] === selector[key])) {\n return true\n }\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","import type { BodyCellStyle } from 'src/types'\n\nconst tableStyleMap = {\n backgroundColor: 'bgColor',\n textColor: 'color',\n textFontSize: 'fontSize',\n borderColor: 'borderColor',\n borderLineWidth: 'borderLineWidth',\n}\n\nexport const pickBodyCellStyle = (bodyCellStyle: BodyCellStyle) => {\n return (Object.keys(tableStyleMap) as Array<keyof typeof tableStyleMap>).reduce<Record<string, any>>((acc, key) => {\n if (key in bodyCellStyle) {\n acc[tableStyleMap[key]] = bodyCellStyle[key]\n }\n\n return acc\n }, {})\n}\n","import type { ListTableConstructorOptions, ColumnDefine } from '@visactor/vtable'\nimport { array } from '@visactor/vutils'\nimport { isNullish, isNumber, isPlainObject, isString } from 'remeda'\nimport { selector } from 'src/dataSelector/selector'\nimport type { BodyCellStyle, SpecPipe } from 'src/types'\nimport type { MeasureSelector, Selectors } from 'src/types/dataSelector'\nimport { pickBodyCellStyle } from './common'\nimport { preorderTraverse } from 'src/pipeline/utils/tree/traverse'\n\nexport const tableBodyCell: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { cellStyle } = advancedVSeed\n const bodyCellStyle = cellStyle?.bodyCellStyle\n\n if (!bodyCellStyle) {\n return spec as ListTableConstructorOptions\n }\n const bodyCellStyleList = array(bodyCellStyle) as BodyCellStyle[]\n const columns = (spec as ListTableConstructorOptions).columns || []\n const setStyleOfColumn = (col: ColumnDefine) => {\n const field = col.field as string\n const matchedStyles = bodyCellStyleList.filter((style) => {\n if (isNullish(style.selector)) {\n return true\n }\n const selectors = array(style.selector) as Selectors\n\n return selectors.some((selector) => {\n return isPlainObject(selector)\n ? isNullish(selector.field) || (selector as MeasureSelector).field === field\n : isNumber(selector) || isString(selector)\n })\n })\n\n if (!matchedStyles.length) {\n return false\n }\n\n col.style = (datum: any) => {\n const originalDatum = {\n [field]: datum.dataValue,\n }\n\n const mergedStyle = matchedStyles.reduce<Record<string, any>>((result, style) => {\n if (selector(originalDatum, style.selector)) {\n return {\n ...result,\n ...pickBodyCellStyle(style),\n }\n }\n\n return result\n }, {})\n\n return mergedStyle\n }\n return false\n }\n\n preorderTraverse<ColumnDefine, 'columns'>(columns, setStyleOfColumn, 'columns')\n\n return spec as ListTableConstructorOptions\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n initTable,\n dimensionTreeToColumns,\n measureTreeToColumns,\n bodyStyle,\n headerStyle,\n frameStyle,\n selectionStyle,\n tableBodyCell,\n} from '../pipes'\n\nexport const tableSpecPipeline: SpecPipeline = [\n initTable,\n dimensionTreeToColumns,\n measureTreeToColumns,\n bodyStyle,\n headerStyle,\n frameStyle,\n selectionStyle,\n tableBodyCell,\n]\n","import { tableAdvancedPipeline, tableSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerTable = () => {\n Builder._advancedPipelineMap['table'] = tableAdvancedPipeline\n Builder._specPipelineMap['table'] = tableSpecPipeline\n}\n","// Reshape\nexport const ORIGINAL_DATA = '__OriginalData__'\nexport const Separator = '-'\n\n// Measures\nexport const FoldMeasureName = '__MeaName__'\nexport const FoldMeasureId = '__MeaId__'\nexport const FoldMeasureValue = '__MeaValue__'\nexport const MeasureId = FoldMeasureId\nexport const MeasureName = FoldMeasureName\n\n// Measures For DualAxis\nexport const FoldPrimaryMeasureValue = '__MeaPrimaryValue__'\nexport const FoldSecondaryMeasureValue = '__MeaSecondaryValue__'\n\n// Measures For Scatter\nexport const FoldXMeasureValue = '__MeaXValue__'\nexport const FoldYMeasureValue = '__MeaYValue__'\nexport const FoldXMeasureId = '__MeaXId__'\nexport const FoldYMeasureId = '__MeaYId__'\n// Encoding\nexport const XEncoding = '__Dim_X__'\nexport const YEncoding = '__Dim_Y__'\nexport const AngleEncoding = '__Dim_Angle__'\nexport const DetailEncoding = '__Dim_Detail__'\nexport const ColorEncoding = '__Dim_Color__'\nexport const ColorIdEncoding = '__Dim_ColorId__'\n\n// Measures For boxPlot\nexport const Q1MeasureValue = '__Q1__'\nexport const Q3MeasureValue = '__Q3__'\nexport const MinMeasureId = '__Min__'\nexport const MaxMeasureId = '__Max__'\nexport const OutliersMeasureId = '__Outliers__'\nexport const MedianMeasureId = '__Meadian__'\n\n// Measures For Histogram\nexport const BinStartMeasureId = '__BinStart__'\nexport const BinEndMeasureId = '__BinEnd__'\nexport const BinCountMeasureId = '__BinCount__'\nexport const BinPercentageMeasureId = '__BinPercentage__'\n","import { MeasureId, MeasureName } from 'src/dataReshape'\nimport { intl } from 'src/i18n'\nimport { findAllMeasures } from 'src/pipeline/utils/measures/find'\nimport type { AdvancedPipe, Dimension, DimensionTree } from 'src/types'\n\nexport const defaultMeasureId: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const measures = findAllMeasures(advancedVSeed.measures as DimensionTree)\n\n // 如果没有指标名称维度,则默认添加指标名称维度\n if (measures.length > 1 && !result.dimensions?.some((dim) => dim.id === MeasureName)) {\n result.dimensions?.push({\n id: MeasureId,\n alias: intl.i18n`指标名称`,\n encoding: 'row',\n } as Dimension)\n }\n\n return result\n}\n","import { unique } from 'remeda'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\n\nexport const encodingForPivotTable: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\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) => {\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.tooltip = uniqueDimIds\n encoding.row = []\n encoding.column = []\n\n uniqueDimIds.forEach((item, index) => {\n if (index % 2 === 0) {\n encoding.column!.push(item)\n } else {\n encoding.row!.push(item)\n }\n })\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.tooltip = uniqueDimIds\n encoding.row = []\n encoding.column = []\n\n dimensions.forEach((dim, index) => {\n const id = dim.id\n if (dim.encoding === 'row') {\n encoding.row!.push(id)\n } else if (dim.encoding === 'column') {\n encoding.column!.push(id)\n } else {\n if (index % 2 === 0) {\n encoding.column!.push(id)\n } else {\n encoding.row!.push(id)\n }\n }\n })\n}\n\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.tooltip = unique(measures.map((item) => item.id))\n encoding.detail = unique(\n measures.filter((item) => item.encoding === 'detail' || !item.encoding).map((item) => item.id),\n )\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.tooltip = measures.map((item) => item.id)\n encoding.detail = unique(\n measures.filter((item) => item.encoding === 'detail' || !item.encoding).map((item) => item.id),\n )\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Dataset, FoldInfo, Measures } from 'src/types'\nimport { ColorEncoding, ColorIdEncoding, ORIGINAL_DATA } from './constant'\nimport { omit } from 'remeda'\n\n/**\n * 折叠指定的指标\n * @description 合并指定的指标为1个, 无论多少个, 都能转换为1个, 取名为fold, 意为折叠后混合在一起.\n */\nexport const foldMeasures = (\n dataset: Dataset,\n measures: Measures,\n options: {\n measureId: string\n measureName: string\n measureValue: string\n colorMeasureId?: string\n allowEmptyFold?: boolean\n omitIds?: string[]\n },\n): {\n dataset: Dataset\n foldInfo: FoldInfo\n} => {\n const { measureId, measureName, measureValue, colorMeasureId, allowEmptyFold = true, omitIds = [] } = options || {}\n\n const foldInfo: FoldInfo = {\n measureId,\n measureName,\n measureValue,\n statistics: {\n max: -Infinity,\n min: Infinity,\n sum: 0,\n count: 0,\n colorMin: Infinity,\n colorMax: -Infinity,\n },\n foldMap: {},\n }\n\n if (!allowEmptyFold && measures.length === 0) {\n return {\n dataset,\n foldInfo,\n }\n }\n\n const result: Dataset = new Array(dataset.length * measures.length) as Dataset\n let index = 0\n const ids = measures.map((d) => d.id)\n for (let i = 0; i < dataset.length; i++) {\n for (let j = 0; j < measures.length; j++) {\n const datum: Record<string, any> = omit({ ...dataset[i] }, [...ids, ...omitIds])\n\n datum[ORIGINAL_DATA] = dataset[i]\n\n const measure = measures[j]\n const { id, alias } = measure\n\n datum[id] = dataset[i][id] as unknown\n datum[measureId] = id\n datum[measureName] = alias || id\n datum[measureValue] = dataset[i][id] as unknown\n\n if (colorMeasureId) {\n const value = (datum[ORIGINAL_DATA] as Record<string, string | number>)[colorMeasureId]\n datum[ColorEncoding] = value\n datum[ColorIdEncoding] = colorMeasureId\n\n const valueNumber = Number(value)\n foldInfo.statistics.colorMin = Math.min(foldInfo.statistics.colorMin, valueNumber)\n foldInfo.statistics.colorMax = Math.max(foldInfo.statistics.colorMax, valueNumber)\n }\n\n const valueNumber = Number(datum[id])\n foldInfo.statistics.min = Math.min(foldInfo.statistics.min, valueNumber)\n foldInfo.statistics.max = Math.max(foldInfo.statistics.max, valueNumber)\n foldInfo.statistics.sum += valueNumber\n foldInfo.statistics.count++\n\n foldInfo.foldMap[id] = alias\n result[index++] = datum\n }\n }\n\n return {\n dataset: result,\n foldInfo,\n }\n}\n","import { FoldMeasureId, FoldMeasureName, foldMeasures, FoldMeasureValue } from 'src/dataReshape'\nimport {} from 'src/pipeline/spec/chart/pipes'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, DatasetReshapeInfo, PivotTable } from 'src/types'\n\nexport const reshapePivotTable: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset, chartType } = vseed as PivotTable\n const { dimensions, measures } = advancedVSeed\n const { dataset: newDatasets, foldInfo } = foldMeasures(dataset, findAllMeasures(measures), {\n measureId: FoldMeasureId,\n measureName: FoldMeasureName,\n measureValue: FoldMeasureValue,\n allowEmptyFold: false,\n })\n\n const datasetReshapeInfo = [\n {\n id: String(chartType),\n index: 0,\n foldInfo,\n },\n ] as unknown as DatasetReshapeInfo\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: datasetReshapeInfo,\n dimensions,\n measures,\n }\n}\n","import { pick } from 'remeda'\nimport type { AdvancedPipe, Config } from 'src/types'\n\nexport const pivotTableConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const config = pick(vseed, [\n 'backgroundColor',\n 'bodyFontSize',\n 'bodyFontColor',\n 'bodyBackgroundColor',\n 'headerFontSize',\n 'headerFontColor',\n 'headerBackgroundColor',\n 'hoverHeaderBackgroundColor',\n 'hoverHeaderInlineBackgroundColor',\n 'selectedBorderColor',\n 'selectedBackgroundColor',\n ]) as Config['table']\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport { theme } from '../../chart/pipes'\nimport {\n cellStyle,\n defaultDimensions,\n defaultMeasureId,\n defaultMeasures,\n encodingForPivotTable,\n initAdvancedVSeed,\n pivotTableConfig,\n reshapePivotTable,\n} from '../pipes'\n\nexport const pivotTableAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n cellStyle,\n\n encodingForPivotTable,\n reshapePivotTable,\n pivotTableConfig,\n theme,\n]\n","import type { PivotTableConstructorOptions } from '@visactor/vtable'\nimport type { SpecPipe } from 'src/types'\n\nexport const initPivotTable: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { dataset } = advancedVSeed\n const { config } = advancedVSeed\n const { backgroundColor = 'transparent' } = config.pivotTable || {}\n return {\n ...spec,\n records: dataset,\n widthMode: 'standard',\n defaultHeaderColWidth: 'auto',\n heightMode: 'autoHeight',\n autoWrapText: true,\n columnResizeMode: 'all',\n columnResizeType: 'column',\n showColumnHeader: true,\n showRowHeader: true,\n select: {\n highlightMode: 'cell',\n headerSelectMode: 'inline',\n },\n hover: {\n highlightMode: 'cross',\n },\n tooltip: {\n isShowOverflowTextTooltip: true,\n },\n corner: {\n titleOnDimension: 'all',\n },\n widthAdaptiveMode: 'all',\n animationAppear: {\n duration: 300,\n delay: 250,\n type: 'one-by-one',\n direction: 'row',\n },\n theme: {\n cellInnerBorder: false,\n underlayBackgroundColor: backgroundColor,\n },\n } as PivotTableConstructorOptions\n}\n","import type { PivotTableConstructorOptions } from '@visactor/vtable'\nimport type { Dimensions, SpecPipe } from 'src/types'\n\nexport const pivotColumns: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n const dimensions = advancedVSeed.dimensions as Dimensions\n const columns = dimensions.filter((item) => encoding.column?.includes(item.id))\n\n return {\n ...spec,\n columns: columns.map((item) => {\n return {\n dimensionKey: item.id,\n title: item.alias || item.id,\n width: 'auto',\n }\n }),\n } as PivotTableConstructorOptions\n}\n","import { MeasureId } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils/measures/find'\nimport type { Dimensions, SpecPipe } from 'src/types'\n\nexport const pivotRows: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const dimensions = advancedVSeed.dimensions as Dimensions\n const { encoding, measures } = advancedVSeed\n const rows = dimensions.filter((item) => encoding.row?.includes(item.id))\n const allMeasures = findAllMeasures(measures)\n\n return {\n ...spec,\n rows: rows.map((item) => {\n const res = {\n dimensionKey: item.id,\n title: item.alias || item.id,\n width: 'auto',\n }\n\n if (item.id === MeasureId) {\n ;(res as any).headerFormat = (measureId: string) => {\n const measure = allMeasures.find((m) => m.id === measureId)\n\n return measure?.alias ?? measureId\n }\n }\n\n return res\n }),\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\nimport type { SpecPipe } from 'src/types'\n\nexport const titleOnDimension: SpecPipe = (spec) => {\n const { rows = [], columns = [] } = spec as any\n\n return {\n ...spec,\n corner: {\n titleOnDimension: (rows as any[]).length <= 1 && (columns as any[]).length >= 1 ? 'column' : 'row',\n },\n }\n}\n","import type { PivotChartConstructorOptions, BaseTableAPI } from '@visactor/vtable'\nimport { isNumber } from 'remeda'\nimport { intl } from 'src/i18n'\nimport { createFormatterByMeasure, findMeasureById } from 'src/pipeline/utils'\nimport type { Datum, FoldInfo, MeasureTree, SpecPipe } from 'src/types'\n\nexport const pivotIndicators: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { measures, datasetReshapeInfo } = advancedVSeed\n const { foldInfo } = datasetReshapeInfo[0]\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n const hasRow = ((spec as any)?.rows as any[])?.length > 0\n const foldMapValues = Object.values(foldInfo.foldMap)\n\n return {\n ...spec,\n indicatorTitle: intl.i18n`指标名称`,\n indicatorsAsCol: hasRow,\n hideIndicatorName: hasRow,\n indicators: [\n {\n cellType: 'text',\n indicatorKey: foldInfo.measureValue,\n title: foldMapValues.length > 1 ? '' : foldMapValues[0],\n width: 'auto',\n format: fieldFormat(measures, foldInfo as FoldInfo),\n },\n ] as unknown as PivotChartConstructorOptions['indicators'],\n }\n}\n\nconst fieldFormat = (measures: MeasureTree, foldInfo: FoldInfo) => {\n return (value: number | string, col?: number, row?: number, table?: BaseTableAPI) => {\n if (!isNumber(col) || !isNumber(row) || !table) {\n return value\n }\n\n const datum = table.getCellOriginRecord(col, row) as Datum[]\n if (!datum[0]) {\n return value\n }\n const { measureId: foldMeasureId } = foldInfo\n const measureId = datum[0][foldMeasureId] as string\n const measure = findMeasureById(measures, measureId)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n }\n}\n","import type { SpecPipe, TableConfig } from 'src/types'\nimport type { ThemeLike, WithTheme } from './type'\n\nexport const rowHeaderStyle: SpecPipe = (spec, context) => {\n const result = { ...spec } as Partial<typeof spec> & WithTheme\n const { advancedVSeed } = context\n const { config, chartType } = advancedVSeed\n const themConfig = config?.[chartType] as TableConfig\n\n if (!result.theme || !themConfig) return result\n\n // basic\n const borderColor = themConfig.borderColor || 'rgb(224, 224, 224)'\n const backgroundColor = themConfig.headerBackgroundColor || '#EEF1F5'\n const fontColor = themConfig.headerFontColor || '#1B1F23'\n const fontSize = themConfig.headerFontSize || 12\n // Interaction\n const hoverCellBgColor = themConfig.hoverHeaderBackgroundColor || '#bedaff'\n const hoverInlineColor = themConfig.hoverHeaderInlineBackgroundColor || '#bedaff'\n\n ;(result.theme as ThemeLike).rowHeaderStyle = {\n borderColor: borderColor,\n borderLineWidth: 1,\n padding: [8, 12, 8, 12],\n textAlign: 'left',\n hover: {\n cellBgColor: hoverCellBgColor,\n inlineRowBgColor: hoverInlineColor,\n inlineColumnBgColor: hoverInlineColor,\n },\n frameStyle: {\n borderColor: borderColor,\n borderLineWidth: [0, 1, 0, 0],\n },\n fontSize: fontSize,\n fontVariant: 'normal',\n fontStyle: 'normal',\n fontWeight: 'bold',\n color: fontColor,\n bgColor: backgroundColor,\n lineHeight: fontSize * 1.5,\n }\n\n return result\n}\n","import type { SpecPipe, TableConfig } from 'src/types'\nimport type { ThemeLike, WithTheme } from './type'\n\nexport const cornerHeaderStyle: SpecPipe = (spec, context) => {\n const result = { ...spec } as Partial<typeof spec> & WithTheme\n const { advancedVSeed } = context\n const { config, chartType } = advancedVSeed\n const themConfig = config?.[chartType] as TableConfig\n\n if (!result.theme || !themConfig) return result\n\n // basic\n const borderColor = themConfig.borderColor || 'rgb(224, 224, 224)'\n const backgroundColor = themConfig.headerBackgroundColor || '#EEF1F5'\n const fontColor = themConfig.headerFontColor || '#1B1F23'\n const fontSize = themConfig.headerFontSize || 12\n // Interaction\n const hoverInlineColor = themConfig.hoverHeaderInlineBackgroundColor\n const hoverCellColor = themConfig.hoverHeaderBackgroundColor\n\n ;(result.theme as ThemeLike).cornerHeaderStyle = {\n borderColor: [borderColor, borderColor],\n borderLineWidth: 1,\n padding: [8, 12, 8, 12],\n textAlign: 'left',\n hover: {\n cellBgColor: hoverCellColor || undefined,\n inlineRowBgColor: hoverInlineColor || undefined,\n inlineColumnBgColor: hoverInlineColor || undefined,\n },\n frameStyle: {\n borderColor: borderColor,\n borderLineWidth: [0, 1, 1, 0],\n },\n fontSize: fontSize,\n fontVariant: 'normal',\n fontStyle: 'normal',\n fontWeight: 'bold',\n color: fontColor,\n bgColor: backgroundColor,\n lineHeight: fontSize * 1.5,\n }\n\n return result\n}\n","import type { IIndicator, PivotTableConstructorOptions } from '@visactor/vtable'\nimport { array } from '@visactor/vutils'\nimport { isNullish, isString } from 'remeda'\nimport { selector } from 'src/dataSelector/selector'\nimport type { BodyCellStyle, Datum, SpecPipe } from 'src/types'\nimport { pickBodyCellStyle } from './common'\nimport { FoldMeasureValue, MeasureId } from 'src/dataReshape'\n\nexport const pivotTableBodyCell: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { cellStyle } = advancedVSeed\n const bodyCellStyle = cellStyle?.bodyCellStyle\n\n if (!bodyCellStyle) {\n return spec as PivotTableConstructorOptions\n }\n const bodyCellStyleList = array(bodyCellStyle) as BodyCellStyle[]\n const indicators = (spec as PivotTableConstructorOptions).indicators || []\n\n const newIndicators = indicators.map((ind) => {\n const newInd = isString(ind)\n ? ({\n indicatorKey: ind,\n } as IIndicator)\n : ind\n\n const { indicatorKey } = newInd\n\n newInd.style = (datum: any) => {\n const { dataValue, cellHeaderPaths } = datum\n const headerPaths = [...cellHeaderPaths.colHeaderPaths, ...cellHeaderPaths.rowHeaderPaths]\n\n const originalDatum: Datum = {\n [indicatorKey]: dataValue,\n }\n\n headerPaths.forEach((path: any) => {\n if (path.dimensionKey) {\n originalDatum[path.dimensionKey] = path.value\n }\n })\n\n if (!isNullish(originalDatum[MeasureId]) && !isNullish(originalDatum[FoldMeasureValue])) {\n originalDatum[originalDatum[MeasureId]] = originalDatum[FoldMeasureValue]\n }\n\n const mergedStyle = bodyCellStyleList.reduce<Record<string, any>>((result, style) => {\n if (selector(originalDatum, style.selector)) {\n return {\n ...result,\n ...pickBodyCellStyle(style),\n }\n }\n\n return result\n }, {})\n\n return mergedStyle\n }\n return newInd\n })\n return {\n ...spec,\n indicators: newIndicators,\n } as PivotTableConstructorOptions\n}\n","import { findAllMeasures } from 'src/pipeline/utils'\nimport type { SpecPipe } from 'src/types'\n\nexport const dataConfig: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const measures = findAllMeasures(advancedVSeed.measures)\n\n const aggregationRules = measures.map((measure) => ({\n field: measure.id,\n aggregationType: 'NONE',\n indicatorKey: measure.id,\n }))\n\n return {\n ...spec,\n dataConfig: {\n aggregationRules,\n },\n }\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n initPivotTable,\n pivotColumns,\n pivotRows,\n pivotIndicators,\n bodyStyle,\n headerStyle,\n rowHeaderStyle,\n cornerHeaderStyle,\n frameStyle,\n selectionStyle,\n titleOnDimension,\n pivotTableBodyCell,\n} from '../pipes'\nimport { dataConfig } from '../pipes/indicators/pivotDataConfig'\n\nexport const pivotTableSpecPipeline: SpecPipeline = [\n initPivotTable,\n pivotColumns,\n pivotRows,\n titleOnDimension,\n pivotIndicators,\n bodyStyle,\n headerStyle,\n rowHeaderStyle,\n cornerHeaderStyle,\n frameStyle,\n selectionStyle,\n dataConfig,\n pivotTableBodyCell,\n]\n","import { pivotTableAdvancedPipeline, pivotTableSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerPivotTable = () => {\n Builder._advancedPipelineMap['pivotTable'] = pivotTableAdvancedPipeline\n Builder._specPipelineMap['pivotTable'] = pivotTableSpecPipeline\n}\n","import { checkVSeed } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed } from 'src/types'\n\nexport const initAdvancedVSeed: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType, locale } = vseed\n\n checkVSeed(vseed)\n\n return {\n ...advancedVSeed,\n chartType,\n locale: locale || 'zh-CN',\n } as AdvancedVSeed\n}\n","import { clone } from 'remeda'\nimport type { AdvancedPipe, Datum } from 'src/types'\nimport { isMeasure, preorderTraverse } from 'src/pipeline/utils'\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 preorderTraverse(clonedMeasures, (node) => {\n if (isMeasure(node)) {\n node.alias = node.alias || node.id\n }\n return false\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","import { clone } from 'remeda'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Datum, Dimensions, DimensionTree } from 'src/types'\n\nexport const defaultDimensions: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dimensions, dataset } = vseed\n\n if (dimensions && dimensions.length > 0) {\n return {\n ...result,\n dimensions: clone(dimensions.map((dim) => ({ ...dim, alias: dim.alias || dim.id }))),\n }\n }\n\n const measures = findAllMeasures(advancedVSeed.measures as DimensionTree)\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n const newDimensions = Object.keys(sample)\n .filter(\n (key) =>\n top100dataset.some((item) => typeof item[key] === 'string') &&\n !['', null, undefined].includes(key) &&\n !measures.some((measure) => measure.id === key),\n )\n .map((dim) => ({\n id: dim,\n alias: dim,\n })) as Dimensions\n\n return {\n ...result,\n dimensions: newDimensions,\n }\n}\n","import { MeasureId } from 'src/dataReshape'\nimport { intl } from 'src/i18n'\nimport type { AdvancedPipe, Dimension } from 'src/types'\n\nexport const defaultMeasureId: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n\n const MeaIdDim: Dimension = {\n id: MeasureId,\n alias: intl.i18n`指标Id`,\n }\n\n // 如果没有指标Id维度,则默认添加指标Id维度\n if (!result.dimensions?.some((dim) => dim.id === MeasureId)) {\n result.dimensions?.push(MeaIdDim)\n }\n\n return result\n}\n","import type {\n AdvancedPipe,\n AdvancedPipeline,\n AdvancedPipelineContext,\n AdvancedVSeed,\n Dimension,\n Measure,\n} from 'src/types'\nimport { execPipeline } from 'src/pipeline/utils'\n\nexport const encodingAdapter = (\n noEncodingPipeline: AdvancedPipeline,\n hasEncodingPipeline: AdvancedPipeline,\n): AdvancedPipe => {\n return (advancedVSeed, context) => {\n const { dimensions = [], measures = [] } = advancedVSeed\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n\n const hasEncoding = hasDimensionEncoding || hasMeasureEncoding\n\n if (hasEncoding) {\n return execPipeline<AdvancedVSeed, AdvancedPipelineContext>(hasEncodingPipeline, context, advancedVSeed)\n }\n return execPipeline<AdvancedVSeed, AdvancedPipelineContext>(noEncodingPipeline, context, advancedVSeed)\n }\n}\n","import { unique } from 'remeda'\nimport { MeasureId } from 'src/dataReshape'\nimport type { Dimensions, Encoding } from 'src/types'\n\n/**\n * @description 为 encoding 添加 color 编码, 多指标场景, 会将 MeasureId 也添加到 color 编码中.\n * @param dimensions\n * @param encoding\n * @param isMultiMeasure\n */\nexport const addColorToEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\n encoding.color = unique(dimensions.filter((item) => item.encoding === 'color').map((item) => item.id))\n const measureId = dimensions.find((item) => item.id === MeasureId)\n if (isMultiMeasure && measureId && !measureId.encoding) {\n encoding.color.push(MeasureId)\n }\n if (encoding.color.length === 0) {\n encoding.color = [MeasureId]\n }\n}\n","import { unique } from 'remeda'\nimport { MeasureId } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\nimport { addColorToEncoding } from './color'\n\nexport const defaultEncodingForLine: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding)\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForLine: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding, measures.length > 1)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\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) => {\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.x = uniqueDimIds.slice(0, 1)\n encoding.color = uniqueDimIds.slice(1)\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureId) // 展示指标Id之外的所有维度\n encoding.detail = [] // 折线图暂不支持细分\n encoding.label = []\n encoding.row = []\n encoding.column = []\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\n // x\n encoding.x = unique(dimensions.filter((item) => item.encoding === 'xAxis').map((item) => item.id))\n if (encoding.x.length === 0) {\n encoding.x = [dimensions[0].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 = [MeasureId]\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.y = unique(measures.filter((item) => item.encoding === 'yAxis' || !item.encoding).map((item) => item.id))\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n // y\n encoding.y = unique(measures.filter((item) => item.encoding === 'yAxis' || !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])\n}\n","import type { AdvancedPipe, MeasureGroup, Measures, MeasureTree, VSeed } from 'src/types'\nimport { isMeasureTreeWithChildren, isMeasureTreeWithParentId, normalizeMeasureTree } from './utils'\nimport { isPivotChart } from 'src/pipeline/utils'\nimport { DEFAULT_PARENT_ID } from 'src/pipeline/utils/constant'\n\nexport const buildMeasures: AdvancedPipe = (advancedVSeed) => {\n // 带Children的指标树, 不进行任何处理\n if (isMeasureTreeWithChildren(advancedVSeed.measures)) {\n advancedVSeed.measures = normalizeMeasureTree(advancedVSeed.measures as MeasureTree)\n return advancedVSeed\n }\n // 带parentId的指标树, 转换为带children的指标树\n if (isMeasureTreeWithParentId(advancedVSeed.measures)) {\n advancedVSeed.measures = generateMeasuresByParentId(advancedVSeed.measures as Measures)\n return advancedVSeed\n }\n\n /**\n * 透视图表, 自动生成指标树\n */\n if (isPivotChart(advancedVSeed as VSeed)) {\n advancedVSeed.measures = basicMeasuresToMeasureTree(advancedVSeed.measures as Measures)\n }\n\n return advancedVSeed\n}\n\nconst generateMeasuresByParentId = (measures: Measures): MeasureTree => {\n const measureTree: MeasureGroup[] = []\n\n measures.forEach((measure) => {\n const parent = measureTree.find((item) => item.id === measure.parentId)\n if (parent && 'children' in parent) {\n parent.children = parent.children || []\n parent.children.push(measure)\n } else if (measure.parentId) {\n measureTree.push({\n id: measure.parentId,\n children: [measure],\n })\n } else {\n measureTree.push({\n id: DEFAULT_PARENT_ID,\n children: [measure],\n })\n }\n })\n\n return measureTree\n}\n\nconst basicMeasuresToMeasureTree = (measures: Measures): MeasureTree => {\n const id = measures.map((item) => item.id).join('-')\n const alias = measures.map((item) => item.alias || item.id).join('-')\n return [\n {\n id,\n alias,\n children: measures,\n },\n ]\n}\n","import type { Measure, MeasureGroup, MeasureTree } from 'src/types'\nimport { isMeasure, isMeasureGroup } from './typeGuard'\n\n/**\n * @description 删除 measureTree 中符合 callback 条件的节点\n * @param measureTree 待删除的 measureTree\n * @param callback 回调函数,用于判断是否删除当前节点\n * @returns 删除后的 measureTree\n */\nexport const deleteMeasureTreeByCallback = <T extends MeasureTree>(\n measureTree?: T,\n callback?: (measure: Measure, index: number, measures: (Measure | MeasureGroup)[]) => boolean,\n) => {\n if (!measureTree) {\n return measureTree\n }\n const stack: (Measure | MeasureGroup)[] = [...measureTree].reverse()\n const parents = new Map<Measure | MeasureGroup, (Measure | MeasureGroup)[]>()\n\n measureTree.forEach((node) => {\n parents.set(node, measureTree)\n })\n\n const nodesToProcess: (Measure | MeasureGroup)[] = []\n const visited = new Set<Measure | MeasureGroup>()\n\n while (stack.length > 0) {\n const node = stack[stack.length - 1]\n\n if (isMeasureGroup(node) && node.children && !visited.has(node)) {\n visited.add(node)\n const children = node.children.slice().reverse()\n for (const child of children) {\n parents.set(child, node.children)\n stack.push(child)\n }\n } else {\n stack.pop()\n nodesToProcess.push(node)\n }\n }\n\n for (const node of nodesToProcess) {\n const parentList = parents.get(node)\n\n if (parentList) {\n const index = parentList.indexOf(node)\n if (isMeasure(node)) {\n if (callback?.(node, index, parentList)) {\n parentList.splice(index, 1)\n }\n }\n }\n }\n\n return measureTree\n}\n","import { deleteMeasureTreeByCallback } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Measure } from 'src/types'\n\nexport const deleteEncodingForMeasure = (encodingKeys: string[]): AdvancedPipe => {\n return (advancedVSeed) => {\n const deleteBy = (measure: Measure) => encodingKeys.includes(measure.encoding as string)\n\n const measureTree = deleteMeasureTreeByCallback(advancedVSeed.measures, deleteBy)\n\n return {\n ...advancedVSeed,\n measures: measureTree,\n }\n }\n}\n","import type { Dimension, DimensionGroup, DimensionTree } from 'src/types'\nimport { isDimension, isDimensionGroup } from './typeGuard'\n\n/**\n * @description 删除 dimensionTree 中符合 callback 条件的节点\n * @param dimensionTree 待删除的 dimensionTree\n * @param callback 回调函数,用于判断是否删除当前节点\n * @returns 删除后的 dimensionTree\n */\nexport const deleteDimensionTreeByCallback = <T extends DimensionTree>(\n dimensionTree?: T,\n callback?: (dimension: Dimension, index: number, dimensions: (Dimension | DimensionGroup)[]) => boolean,\n) => {\n if (!dimensionTree) {\n return dimensionTree\n }\n const stack: (Dimension | DimensionGroup)[] = [...dimensionTree].reverse()\n const parents = new Map<Dimension | DimensionGroup, (Dimension | DimensionGroup)[]>()\n\n dimensionTree.forEach((node) => {\n parents.set(node, dimensionTree)\n })\n\n const nodesToProcess: (Dimension | DimensionGroup)[] = []\n const visited = new Set<Dimension | DimensionGroup>()\n\n while (stack.length > 0) {\n const node = stack[stack.length - 1]\n\n if (isDimensionGroup(node) && node.children && !visited.has(node)) {\n visited.add(node)\n const children = node.children.slice().reverse()\n for (const child of children) {\n parents.set(child, node.children)\n stack.push(child)\n }\n } else {\n stack.pop()\n nodesToProcess.push(node)\n }\n }\n\n for (const node of nodesToProcess) {\n const parentList = parents.get(node)\n\n if (parentList) {\n const index = parentList.indexOf(node)\n if (isDimension(node)) {\n if (callback?.(node, index, parentList)) {\n parentList.splice(index, 1)\n }\n }\n }\n }\n\n return dimensionTree\n}\n","import { deleteDimensionTreeByCallback } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension } from 'src/types'\n\nexport const deleteTooltipAndLabelDimension: AdvancedPipe = (advancedVSeed) => {\n const deleteBy = (dimension: Dimension) => dimension.encoding === 'tooltip' || dimension.encoding === 'label'\n\n const dimensionTree = deleteDimensionTreeByCallback(advancedVSeed.dimensions, deleteBy)\n\n return {\n ...advancedVSeed,\n dimensions: dimensionTree,\n }\n}\n","import type { AdvancedPipe, AdvancedPipeline, AdvancedPipelineContext, AdvancedVSeed } from 'src/types'\nimport { execPipeline, isPivotChart } from 'src/pipeline/utils'\n\nexport const pivotAdapter = (pipeline: AdvancedPipeline, pivotPipeline: AdvancedPipeline): AdvancedPipe => {\n return (advancedVSeed, context) => {\n const { vseed } = context\n const usePivotChart = isPivotChart(vseed)\n\n if (usePivotChart) {\n return execPipeline<AdvancedVSeed, AdvancedPipelineContext>(pivotPipeline, context, advancedVSeed)\n }\n\n return execPipeline<AdvancedVSeed, AdvancedPipelineContext>(pipeline, context, advancedVSeed)\n }\n}\n","import type { Dataset, Datum, Dimension, Encoding, UnfoldInfo } from 'src/types'\nimport {\n AngleEncoding,\n XEncoding,\n YEncoding,\n ColorEncoding,\n DetailEncoding,\n ColorIdEncoding,\n MeasureId,\n MeasureName,\n} from './constant'\n\n/**\n * @description 展开并合并视觉通道的维度, 在foldMeasures后合并维度, 所以不需要进行笛卡尔积\n * @param dataset 原始数据集\n * @param dimensions 维度\n * @param encoding 编码\n * @param options\n * @returns\n */\nexport const unfoldDimensions = (\n dataset: Dataset,\n dimensions: Dimension[],\n encoding: Encoding,\n options: {\n foldMeasureId: string\n separator: string\n colorItemAsId: boolean\n },\n): {\n dataset: Dataset\n unfoldInfo: UnfoldInfo\n} => {\n const { separator } = options\n\n const unfoldInfo: UnfoldInfo = {\n encodingAngle: AngleEncoding,\n encodingX: XEncoding,\n encodingY: YEncoding,\n encodingDetail: DetailEncoding,\n encodingColor: ColorEncoding,\n encodingColorId: ColorIdEncoding,\n\n colorItems: [],\n colorIdMap: {},\n }\n\n // 每个通道对应的维度\n const { color, x, y, detail, angle } = encoding\n const angleDimensions = angle ? dimensions.filter((dim) => angle.includes(dim.id)) : []\n const xDimensions = x ? dimensions.filter((dim) => x.includes(dim.id)) : []\n const yDimensions = y ? dimensions.filter((dim) => y.includes(dim.id)) : []\n const colorDimensions = color ? dimensions.filter((dim) => color.includes(dim.id)) : []\n const detailDimensions = detail ? dimensions.filter((dim) => detail.includes(dim.id)) : []\n\n // 离散图例项\n const colorItems = new Set<string>()\n const colorIdMap: Record<string, { id: string; alias: string }> = {}\n\n // 遍历数据集, 按通道合并维度\n for (let i = 0; i < dataset.length; i++) {\n // 应用编码至Datum上\n const datum = dataset[i]\n\n /**\n * !important 这是全仓库, 最最最重要的五行代码, 贯穿VSeed整个生命周期, 是化繁为简的绝对核心\n * 1. 点睛之笔: 呼应foldMeasures, 此时此刻的datum一定是单点数据, 维度合并不可能造成任何冲突.\n * 2. 数据即通道\n * 3. 利用需要合并的维度, 直接进行join, 即可生成新的维度, 与指标彻底解耦;\n * 4. 以下通道均在一次遍历中完成, 不存在性能问题\n * 5. 以下通道均可放入多个维度\n */\n applyEncoding(AngleEncoding, angleDimensions, datum, separator)\n applyEncoding(XEncoding, xDimensions, datum, separator)\n applyEncoding(YEncoding, yDimensions, datum, separator)\n applyEncoding(ColorEncoding, colorDimensions, datum, separator)\n applyEncoding(DetailEncoding, detailDimensions, datum, separator)\n\n // 处理离散的颜色图例\n if (!colorDimensions.length || !datum[ColorEncoding]) {\n // 无颜色通道, 则跳过\n continue\n }\n const colorId = String(datum[ColorEncoding] ?? '')\n\n datum[ColorIdEncoding] = colorId\n\n colorIdMap[colorId] = {\n id: colorId,\n alias: getColorAliasItem(ColorEncoding, colorDimensions, datum, separator),\n }\n colorItems.add(colorId)\n }\n\n unfoldInfo.colorItems = Array.from(colorItems)\n unfoldInfo.colorIdMap = colorIdMap\n\n return {\n dataset,\n unfoldInfo,\n }\n}\n\n/**\n * @description 应用编码至数据中, 此方法会原地修改数据\n * @param encoding 编码\n * @param dimensions 维度\n * @param datum 数据\n * @param separator 分隔符\n * @returns undefined\n */\nconst applyEncoding = (encoding: string, dimensions: Dimension[], datum: Datum, separator: string) => {\n if (encoding && dimensions.length) {\n datum[encoding] = dimensions.map((dim) => String(datum[dim.id])).join(separator)\n }\n}\n\nconst getColorAliasItem = (encoding: string, dimensions: Dimension[], datum: Datum, separator: string) => {\n if (encoding && dimensions.length) {\n return dimensions\n .map((dim) => {\n if (dim.id === MeasureId) {\n return String(datum[MeasureName])\n }\n\n return String(datum[dim.id])\n })\n .join(separator)\n }\n return ''\n}\n","import type { Dataset, Dimension, Encoding, FoldInfo, Measure, Measures, UnfoldInfo } from 'src/types'\nimport { foldMeasures } from './foldMeasures'\nimport { FoldMeasureId, FoldMeasureName, FoldMeasureValue, Separator } from './constant'\nimport { unfoldDimensions } from './unfoldDimensions'\n\nexport const dataReshapeByEncoding = (\n dataset: Dataset,\n dimensions: Dimension[],\n measures: Measure[],\n encoding: Encoding,\n options?: {\n foldMeasureId?: string\n foldMeasureName?: string\n foldMeasureValue?: string\n colorItemAsId?: boolean\n colorMeasureId?: string\n omitIds?: string[]\n },\n): {\n dataset: Dataset\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n} => {\n const {\n foldMeasureId = FoldMeasureId,\n foldMeasureName = FoldMeasureName,\n foldMeasureValue = FoldMeasureValue,\n colorItemAsId = false,\n colorMeasureId,\n omitIds,\n } = options || {}\n\n // 合并所有指标为1个指标\n const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures as Measures, {\n measureId: foldMeasureId,\n measureName: foldMeasureName,\n measureValue: foldMeasureValue,\n colorMeasureId,\n omitIds,\n })\n\n // 展开指定的维度为指标\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dimensions, encoding, {\n foldMeasureId,\n separator: Separator,\n colorItemAsId,\n })\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n}\n","import { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedVSeed, SpecPipe, VSeed } from 'src/types'\n\nexport const colorAdapter = (ordinalPipe: SpecPipe, linearPipe: SpecPipe): SpecPipe => {\n return (spec, context) => {\n const { advancedVSeed, vseed } = context\n if (isLinearColor(advancedVSeed, vseed)) {\n return linearPipe(spec, context)\n }\n return ordinalPipe(spec, context)\n }\n}\n\nexport const isLinearColor = <T extends AdvancedVSeed, U extends VSeed>(advancedVSeed: T, vseed: U) => {\n const { encoding } = advancedVSeed\n const measures = vseed.measures || advancedVSeed.measures\n const measureIdList = findAllMeasures(measures).map((measure) => measure.id)\n const { color } = encoding\n return color?.length === 1 && measureIdList.includes(color[0])\n}\n\nexport const getColorMeasureId = <T extends AdvancedVSeed, U extends VSeed>(\n advancedVSeed: T,\n vseed: U,\n): string | undefined => {\n if (isLinearColor(advancedVSeed, vseed)) {\n const { encoding } = advancedVSeed\n const { color } = encoding\n return color?.[0]\n }\n return undefined\n}\n","import { uniqueBy } from 'remeda'\nimport { dataReshapeByEncoding } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed, ColumnParallel, Encoding } from 'src/types'\n\nexport const reshapeWithEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset, chartType } = vseed as ColumnParallel\n const { dimensions = [], measures = [], encoding } = advancedVSeed\n\n const colorMeasureId = getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed)\n const {\n dataset: newDatasets,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(findAllMeasures(measures), (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n colorMeasureId,\n },\n )\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: [\n {\n id: String(chartType),\n index: 0,\n foldInfo,\n unfoldInfo,\n },\n ],\n dimensions,\n measures,\n }\n}\n","import { uniqueBy } from 'remeda'\nimport { dataReshapeByEncoding, FoldMeasureValue } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Encoding,\n MeasureGroup,\n} from 'src/types'\n\nexport const pivotReshapeWithEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed as ColumnParallel\n const { dimensions = [], measures = [], encoding } = advancedVSeed\n\n const allMeasures = findAllMeasures(measures)\n const measureGroups: MeasureGroup[] = []\n if (measures) {\n measures.forEach((measure: MeasureGroup) => {\n if (measure.children && measure.children.length > 0) {\n measureGroups.push(measure)\n }\n })\n }\n\n const datasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n measureGroups.forEach((measureGroup, index) => {\n const measures = measureGroup.children\n if (!measures) {\n return\n }\n const groupId = measureGroup.id\n const {\n dataset: newSubDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(measures, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: `${FoldMeasureValue}${groupId}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n omitIds: allMeasures.map((item) => item.id),\n },\n )\n\n const reshapeInfo = {\n id: groupId,\n index,\n foldInfo,\n unfoldInfo,\n }\n datasets.push(newSubDataset)\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n return {\n ...result,\n dataset: datasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n","import { sort, unique } from 'remeda'\nimport type { Dataset, Datum } from 'src/types'\nimport type { Sort } from 'src/types/properties/analysis/sort'\n\nexport const calcOrder = (sortConfig: Sort, id: string, dataset: Dataset): string[] => {\n if (sortConfig.customOrder) {\n return sortConfig.customOrder\n }\n\n const order = sortConfig.order || 'asc'\n const orderBy = sortConfig.orderBy\n\n const res = sort(dataset, (a, b) => {\n const aValue = a[orderBy || id] as string | number\n const bValue = b[orderBy || id] as string | number\n\n if (order === 'asc') {\n if (aValue < bValue) {\n return -1\n }\n if (aValue > bValue) {\n return 1\n }\n return 0\n }\n if (aValue > bValue) {\n return -1\n }\n if (aValue < bValue) {\n return 1\n }\n return 0\n })\n\n return unique(res.map((item: Datum) => item[id] as string))\n}\n","import type { AdvancedPipe, Dataset, DatasetReshapeInfo, Line } from 'src/types'\nimport { calcOrder } from './common'\n\nexport const sortXBandAxis: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { sort: sortAxis } = vseed as Line\n const { datasetReshapeInfo, dataset } = advancedVSeed as { datasetReshapeInfo: DatasetReshapeInfo; dataset: Dataset }\n const { unfoldInfo } = datasetReshapeInfo[0]\n const xField = unfoldInfo.encodingX\n if (!sortAxis || !xField) {\n return advancedVSeed\n }\n if (!result.analysis) result.analysis = {}\n if (!result.analysis.orderMapping) result.analysis.orderMapping = {}\n\n const axisOrderResult = calcOrder(sortAxis, xField, dataset.flat(2))\n\n result.analysis.orderMapping[xField] = axisOrderResult\n\n return result\n}\n","import type { AdvancedPipe, Line } from 'src/types'\nimport { calcOrder } from './common'\n\nexport const sortLegend: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { sortLegend } = vseed as Line\n const { datasetReshapeInfo, dataset } = advancedVSeed\n const colorId = datasetReshapeInfo?.[0]?.unfoldInfo?.encodingColorId\n const colorIdMap = datasetReshapeInfo?.[0]?.unfoldInfo?.colorIdMap ?? {}\n const colorItems = datasetReshapeInfo?.[0]?.unfoldInfo?.colorItems\n if (!sortLegend || !colorId || !colorIdMap || !colorItems) {\n return advancedVSeed\n }\n\n if (!result.analysis) result.analysis = {}\n if (!result.analysis.orderMapping) result.analysis.orderMapping = {}\n\n if (sortLegend.customOrder) {\n const colorIds = Object.keys(colorIdMap)\n // 先根据名称匹配, 若名称不存在, 则根据id匹配, 从而兼容名称和id的两种情况\n const orderRes = sortLegend.customOrder.map((itemNameOrId) => {\n return colorIds.find((id) => {\n return colorIdMap[id]?.alias === itemNameOrId || colorIdMap[id]?.id === itemNameOrId || id === itemNameOrId\n }) as string\n })\n result.analysis.orderMapping[colorId] = orderRes\n return result\n }\n\n const orderRes = calcOrder(sortLegend, colorId, dataset?.flat(2) || [])\n result.analysis.orderMapping[colorId] = orderRes\n\n return result\n}\n","import { pick } from 'remeda'\nimport { replaceNullToUndefined } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed, Config } from 'src/types'\n\nexport const lineConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const pickedConfig = pick(vseed, [\n 'backgroundColor',\n 'color',\n 'label',\n 'legend',\n 'tooltip',\n 'xAxis',\n 'yAxis',\n 'crosshairLine',\n ]) as Config['line']\n\n const config = replaceNullToUndefined(pickedConfig)\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n","import { pick } from 'remeda'\nimport { replaceNullToUndefined } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed } from 'src/types'\n\nexport const markStyle: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n\n const pickedMarkStyle = pick(vseed, [\n 'barStyle',\n 'pointStyle',\n 'lineStyle',\n 'areaStyle',\n ]) as AdvancedVSeed['markStyle']\n\n const markStyle = replaceNullToUndefined(pickedMarkStyle)\n\n return { ...advancedVSeed, markStyle }\n}\n","import { pick } from 'remeda'\nimport type { AdvancedPipe, AdvancedVSeed } from 'src/types'\n\nexport const annotation: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const annotation = pick(vseed, [\n 'annotationPoint',\n 'annotationHorizontalLine',\n 'annotationVerticalLine',\n 'annotationArea',\n ]) as AdvancedVSeed['annotation']\n\n return { ...advancedVSeed, annotation }\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n lineConfig,\n annotation,\n markStyle,\n sortXBandAxis,\n sortLegend,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n encodingForLine,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n encodingAdapter,\n defaultEncodingForLine,\n deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const lineAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n\n encodingAdapter(\n [defaultEncodingForLine, buildMeasures],\n [\n encodingForLine,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n sortXBandAxis,\n sortLegend,\n lineConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from '../color/colorAdapter'\n\nexport const initLine: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { foldInfo, unfoldInfo } = datasetReshapeInfo[0]\n\n result.type = 'line'\n result.direction = 'vertical'\n result.xField = unfoldInfo.encodingX\n result.yField = foldInfo.measureValue\n result.seriesField = isLinearColor(advancedVSeed, vseed) ? unfoldInfo.encodingDetail : unfoldInfo.encodingColorId\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport type { Color, SpecPipe } from 'src/types'\n\nexport const color: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo, chartType } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n const baseConfig = advancedVSeed.config[chartType] as { color: Color }\n\n if (!baseConfig || !baseConfig.color) {\n return result\n }\n\n const colorItems = unfoldInfo.colorItems\n const colorIdMap = unfoldInfo.colorIdMap\n\n const { color } = baseConfig\n const { colorScheme, colorMapping } = color\n\n result.color = {\n type: 'ordinal',\n domain: colorItems,\n range: colorScheme,\n specified: createSpecifiedForColorMapping(colorMapping, colorIdMap, colorItems),\n } as ILineChartSpec['color']\n return result\n}\n\nexport const createSpecifiedForColorMapping = (\n colorMapping?: Record<string, string>,\n colorIdMap?: Record<string, { id: string; alias: string }>,\n colorItems?: string[],\n) => {\n if (!colorMapping || !colorIdMap || !colorItems) {\n return undefined\n }\n\n const matchedList: string[] = []\n\n // 名称越长优先级越高: 按名称长度降, 优先匹配名称长的, 避免一个短的名称匹配到了超多个长的\n const colors = Object.entries(colorMapping).sort((a, b) => b[0].length - a[0].length)\n // 准确匹配\n const accurateMap = colors.reduce(\n (prev, cur) => {\n const name = cur[0]\n const colorValue = cur[1]\n\n const accurateMatchedList = Object.entries(colorIdMap).filter(([colorKey, colorObj]) => {\n return colorKey === name || colorObj.alias === name || colorObj.id === name\n })\n accurateMatchedList.forEach((item) => {\n prev[item[0]] = colorValue\n matchedList.push(name)\n })\n\n return prev\n },\n {} as Record<string, string>,\n )\n\n // 模糊匹配\n const fuzzyMap = colors.reduce(\n (prev, cur) => {\n const name = cur[0]\n const colorValue = cur[1]\n if (matchedList.includes(name)) {\n return prev\n }\n\n const fuzzyMatchedList = Object.entries(colorIdMap).filter(([colorKey, colorObj]) => {\n return colorKey.includes(name) || colorObj.alias.includes(name) || colorObj.id.includes(name)\n })\n fuzzyMatchedList.forEach((item) => {\n // 已经匹配有值, 则不重复匹配\n if (prev[item[0]]) {\n return\n }\n prev[item[0]] = colorValue\n })\n\n return prev\n },\n {} as Record<string, string>,\n )\n\n // 合并, 准确匹配的优先级高\n return {\n ...fuzzyMap,\n ...accurateMap,\n }\n}\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport type { Color, SpecPipe } from 'src/types'\n\nexport const linearColor: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo, chartType } = advancedVSeed\n const { unfoldInfo, id } = datasetReshapeInfo[0]\n const baseConfig = advancedVSeed.config[chartType] as { color: Color }\n\n if (!baseConfig || !baseConfig.color) {\n return result\n }\n\n const { color } = baseConfig\n const { colorScheme, linearColorScheme } = color\n\n result.color = {\n type: 'linear',\n range: linearColorScheme || colorScheme || [],\n domain: [\n {\n dataId: id,\n fields: [unfoldInfo.encodingColor],\n },\n ],\n }\n\n return result\n}\n","import type { ISpec } from '@visactor/vchart'\nimport type { BackgroundColor, SpecPipe } from 'src/types'\n\nexport const backgroundColor: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed } = context\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { backgroundColor: BackgroundColor }\n\n const { backgroundColor } = baseConfig\n\n return {\n ...result,\n background: backgroundColor,\n }\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { isPivotChart } from 'src/pipeline/utils'\nimport type { SpecPipe } from 'src/types'\n\nexport const datasetXY: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { analysis, datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n const orderMapping = analysis?.orderMapping || {}\n const angle = unfoldInfo.encodingAngle\n const x = unfoldInfo.encodingX\n const colorId = unfoldInfo.encodingColorId\n const id = datasetReshapeInfo[0].id\n\n const fields: Record<string, object> = {}\n if (angle) {\n fields[angle] = {\n sortIndex: 0,\n }\n }\n if (x) {\n const order = orderMapping[x]\n if (order) {\n fields[x] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[x] = {\n sortIndex: 0,\n }\n }\n }\n\n if (colorId) {\n const order = orderMapping[colorId]\n if (order) {\n fields[colorId] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[colorId] = {\n sortIndex: 0,\n }\n }\n }\n\n return {\n ...spec,\n data: {\n id,\n // 透视表不使用 dataValues\n values: isPivotChart(vseed) ? undefined : advancedVSeed.dataset,\n fields: fields,\n },\n } as ISpec\n}\n","import type { ILineSeriesSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const progressive: SpecPipe = (spec) => {\n const result = { ...spec } as ILineSeriesSpec\n // const { advancedVSeed } = context\n // const { dataset = [] } = advancedVSeed\n // const size = dataset.length\n\n // if (size < 5000) {\n // return result\n // }\n\n result.large = false\n result.largeThreshold = Infinity\n result.progressiveStep = 400\n result.progressiveThreshold = Infinity\n\n return result\n}\n","import { findAllMeasures } from 'src/pipeline/utils'\nimport type { Dimensions, MeasureTree } from 'src/types'\n\nexport const defaultTitleText = (measures: MeasureTree, dimensions: Dimensions, idList: string[] = []) => {\n const allMeasures = findAllMeasures(measures)\n return idList\n .map((id) => {\n const alias = [...allMeasures, ...dimensions].find((f) => f.id === id)?.alias || ''\n return alias\n })\n .join(' & ')\n}\n","import type { ICartesianBandAxisSpec, ISpec } from '@visactor/vchart'\nimport type { SpecPipe, XBandAxis } from 'src/types'\nimport { defaultTitleText } from './title/defaultTitleText'\nimport { AXIS_LABEL_SPACE } from 'src/pipeline/utils'\n\nexport const xBand: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { measures, dimensions, encoding } = advancedVSeed\n const config = advancedVSeed.config?.[chartType as 'column']?.xAxis as XBandAxis\n\n if (!result.axes) {\n result.axes = []\n }\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n labelAutoHide,\n labelAutoHideGap,\n labelAutoLimit,\n labelAutoLimitLength = 80,\n labelAutoRotate,\n labelAutoRotateAngleRange,\n } = config\n\n const sampling = !(labelAutoHide || labelAutoRotate || labelAutoLimit)\n\n const bandAxis = {\n visible,\n type: 'band',\n orient: 'bottom',\n maxHeight: labelAutoLimitLength + 60,\n sampling,\n hover: true,\n label: {\n visible: label?.visible,\n flush: true,\n space: AXIS_LABEL_SPACE,\n style: {\n maxLineWidth: labelAutoLimitLength,\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n\n // 防重叠相关\n minGap: labelAutoHideGap,\n autoHide: labelAutoHide,\n autoHideMethod: 'greedy',\n autoHideSeparation: labelAutoHideGap,\n autoLimit: labelAutoLimit,\n autoRotate: labelAutoRotate,\n autoRotateAngle: labelAutoRotateAngleRange,\n lastVisible: true,\n },\n title: {\n visible: title?.visible,\n text: title?.titleText || defaultTitleText(measures, dimensions, encoding.x as string[]),\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n lineDash: grid?.gridLineDash,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n paddingInner: [0.15, 0.1],\n paddingOuter: [0.075, 0.1],\n } as ICartesianBandAxisSpec\n\n result.axes = [...result.axes, bandAxis] as ISpec['axes']\n return result\n}\n","import { isEmpty, isNullish } from 'remeda'\nimport { autoFormatter } from 'src/pipeline/utils'\nimport type { Formatter, NumFormat } from 'src/types'\n\nexport const createLinearFormat = (\n value: string | number,\n autoFormat: boolean | undefined,\n numFormat: NumFormat,\n formatter: Formatter,\n) => {\n if (isNullish(autoFormat) && isEmpty(numFormat)) {\n return autoFormatter(value)\n }\n\n if (autoFormat === true) {\n return autoFormatter(value)\n }\n\n if (!isEmpty(numFormat)) {\n return formatter(value)\n }\n\n return String(value)\n}\n\nexport const createLinearPercentFormat = (\n value: string | number,\n autoFormat: boolean | undefined,\n numFormat: NumFormat,\n formatter: Formatter,\n percentFormatter: Formatter,\n) => {\n if (isNullish(autoFormat) && isEmpty(numFormat)) {\n return percentFormatter(value)\n }\n\n if (autoFormat === true) {\n return percentFormatter(value)\n }\n\n if (!isEmpty(numFormat)) {\n return formatter(value)\n }\n\n return String(value)\n}\n","import type { ISpec } from '@visactor/vchart'\nimport {\n AXIS_LABEL_SPACE,\n createNumFormatter,\n isAreaPercent,\n isBarPercent,\n isColumnPercent,\n LINEAR_AXIS_INNER_OFFSET_TOP,\n} from 'src/pipeline/utils'\nimport type { SpecPipe, YLinearAxis } from 'src/types'\nimport { createLinearFormat, createLinearPercentFormat } from './format/linearFormat'\nimport { defaultTitleText } from './title/defaultTitleText'\n\nexport const yLinear: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { measures, dimensions, encoding } = advancedVSeed\n const config = advancedVSeed.config?.[chartType as 'column']?.yAxis as YLinearAxis\n\n if (!result.axes) {\n result.axes = []\n }\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n\n zero,\n nice,\n inverse,\n max,\n min,\n log,\n logBase = 10,\n autoFormat,\n numFormat = {},\n } = config\n\n const formatter = createNumFormatter(numFormat)\n const percentFormatter = createNumFormatter({\n type: 'percent',\n })\n\n const linearAxis = {\n visible,\n type: log ? 'log' : 'linear',\n base: logBase,\n orient: 'left',\n nice,\n zero: log ? false : zero,\n inverse,\n max,\n min,\n label: {\n space: AXIS_LABEL_SPACE,\n visible: label?.visible,\n formatMethod: (value: string) => {\n if (isBarPercent(vseed) || isColumnPercent(vseed) || isAreaPercent(vseed)) {\n return createLinearPercentFormat(value, autoFormat, numFormat, formatter, percentFormatter)\n }\n return createLinearFormat(value, autoFormat, numFormat, formatter)\n },\n style: {\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n },\n title: {\n visible: title?.visible,\n text: title?.titleText || defaultTitleText(measures, dimensions, encoding.y as string[]),\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n lineDash: grid?.gridLineDash,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n innerOffset: {\n top: LINEAR_AXIS_INNER_OFFSET_TOP,\n // bottom: LINEAR_AXIS_INNER_OFFSET_TOP,\n },\n }\n\n result.axes = [...result.axes, linearAxis] as ISpec['axes']\n\n return result\n}\n","import type { ICartesianCrosshairSpec, ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const verticalCrosshairLine: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n\n const config = advancedVSeed.config?.[chartType as 'line']?.crosshairLine\n if (!config) {\n return result\n }\n\n if (!result.crosshair) {\n result.crosshair = {}\n }\n\n const visible = config.visible || true\n const lineColor = config.lineColor || undefined\n const labelColor = config.labelColor || undefined\n const labelVisible = config.labelVisible || undefined\n const labelBackgroundColor = config.labelBackgroundColor || undefined\n\n const crosshair = result.crosshair as ICartesianCrosshairSpec\n crosshair.xField = {\n visible,\n line: {\n type: 'line',\n style: {\n lineWidth: 1,\n opacity: 1,\n stroke: lineColor,\n lineDash: config.lineDash ?? [4, 2],\n },\n },\n label: {\n visible: labelVisible,\n labelBackground: {\n visible: labelVisible,\n style: {\n fill: labelBackgroundColor,\n },\n },\n style: {\n fill: labelColor,\n },\n },\n }\n\n return result\n}\n","import type { Legend, SpecPipe } from 'src/types'\n\nexport const discreteLegend: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { datasetReshapeInfo, chartType } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n const baseConfig = advancedVSeed.config[chartType] as { legend: Legend }\n if (!baseConfig || !baseConfig.legend) {\n return result\n }\n\n const { legend } = baseConfig\n const {\n enable,\n position = 'bottom',\n labelFontColor,\n labelColor,\n labelFontSize = 12,\n labelFontWeight,\n maxSize = 1,\n border,\n shapeType = 'rectRound',\n } = legend || {}\n\n const orient = ['bottom', 'bottomLeft', 'bottomRight', 'bl', 'br'].includes(position)\n ? 'bottom'\n : ['top', 'topLeft', 'topRight', 'tl', 'tr'].includes(position)\n ? 'top'\n : ['left', 'leftTop', 'leftBottom', 'lt', 'lb'].includes(position)\n ? 'left'\n : 'right'\n\n const legendPosition = ['topLeft', 'bottomLeft', 'leftTop', 'rightTop', 'lt', 'rt', 'tl', 'bl'].includes(position)\n ? 'start'\n : ['topRight', 'bottomRight', 'leftBottom', 'rightBottom', 'lb', 'rb', 'rt', 'br'].includes(position)\n ? 'end'\n : 'middle'\n\n result.legends = {\n type: 'discrete',\n visible: enable,\n maxCol: Math.max(1, maxSize),\n maxRow: Math.max(1, maxSize),\n autoPage: true,\n orient,\n position: legendPosition,\n item: {\n focus: true,\n maxWidth: '30%',\n focusIconStyle: {\n size: labelFontSize + 2,\n fill: labelColor || labelFontColor,\n fontWeight: labelFontWeight,\n },\n shape: {\n space: border ? 6 : 4,\n style: (item) => {\n return {\n symbolType: shapeType,\n size: border ? 8 : 10,\n fillOpacity: 1,\n opacity: 1,\n stroke: false,\n outerBorder: border\n ? {\n stroke: item.shape.fill,\n distance: 3,\n lineWidth: 1,\n }\n : null,\n }\n },\n state: {\n unSelected: {\n opacity: 0.2,\n fillOpacity: 1, // 覆盖 vchart 里的默认值\n },\n },\n },\n label: {\n formatMethod: (value) => {\n return unfoldInfo.colorIdMap[String(value)]?.alias ?? value\n },\n style: {\n fontSize: labelFontSize,\n fill: labelColor || labelFontColor,\n fontWeight: labelFontWeight,\n },\n state: {\n unSelected: {\n fill: labelColor || labelFontColor, // 覆盖vchart里面的默认值\n fillOpacity: 0.8, // 覆盖 vchart 里的默认值\n },\n },\n },\n background: {\n state: {\n selectedHover: {\n fill: labelColor || labelFontColor,\n fillOpacity: 0.05,\n },\n unSelectedHover: {\n fill: null,\n },\n },\n },\n },\n padding: 0,\n }\n return result\n}\n","import type { Legend, SpecPipe } from 'src/types'\n\nexport const colorLegend: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { datasetReshapeInfo, chartType } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n const baseConfig = advancedVSeed.config[chartType] as { legend: Legend }\n if (!baseConfig || !baseConfig.legend) {\n return result\n }\n\n const { legend } = baseConfig\n const { enable, position = 'bottom', labelFontColor, labelColor, labelFontSize = 12, labelFontWeight } = legend || {}\n\n const orient = ['bottom', 'bottomLeft', 'bottomRight', 'bl', 'br'].includes(position)\n ? 'bottom'\n : ['top', 'topLeft', 'topRight', 'tl', 'tr'].includes(position)\n ? 'top'\n : ['left', 'leftTop', 'leftBottom', 'lt', 'lb'].includes(position)\n ? 'left'\n : 'right'\n\n const legendPosition = ['topLeft', 'bottomLeft', 'leftTop', 'rightTop', 'lt', 'rt', 'tl', 'bl'].includes(position)\n ? 'start'\n : ['topRight', 'bottomRight', 'leftBottom', 'rightBottom', 'lb', 'rb', 'rt', 'br'].includes(position)\n ? 'end'\n : 'middle'\n\n result.legends = {\n type: 'color',\n visible: enable,\n orient,\n position: legendPosition,\n padding: 0,\n field: unfoldInfo.encodingColor,\n maxWidth: '30%',\n handlerText: {\n visible: true,\n style: {\n fill: labelColor || labelFontColor,\n fontSize: labelFontSize,\n fontWeight: labelFontWeight,\n },\n },\n }\n return result\n}\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from './colorAdapter'\n\nexport const colorPointStyleFill = (stylePipe: SpecPipe): SpecPipe => {\n return (spec, context) => {\n const result = stylePipe(spec, context) as ILineChartSpec\n\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed, vseed)) {\n if (result?.point?.style) {\n result.point.style.fill = {\n field: unfoldInfo.encodingColor,\n scale: 'color',\n }\n }\n }\n\n return result\n }\n}\n","import type { IAreaChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, PointStyle, SpecPipe } from 'src/types'\nimport { isEmpty, isNullish } from 'remeda'\n\nexport const pointStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle } = advancedVSeed\n const { pointStyle } = markStyle\n const result = {\n ...spec,\n point: {\n style: {},\n },\n } as IAreaChartSpec\n\n if (isNullish(pointStyle) || isEmpty(pointStyle)) {\n return result\n }\n\n const pointStyles = (Array.isArray(pointStyle) ? pointStyle : [pointStyle]) as PointStyle[]\n\n const customMap = pointStyles.reduce<object>((result, style, index) => {\n const {\n pointBorderColor,\n pointBorderStyle,\n pointBorderWidth = 1,\n pointColor,\n pointColorOpacity,\n pointSize,\n pointVisible = true,\n } = style\n\n const lineDash = pointBorderStyle === 'dashed' ? [5, 2] : pointBorderStyle === 'dotted' ? [2, 5] : [0, 0]\n return {\n ...result,\n [`custom${index + 1}`]: {\n // 优先级: 后者覆盖前者\n level: index + 1,\n filter: (datum: Datum) => {\n if (selector(datum, style.selector)) {\n return true\n }\n return false\n },\n style: {\n visible: pointVisible,\n size: pointSize,\n fill: pointColor,\n fillOpacity: pointColorOpacity,\n innerBorder: {\n stroke: pointBorderColor,\n lineWidth: pointBorderWidth,\n distance: (pointBorderWidth || 0) / 2,\n lineDash: lineDash,\n },\n },\n },\n }\n }, {})\n\n return {\n ...result,\n point: {\n ...result.point,\n state: {\n ...customMap,\n },\n },\n }\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-call */\nimport type { IScatterChartSpec } from '@visactor/vchart'\nimport type { Datum, SpecPipe } from 'src/types'\n\nexport const pointStateDimensionHover: SpecPipe = (spec) => {\n const point = (spec as IScatterChartSpec).point || {}\n const result = {\n ...spec,\n point: {\n ...point,\n state: {\n ...(point.state || {}),\n dimension_hover: {\n scaleX: 1.4,\n scaleY: 1.4,\n outerBorder: {\n lineWidth: 4,\n strokeOpacity: 0.25,\n distance: 2,\n },\n },\n },\n },\n } as IScatterChartSpec\n return result\n}\n\nexport const pointStateHover: SpecPipe = (spec, context) => {\n const point = (spec as IScatterChartSpec).point || {}\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n const result = {\n ...spec,\n point: {\n ...point,\n state: {\n ...(point.state || {}),\n hover: {\n scaleX: 1.4,\n scaleY: 1.4,\n stroke: (datum: Datum, context: unknown) => {\n const field = unfoldInfo.encodingColorId\n const color = (context as any).seriesColor(datum[field] as string)\n return color\n },\n fillOpacity: 0.6,\n lineWidth: 1,\n },\n },\n },\n } as IScatterChartSpec\n return result\n}\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from './colorAdapter'\n\nexport const colorLineStyleFill = (stylePipe: SpecPipe): SpecPipe => {\n return (spec, context) => {\n const result = stylePipe(spec, context) as ILineChartSpec\n\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed, vseed)) {\n if (result?.line?.style) {\n result.line.style.stroke = {\n field: unfoldInfo.encodingColor,\n scale: 'color',\n }\n }\n }\n\n return result\n }\n}\n","import { isRadar } from 'src/pipeline/utils'\nimport type { VSeed } from 'src/types'\n\nexport const getCurveType = (vseed: VSeed, lineSmooth: boolean = false): string => {\n if (!lineSmooth) {\n return 'linear'\n }\n\n /**\n * Tip: 长期来看, 由VChart封装好雷达图与面积图的曲线类型差异, 是一个更好的选择.\n */\n return isRadar(vseed) ? 'catmullRomClosed' : 'monotone'\n}\n\nexport const getCurveTension = (vseed: VSeed, lineSmooth: boolean = false): number => {\n if (!lineSmooth) {\n return 0\n }\n\n /**\n * Tip: 长期来看, 由VChart封装好雷达图与面积图的曲线类型差异, 是一个更好的选择.\n */\n return isRadar(vseed) ? 0.4 : 0\n}\n","import type { IAreaChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, LineStyle, SpecPipe } from 'src/types'\nimport { isEmpty, isNullish } from 'remeda'\nimport { getCurveTension, getCurveType } from './curve'\n\nexport const lineStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle } = advancedVSeed\n const { lineStyle } = markStyle\n const result = {\n ...spec,\n line: {\n style: {},\n },\n } as IAreaChartSpec\n\n if (isNullish(lineStyle) || isEmpty(lineStyle)) {\n return result\n }\n\n const lineStyles = (Array.isArray(lineStyle) ? lineStyle : [lineStyle]) as LineStyle[]\n\n const customMap = lineStyles.reduce<object>((result, style, index) => {\n const { lineColor, lineColorOpacity, lineSmooth, lineStyle, lineWidth = 2, lineVisible = true } = style\n\n const dashSegment = lineWidth * 2\n const dashGap = lineWidth\n\n const lineDash =\n lineStyle === 'dashed' ? [dashSegment, dashSegment] : lineStyle === 'dotted' ? [dashGap / 2, dashGap * 2] : [0, 0]\n\n const curveType = getCurveType(context.vseed, lineSmooth)\n const curveTension = getCurveTension(context.vseed, lineSmooth)\n\n return {\n ...result,\n [`custom${index + 1}`]: {\n // 优先级: 后者覆盖前者\n level: index + 1,\n filter: (\n _: Datum,\n node: {\n renderNode: {\n context: {\n data: Datum[]\n }\n }\n },\n ) => {\n const lineData = node.renderNode.context.data\n for (const d of lineData) {\n if (selector(d, style.selector)) {\n return true\n }\n }\n return false\n },\n style: {\n visible: lineVisible,\n curveType: curveType,\n curveTension: curveTension,\n strokeOpacity: lineColorOpacity,\n stroke: lineColor,\n lineWidth: lineWidth,\n lineDash: lineDash,\n },\n },\n }\n }, {})\n\n return {\n ...result,\n line: {\n ...result.line,\n state: {\n ...customMap,\n },\n },\n }\n}\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport { createFormatter, createFormatterByMeasure, DATUM_HIDE_KEY, findMeasureById } from '../../../../utils'\nimport type {\n Datum,\n Dimension,\n Dimensions,\n Encoding,\n FoldInfo,\n Formatter,\n Label,\n Measure,\n Measures,\n NumFormat,\n SpecPipe,\n} from 'src/types'\nimport { isNumber, merge, uniqueBy } from 'remeda'\nimport { selector } from 'src/dataSelector'\nimport { MeasureId } from 'src/dataReshape/constant'\n\nexport const label: SpecPipe = (spec, context) => {\n const result = { ...spec } 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 foldInfo = datasetReshapeInfo[0].foldInfo as FoldInfo\n\n const { label } = baseConfig\n\n result.label = buildLabel(\n label,\n vseed.measures,\n vseed.dimensions,\n advancedVSeed.dimensions,\n advancedVSeed.measures,\n encoding as Encoding,\n [foldInfo],\n ) as unknown as ILineChartSpec['label']\n\n return result\n}\n\nexport const generateMeasureValue = (\n value: number | string,\n measure: Measure,\n labelAutoFormat?: boolean,\n numFormat: NumFormat = {},\n) => {\n const format = merge(numFormat, measure.numFormat || measure.format)\n const mergedMeasure = { ...measure, numFormat: format, autoFormat: labelAutoFormat || measure.autoFormat }\n\n const formatter = createFormatterByMeasure(mergedMeasure)\n return formatter(value)\n}\n\nexport const generateMeasurePercent = (value: number | string, sum: number, formatter: Formatter) => {\n if (value === undefined || value === null) return String(value)\n const num = Number(value)\n if (Number.isNaN(num)) return String(value)\n\n const percentValue = num / sum\n return formatter(percentValue)\n}\n\nexport const buildLabel = (\n label: Label,\n vseedMeasures: Measures = [],\n vseedDimensions: Dimensions = [],\n advancedVSeedDimensions: Dimensions,\n advancedVSeedMeasures: Measures,\n encoding: Encoding,\n foldInfoList: FoldInfo[],\n) => {\n const {\n enable,\n wrap,\n showValue,\n showValuePercent,\n showDimension,\n labelOverlap,\n labelColorSmartInvert,\n labelStroke,\n labelColor,\n labelFontSize,\n labelFontWeight,\n labelBackgroundColor,\n labelPosition,\n autoFormat,\n numFormat = {},\n } = label\n\n const hasDimLabelEncoding = vseedDimensions.some((item) => encoding.label?.includes(item.id))\n\n const labelDims = uniqueBy(\n hasDimLabelEncoding\n ? vseedDimensions.filter((item) => encoding.label?.includes(item.id))\n : showDimension\n ? advancedVSeedDimensions.filter((d) => d.id !== MeasureId)\n : [],\n (item: Dimension) => item.id,\n )\n\n const labelMeas = uniqueBy(\n vseedMeasures.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 const result = {\n visible: enable,\n dataFilter: (data: Datum[]) => {\n return data.filter((entry) => {\n return entry.data?.[DATUM_HIDE_KEY] !== true && selector(entry.data as Datum, label.selector, 'Or')\n })\n },\n formatMethod: (_: unknown, datum: Datum) => {\n const result = []\n\n const dimLabels = labelDims.map((item: Dimension) => {\n const id = item.id\n return datum[id] as number | string\n })\n\n const meaLabels = labelMeas.map((item: Measure) =>\n generateMeasureValue(datum[item.id] as number | string, item, autoFormat, numFormat),\n )\n\n result.push(...dimLabels)\n\n foldInfoList.forEach((foldInfo) => {\n const { measureId, measureValue, statistics } = foldInfo\n const measure = findMeasureById(advancedVSeedMeasures, datum[measureId] as string)\n if (measure) {\n const measureValueLabel = generateMeasureValue(\n datum[measureValue] as number | string,\n measure,\n autoFormat,\n numFormat,\n )\n // 饼图/环图需要使用实际占比数据\n const measurePercentLabel = isNumber(datum['__VCHART_ARC_RATIO'])\n ? generateMeasurePercent(datum['__VCHART_ARC_RATIO'], 1, percentFormatter)\n : generateMeasurePercent(datum[measureValue] as number | string, statistics.sum, percentFormatter)\n if (showValue) {\n result.push(measureValueLabel)\n }\n if (showValuePercent) {\n result.push(measurePercentLabel)\n }\n }\n })\n\n result.push(...meaLabels)\n\n if (wrap) {\n return result\n }\n return result.join(' ')\n },\n position: labelPosition,\n style: {\n stroke: labelStroke,\n fill: labelColor,\n fontSize: labelFontSize,\n fontWeight: labelFontWeight,\n background: labelBackgroundColor,\n },\n smartInvert: labelColorSmartInvert,\n }\n\n if (labelOverlap) {\n ;(result as any).overlap = {\n hideOnHit: true,\n clampForce: true,\n }\n }\n\n return result\n}\n","import type { ITooltipSpec } from '@visactor/vchart'\nimport type { TooltipConfig } from 'src/types/properties'\n\nexport const getTooltipStyle = (tooltipConfig: TooltipConfig) => {\n return {\n panel: {\n padding: tooltipConfig.padding,\n border: {\n radius: tooltipConfig.borderRadius,\n width: tooltipConfig.borderWidth,\n color: tooltipConfig.borderColor,\n },\n backgroundColor: tooltipConfig.backgroundColor,\n },\n keyLabel: {\n lineHeight: tooltipConfig.lineHeight,\n fontSize: tooltipConfig.fontSize,\n fontColor: tooltipConfig.keyColor,\n },\n valueLabel: {\n lineHeight: tooltipConfig.lineHeight,\n fontSize: tooltipConfig.fontSize,\n fontColor: tooltipConfig.valueColor,\n fontWeight: 'medium',\n },\n titleLabel: {\n fontSize: tooltipConfig.fontSize,\n lineHeight: tooltipConfig.lineHeight,\n fontColor: tooltipConfig.titleColor,\n fontWeight: 'bold',\n },\n } as ITooltipSpec['style']\n}\n","import { pipe, uniqueBy } from 'remeda'\nimport { createFormatterByMeasure, findAllMeasures, findMeasureById } from '../../../../utils'\nimport type { Datum, Dimensions, FoldInfo, Measures, SpecPipe, TooltipConfig, UnfoldInfo } from 'src/types'\nimport { ORIGINAL_DATA } from 'src/dataReshape'\nimport { getTooltipStyle } from './tooltipStyle'\n\nexport const tooltip: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { measures, datasetReshapeInfo, chartType, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: TooltipConfig }\n const { tooltip = { enable: true } } = baseConfig\n const { enable = true } = tooltip\n const { foldInfo, unfoldInfo } = datasetReshapeInfo[0] as unknown as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n result.tooltip = {\n style: getTooltipStyle(tooltip),\n visible: !!enable,\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(\n encoding.tooltip || [],\n dimensions,\n findAllMeasures(vseed.measures),\n foldInfo,\n unfoldInfo,\n ),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(dimensions, measures, foldInfo, unfoldInfo),\n },\n }\n return result\n}\n\nexport const createDimensionContent = (\n dimensions: Dimensions,\n measures: Measures,\n foldInfo: FoldInfo,\n unfoldInfo: UnfoldInfo,\n) => {\n const { measureId, measureValue, foldMap } = foldInfo\n const { encodingColor } = unfoldInfo\n\n return [\n {\n visible: true,\n shapeType: 'rectRound',\n hasShape: true,\n key: dimensions.some((d) => d.encoding === 'color')\n ? (v: unknown) => {\n const datum = v as Datum\n const key = (datum && (datum[encodingColor] as string)) || ''\n return unfoldInfo.colorIdMap[key].alias ?? key\n }\n : Object.values(foldMap)[0],\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n },\n ]\n}\n\nexport const createMarkContent = (\n tooltip: string[],\n dimensions: Dimensions,\n measures: Measures,\n foldInfo: FoldInfo,\n unfoldInfo: UnfoldInfo,\n) => {\n const dims = pipe(\n dimensions.filter((item) => tooltip.includes(item.id)),\n uniqueBy((item) => item.id),\n uniqueBy((item) => item.alias),\n )\n const meas = pipe(\n measures.filter((item) => tooltip.includes(item.id)),\n uniqueBy((item) => item.id),\n uniqueBy((item) => item.alias),\n )\n\n const dimContent = dims.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const datum = v as Datum\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return datum && (datum[item.id] as string)\n },\n value: (v: unknown) => {\n const datum = v as Datum\n return datum && (datum[item.id] as string)\n },\n }))\n\n const meaContent = meas.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias || item.id,\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const id = item.id\n if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) {\n return ''\n }\n const originalData = datum[ORIGINAL_DATA] as Datum\n const value = originalData[id] as string | number\n const measure = findMeasureById(measures, id)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }))\n\n const defaultContent = {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const { measureName } = foldInfo\n const { encodingColor: colorName } = unfoldInfo\n\n const datum = v as Datum\n return (datum && (datum[measureName || colorName] as string)) || ''\n },\n value: (v: unknown) => {\n const { measureId, measureValue } = foldInfo\n\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }\n\n return [...dimContent, defaultContent, ...meaContent]\n}\n","import type { Datum } from 'src/types'\n\nexport const isSubset = (sub: Datum, obj: Datum) => {\n return Object.entries(sub).every(([key, value]) => {\n if (typeof value === 'string') {\n return obj[key] === value\n }\n if (typeof value === 'number') {\n return obj[key] === value\n }\n return true\n })\n}\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, SpecPipe, VSeed } from 'src/types'\nimport { isSubset } from './utils'\nimport { ANNOTATION_Z_INDEX } from '../../../../utils/constant'\nimport { isBarLikeChart } from 'src/pipeline/utils/chatType'\n\nexport const annotationPoint: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { annotation, config } = advancedVSeed\n\n if (!annotation || !annotation.annotationPoint) {\n return spec\n }\n\n const theme = config?.[vseed.chartType as 'column']?.annotation?.annotationPoint\n const { annotationPoint } = annotation\n const annotationPointList = Array.isArray(annotationPoint) ? annotationPoint : [annotationPoint]\n const isHorizontalBar = isBarLikeChart(advancedVSeed as VSeed)\n const defaultStyle = isHorizontalBar\n ? {\n textAlign: 'right',\n textBaseline: 'middle',\n }\n : {\n textAlign: 'center',\n textBaseline: 'top',\n }\n\n const markPoint = annotationPointList.flatMap((annotationPoint) => {\n const {\n selector: selectorPoint,\n text = '',\n textColor = theme?.textColor ?? '#ffffff',\n textFontSize = theme?.textFontSize ?? 12,\n textFontWeight = theme?.textFontWeight ?? 400,\n textAlign = defaultStyle.textAlign,\n textBaseline = defaultStyle.textBaseline,\n textBackgroundBorderColor = theme?.textBackgroundBorderColor,\n textBackgroundBorderRadius = theme?.textBackgroundBorderRadius ?? 4,\n textBackgroundBorderWidth = theme?.textBackgroundBorderWidth ?? 1,\n textBackgroundColor = theme?.textBackgroundColor ?? '#212121',\n textBackgroundPadding = theme?.textBackgroundPadding ?? 2,\n textBackgroundVisible = theme?.textBackgroundVisible ?? true,\n offsetX = theme?.offsetX ?? 0,\n offsetY = theme?.offsetY ?? 0,\n } = annotationPoint\n\n const dataset = advancedVSeed.dataset.flat()\n const selectedData = selectorPoint ? dataset.filter((datum) => selector(datum, selectorPoint)) : []\n const dx = -10 - (isHorizontalBar ? (textFontSize as number) : 0) // 由于vchart tag实现问题,需要设置这个强制偏移量\n const dy = isHorizontalBar ? 0 : (textFontSize as number)\n\n return selectedData.map((datum) => {\n return {\n zIndex: ANNOTATION_Z_INDEX,\n regionRelative: true,\n coordinate: (data: Datum[]) => {\n return data.find((item) => isSubset(datum, item))\n },\n\n itemLine: {\n visible: false,\n },\n itemContent: {\n offsetY,\n offsetX,\n confine: true,\n text: {\n text: text,\n style: {\n opacity: 0.95,\n visible: true,\n textAlign: textAlign,\n textBaseline: textBaseline,\n fill: textColor,\n stroke: textBackgroundColor,\n lineWidth: 1,\n fontSize: textFontSize,\n fontWeight: textFontWeight,\n dx,\n dy,\n },\n labelBackground: {\n visible: textBackgroundVisible,\n padding: textBackgroundPadding,\n style: {\n opacity: 0.95,\n cornerRadius: textBackgroundBorderRadius ?? 4,\n fill: textBackgroundColor,\n stroke: textBackgroundBorderColor,\n lineWidth: textBackgroundBorderWidth,\n dx,\n dy,\n },\n },\n },\n },\n }\n })\n }) as ILineChartSpec['markPoint']\n\n return {\n ...spec,\n markPoint,\n }\n}\n","import type { Datum, ICartesianSeries, ILineChartSpec, IMarkLineSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { SpecPipe } from 'src/types'\nimport { isArray, isNumber, isString } from 'remeda'\nimport { ANNOTATION_Z_INDEX } from '../../../../utils/constant'\n\nexport const annotationVerticalLine: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { annotation, datasetReshapeInfo, config } = advancedVSeed\n\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n if (!annotation || !annotation.annotationVerticalLine) {\n return spec\n }\n\n const theme = config?.[vseed.chartType as 'column']?.annotation?.annotationVerticalLine\n const { annotationVerticalLine } = annotation\n const annotationVerticalLineList = Array.isArray(annotationVerticalLine)\n ? annotationVerticalLine\n : [annotationVerticalLine]\n\n const positionMap = {\n outsideStart: 'start',\n outsideEnd: 'end',\n outsideMiddle: 'middle',\n insideStart: 'insideStartTop',\n insideMiddle: 'insideMiddleTop',\n insideEnd: 'insideEndTop',\n }\n const markLine = annotationVerticalLineList.flatMap((annotationVerticalLine) => {\n const {\n selector: selectorPoint,\n xValue,\n text = '',\n textPosition = 'insideEnd',\n textColor = theme?.textColor ?? '#ffffff',\n textFontSize = theme?.textFontSize ?? 12,\n textFontWeight = theme?.textFontWeight ?? 400,\n textAlign = 'center',\n textBaseline = 'top',\n\n lineColor = theme?.lineColor ?? '#212121',\n lineStyle = theme?.lineStyle ?? 'dashed',\n lineVisible = theme?.lineStyle ?? true,\n lineWidth = theme?.lineWidth ?? 1,\n\n textBackgroundVisible = theme?.textBackgroundVisible ?? true,\n textBackgroundColor = theme?.textBackgroundColor ?? '#212121',\n textBackgroundBorderColor = theme?.textBackgroundBorderColor ?? '#212121',\n textBackgroundBorderRadius = theme?.textBackgroundBorderRadius ?? 4,\n textBackgroundBorderWidth = theme?.textBackgroundBorderWidth ?? 1,\n textBackgroundPadding = theme?.textBackgroundPadding ?? 2,\n } = annotationVerticalLine\n\n const dataset = advancedVSeed.dataset.flat()\n\n const generateOneMarkLine = (x: number | string) => ({\n positions: (datum: Datum[], series: ICartesianSeries) => {\n const regionStart = series.getRegion()?.getLayoutStartPoint()\n const xAxisHelper = series.getXAxisHelper()\n const yAxisHelper = series.getYAxisHelper()\n const xPos = xAxisHelper.getScale!(0).scale(x) + regionStart.x\n const yRange = yAxisHelper.getScale!(0).range()\n\n return [\n { x: xPos, y: yRange ? yRange[0] + regionStart.y : 0 },\n {\n x: xPos,\n y: yRange ? yRange[1] + regionStart.y : 0,\n },\n ]\n },\n zIndex: ANNOTATION_Z_INDEX,\n line: {\n style: {\n visible: lineVisible,\n stroke: lineColor,\n lineStyle: lineStyle,\n lineWidth: lineWidth,\n lineDash: lineStyle === 'dashed' ? [5, 2] : lineStyle === 'dotted' ? [2, 5] : [0],\n },\n },\n label: {\n confine: true,\n text: text,\n position: positionMap[textPosition || 'insideEnd'],\n style: {\n opacity: 0.95,\n dx: 5,\n visible: true,\n stroke: textBackgroundColor,\n lineWidth: 1,\n textAlign: textAlign,\n textBaseline: textBaseline,\n fill: textColor,\n fontSize: textFontSize,\n fontWeight: textFontWeight,\n },\n labelBackground: {\n visible: textBackgroundVisible,\n padding: textBackgroundPadding,\n style: {\n opacity: 0.95,\n dx: 5,\n cornerRadius: textBackgroundBorderRadius,\n fill: textBackgroundColor,\n fillOpacity: 1,\n stroke: textBackgroundBorderColor,\n lineWidth: textBackgroundBorderWidth,\n },\n },\n },\n startSymbol: {\n visible: theme?.startSymbolVisible ?? true,\n symbolType: theme?.startSymbolType ?? 'triangleDown',\n size: 5 + (lineWidth || 1),\n style: {\n dy: -3,\n fill: lineColor,\n },\n },\n endSymbol: {\n visible: theme?.endSymbolVisible ?? false,\n symbolType: theme?.endSymbolType ?? 'arrow',\n size: 10 + (lineWidth || 1),\n style: {\n dy: 4,\n fill: lineColor,\n },\n },\n })\n\n if ((!selectorPoint && isArray(xValue)) || isString(xValue) || isNumber(xValue)) {\n const xValueArr = Array.isArray(xValue) ? xValue : [xValue]\n return xValueArr.map(generateOneMarkLine)\n }\n\n const selectedData = selectorPoint ? dataset.filter((datum) => selector(datum, selectorPoint)) : []\n\n return selectedData.map((datum) => {\n if (datum[unfoldInfo.encodingX]) {\n return generateOneMarkLine(datum[unfoldInfo.encodingX] as string)\n }\n if (datum[foldInfo.measureValue]) {\n return generateOneMarkLine(datum[foldInfo.measureValue] as string)\n }\n return {}\n })\n }) as IMarkLineSpec[]\n\n const specMarkLine = ((spec as ILineChartSpec).markLine as IMarkLineSpec[]) || []\n const newMarkLine = [...specMarkLine, ...(markLine || [])]\n\n return {\n ...spec,\n markLine: newMarkLine,\n }\n}\n","import type { Datum, ICartesianSeries, ILineChartSpec, IMarkLineSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { SpecPipe } from 'src/types'\nimport { isArray, isNumber, isString } from 'remeda'\nimport { ANNOTATION_Z_INDEX } from '../../../../utils/constant'\n\nexport const annotationHorizontalLine: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { annotation, datasetReshapeInfo, config } = advancedVSeed\n const { foldInfo, unfoldInfo } = datasetReshapeInfo[0]\n\n if (!annotation || !annotation.annotationHorizontalLine) {\n return spec\n }\n const theme = config?.[vseed.chartType as 'column']?.annotation?.annotationHorizontalLine\n const { annotationHorizontalLine } = annotation\n const annotationHorizontalLineList = Array.isArray(annotationHorizontalLine)\n ? annotationHorizontalLine\n : [annotationHorizontalLine]\n\n const positionMap = {\n outsideStart: 'start',\n outsideEnd: 'end',\n outsideMiddle: 'middle',\n insideStart: 'insideStartTop',\n insideMiddle: 'insideMiddleTop',\n insideEnd: 'insideEndTop',\n }\n\n const markLine = annotationHorizontalLineList.flatMap((annotationHorizontalLine) => {\n const {\n selector: selectorPoint,\n yValue,\n text = '',\n textPosition = 'insideEnd',\n textColor = theme?.textColor ?? '#ffffff',\n textFontSize = theme?.textFontSize ?? 12,\n textFontWeight = theme?.textFontWeight ?? 400,\n textAlign = 'right',\n textBaseline = 'bottom',\n\n lineColor = theme?.lineColor ?? '#212121',\n lineStyle = theme?.lineStyle ?? 'dashed',\n lineVisible = theme?.lineStyle ?? true,\n lineWidth = theme?.lineWidth ?? 1,\n\n textBackgroundVisible = theme?.textBackgroundVisible ?? true,\n textBackgroundColor = theme?.textBackgroundColor ?? '#212121',\n textBackgroundBorderColor = theme?.textBackgroundBorderColor ?? '#212121',\n textBackgroundBorderRadius = theme?.textBackgroundBorderRadius ?? 4,\n textBackgroundBorderWidth = theme?.textBackgroundBorderWidth ?? 1,\n textBackgroundPadding = theme?.textBackgroundPadding ?? 2,\n } = annotationHorizontalLine\n\n const dataset = advancedVSeed.dataset.flat()\n\n const generateOneMarkLine = (y: string | number) => {\n return {\n positions: (datum: Datum[], series: ICartesianSeries) => {\n const regionStart = series.getRegion()?.getLayoutStartPoint()\n const xAxisHelper = series.getXAxisHelper()\n const yAxisHelper = series.getYAxisHelper()\n const yPos = yAxisHelper.getScale!(0).scale(y) + regionStart.y\n const xRange = xAxisHelper.getScale!(0).range()\n\n return [\n { x: xRange ? xRange[0] + regionStart.x : 0, y: yPos },\n {\n x: xRange ? xRange[1] + regionStart.x : 0,\n y: yPos,\n },\n ]\n },\n zIndex: ANNOTATION_Z_INDEX,\n line: {\n style: {\n visible: lineVisible,\n stroke: lineColor,\n lineWidth: lineWidth,\n lineDash: lineStyle === 'dashed' ? [5, 2] : lineStyle === 'dotted' ? [2, 5] : [0],\n },\n },\n label: {\n confine: true,\n text: text,\n position: positionMap[textPosition || 'insideEnd'],\n style: {\n opacity: 0.95,\n visible: true,\n dy: 4,\n stroke: textBackgroundColor,\n lineWidth: 1,\n textAlign: textAlign,\n textBaseline: textBaseline,\n fill: textColor,\n fontSize: textFontSize,\n fontWeight: textFontWeight,\n },\n labelBackground: {\n visible: textBackgroundVisible,\n padding: textBackgroundPadding,\n style: {\n opacity: 0.95,\n dy: 4,\n cornerRadius: textBackgroundBorderRadius,\n fill: textBackgroundColor,\n stroke: textBackgroundBorderColor,\n lineWidth: textBackgroundBorderWidth,\n fillOpacity: 1,\n },\n },\n },\n startSymbol: {\n visible: theme?.startSymbolVisible ?? true,\n symbolType: theme?.startSymbolType ?? 'triangleDown',\n size: 5 + (lineWidth || 1),\n style: {\n dx: 3,\n fill: lineColor,\n },\n },\n endSymbol: {\n visible: theme?.endSymbolVisible ?? false,\n symbolType: theme?.endSymbolType ?? 'arrow',\n size: 10 + (lineWidth || 1),\n style: {\n dx: -4,\n fill: lineColor,\n },\n },\n }\n }\n if ((!selectorPoint && isArray(yValue)) || isString(yValue) || isNumber(yValue)) {\n const yValueArr = Array.isArray(yValue) ? yValue : [yValue]\n return yValueArr.map(generateOneMarkLine)\n }\n\n const selectedData = selectorPoint ? dataset.filter((datum) => selector(datum, selectorPoint)) : []\n\n return selectedData.map((datum) => {\n if (datum[unfoldInfo.encodingY]) {\n return generateOneMarkLine(datum[unfoldInfo.encodingY] as string)\n }\n if (datum[foldInfo.measureValue]) {\n return generateOneMarkLine(datum[foldInfo.measureValue] as string)\n }\n return {}\n })\n }) as IMarkLineSpec[]\n const specMarkLine = ((spec as ILineChartSpec).markLine as IMarkLineSpec[]) || []\n const newMarkLine = [...specMarkLine, ...(markLine || [])]\n return {\n ...spec,\n markLine: newMarkLine,\n }\n}\n","import type { ICartesianSeries, ILineChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, SpecPipe } from 'src/types'\nimport { isSubset } from './utils'\nimport { ANNOTATION_Z_INDEX } from '../../../../utils/constant'\n\nexport const annotationArea: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { annotation, config } = advancedVSeed\n\n if (!annotation || !annotation.annotationArea) {\n return spec\n }\n\n const theme = config?.[vseed.chartType as 'column']?.annotation?.annotationArea\n const { annotationArea } = annotation\n const annotationAreaList = Array.isArray(annotationArea) ? annotationArea : [annotationArea]\n\n const positionMap = {\n top: 'insideTop',\n topRight: 'insideTopRight',\n topLeft: 'insideTopLeft',\n bottom: 'insideBottom',\n bottomLeft: 'insideBottomLeft',\n bottomRight: 'insideBottomRight',\n left: 'insideLeft',\n right: 'insideRight',\n }\n\n const markArea = annotationAreaList.flatMap((annotationArea) => {\n const {\n selector: selectorPoint,\n text = '',\n textPosition = 'top',\n textColor = theme?.textColor ?? '#ffffff',\n textFontSize = theme?.textFontSize ?? 12,\n textFontWeight = theme?.textFontWeight ?? 400,\n textAlign = 'center',\n textBaseline = 'top',\n\n textBackgroundVisible = theme?.textBackgroundVisible ?? true,\n textBackgroundColor = theme?.textBackgroundColor ?? '#191d24',\n textBackgroundBorderColor = theme?.textBackgroundBorderColor ?? '#191d24',\n textBackgroundBorderWidth = theme?.textBackgroundBorderWidth ?? 1,\n textBackgroundBorderRadius = theme?.textBackgroundBorderRadius ?? 4,\n textBackgroundPadding = theme?.textBackgroundPadding ?? 4,\n\n areaColor = theme?.areaColor ?? '#888888',\n areaColorOpacity = theme?.areaColorOpacity ?? 0.15,\n areaBorderColor = theme?.areaBorderColor ?? '#888888',\n areaBorderRadius = theme?.areaBorderRadius ?? 4,\n areaBorderWidth = theme?.areaBorderWidth ?? 1,\n areaLineDash = theme?.areaLineDash,\n\n outerPadding = theme?.outerPadding ?? 4,\n } = annotationArea\n\n const dataset = advancedVSeed.dataset.flat()\n const selectedData = selectorPoint ? dataset.filter((datum) => selector(datum, selectorPoint)) : []\n\n const labelPosition = positionMap[textPosition || 'top']\n const isBottom = labelPosition.toLocaleLowerCase().includes('bottom')\n\n return {\n zIndex: ANNOTATION_Z_INDEX,\n regionRelative: true,\n positions: (data: Datum[], context: ICartesianSeries) => {\n const positionData = data.filter((item) => selectedData.some((datum) => isSubset(datum, item)))\n const xyList = positionData.map((datum) => context.dataToPosition(datum) as { x: number; y: number })\n\n const yAxisHelper = context.getYAxisHelper() as unknown as {\n getBandwidth: (depth?: number) => number\n getScale: () => {\n range: () => number[]\n }\n }\n const xAxisHelper = context.getXAxisHelper() as unknown as {\n getBandwidth: (depth?: number) => number\n getScale: () => {\n range: () => number[]\n }\n }\n\n if (typeof xAxisHelper?.getBandwidth === 'function') {\n const yScale = yAxisHelper.getScale()\n\n const minX = Math.min(...xyList.map((item) => item.x)) - (outerPadding || 4)\n const maxX = Math.max(...xyList.map((item) => item.x)) + (outerPadding || 4)\n const minY = Math.min(...yScale.range())\n const maxY = Math.max(...yScale.range())\n return [\n // 左上\n {\n x: minX,\n y: minY,\n },\n // 右上\n {\n x: maxX,\n y: minY,\n },\n // 右下\n {\n x: maxX,\n y: maxY,\n },\n // 左下\n {\n x: minX,\n y: maxY,\n },\n ]\n }\n\n if (typeof yAxisHelper?.getBandwidth === 'function') {\n const xScale = xAxisHelper.getScale()\n\n const minY = Math.min(...xyList.map((item) => item.y)) - (outerPadding || 4)\n const maxY = Math.max(...xyList.map((item) => item.y)) + (outerPadding || 4)\n const minX = Math.min(...xScale.range())\n const maxX = Math.max(...xScale.range())\n\n return [\n // 左上\n {\n x: minX,\n y: minY,\n },\n // 右上\n {\n x: maxX,\n y: minY,\n },\n // 右下\n {\n x: maxX,\n y: maxY,\n },\n // 左下\n {\n x: minX,\n y: maxY,\n },\n ]\n }\n\n return []\n },\n label: {\n position: labelPosition,\n visible: true,\n text: text,\n style: {\n opacity: 0.95,\n dy: isBottom ? -(textFontSize || 12) * 2 : 0,\n textAlign: textAlign,\n textBaseline: textBaseline,\n fill: textColor,\n stroke: textBackgroundColor,\n lineWidth: 1,\n fontSize: textFontSize,\n fontWeight: textFontWeight,\n },\n\n labelBackground: {\n visible: textBackgroundVisible,\n padding: textBackgroundPadding,\n style: {\n opacity: 0.95,\n dy: isBottom ? -(textFontSize || 12) * 2 : 0,\n cornerRadius: textBackgroundBorderRadius ?? 4,\n fill: textBackgroundColor,\n stroke: textBackgroundBorderColor,\n lineWidth: textBackgroundBorderWidth,\n fillOpacity: 1,\n },\n },\n },\n area: {\n style: {\n visible: true,\n fill: areaColor,\n fillOpacity: areaColorOpacity,\n stroke: areaBorderColor,\n lineWidth: areaBorderWidth,\n cornerRadius: areaBorderRadius,\n lineDash: areaLineDash,\n },\n },\n }\n }) as ILineChartSpec['markArea']\n\n return {\n ...spec,\n markArea: markArea,\n }\n}\n","import type { ICartesianSeries, IChart, ILineChartSpec, IVChart } from '@visactor/vchart'\nimport { array, clamper, Color as VUtilColor } from '@visactor/vutils'\nimport { isNullish, isNumber, isPlainObject } from 'remeda'\nimport type { AnnotationHorizontalLine, SpecPipe, Color } from 'src/types'\n\ninterface SplitConfig {\n points: { x: number; y: number }[]\n splitCoordinate: number\n lineStroke: {\n gradient: string\n x0: number\n x1: number\n y0: number\n y1: number\n stops: {\n color: string\n offset: number\n }[]\n }\n areaFill: {\n gradient: string\n x0: number\n x1: number\n y0: number\n y1: number\n stops: {\n color: string\n offset: number\n }[]\n }\n}\n\nconst formatGradientStops = (stops: { color: string; offset: number }[]) => {\n const firstInvalidateIndex = stops.findIndex((stop) => stop.offset < 0 || stop.offset > 1)\n\n if (firstInvalidateIndex >= 0) {\n if (stops[firstInvalidateIndex].offset > 1) {\n const newStops = stops.slice(0, firstInvalidateIndex + 1)\n newStops[newStops.length - 1].offset = 1\n\n return newStops\n }\n const newStops = stops.slice(firstInvalidateIndex + 1)\n\n newStops[0].offset = 0\n return newStops\n }\n\n return stops\n}\n\nexport const splitLine: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { annotation, chartType, datasetReshapeInfo } = advancedVSeed\n\n if (!annotation || !annotation.annotationHorizontalLine) {\n return spec\n }\n const baseConfig = advancedVSeed.config[chartType] as { color: Color }\n\n const splitLineConfig = array(annotation.annotationHorizontalLine).find(\n (item) => !!(item as AnnotationHorizontalLine).splitLine,\n ) as AnnotationHorizontalLine | undefined\n\n const splitValue = +(splitLineConfig?.yValue as number | string)\n\n if (Number.isNaN(splitValue) || !isNumber(splitValue)) {\n return spec\n }\n const result = { ...spec } as Partial<ILineChartSpec>\n const colorTheme = baseConfig?.color ?? {}\n const colorConfig = {\n positiveColor: colorTheme.positiveColor || 'red',\n negativeColor: colorTheme.negativeColor || 'green',\n ...(isPlainObject(splitLineConfig?.splitLine) ? splitLineConfig?.splitLine : {}),\n }\n\n const groupMark = {\n type: 'group',\n name: 'annotationHorizontalLine-splitLine',\n zIndex: 300,\n style: {\n splitConfig: (datum: any, ctx: any) => {\n const vchart = ctx.vchart as IVChart\n const chart = vchart.getChart() as IChart\n const lineSeries = chart.getAllSeries().find((s) => s.type === 'line' || s.type === 'area') as ICartesianSeries\n\n if (!lineSeries) {\n return\n }\n const lineMark = lineSeries.getMarkInName('line') ?? lineSeries.getMarkInName('area')\n\n if (!lineMark) {\n return\n }\n const lineGraphics = lineMark.getGraphics()\n\n if (!lineGraphics || lineGraphics.length !== 1 || !lineGraphics[0]) {\n return\n }\n const points = ((lineGraphics[0].attribute as any).points ?? []) as { x: number; y: number }[]\n\n if ((lineGraphics[0].attribute as any).segments?.length) {\n ;((lineGraphics[0].attribute as any).segments as any[]).forEach(\n (seg: { points: { x: number; y: number }[] }) => {\n seg.points.forEach((pt: { x: number; y: number }) => {\n points.push({ x: pt.x, y: pt.y })\n })\n },\n )\n }\n\n if (!points || !points.length) {\n return\n }\n const scale = lineSeries.getYAxisHelper().getScale!(0)\n const splitCoordinate = scale.scale(splitValue)\n const minY = Math.min(...points.map((p) => p.y))\n const maxY = Math.max(...points.map((p) => p.y))\n const ratio = (splitCoordinate - minY) / (maxY - minY)\n\n const lineStroke = {\n gradient: 'linear',\n x0: 0,\n x1: 0,\n y0: 0,\n y1: 1,\n stops: formatGradientStops([\n {\n color: colorConfig.positiveColor,\n offset: 0,\n },\n {\n color: colorConfig.positiveColor,\n offset: ratio,\n },\n {\n color: colorConfig.negativeColor,\n offset: ratio + 0.0000001,\n },\n {\n color: colorConfig.negativeColor,\n offset: 1,\n },\n ]),\n }\n const areaFill = {\n gradient: 'linear',\n x0: 0,\n x1: 0,\n y0: 0,\n y1: 1,\n stops: formatGradientStops([\n {\n color: colorConfig.positiveColor,\n offset: 0,\n },\n {\n color: new VUtilColor(colorConfig.positiveColor).setOpacity(0).toRGBA(),\n offset: ratio,\n },\n {\n offset: ratio + 0.0000001,\n color: new VUtilColor(colorConfig.negativeColor).setOpacity(0).toRGBA(),\n },\n {\n color: colorConfig.negativeColor,\n offset: 1,\n },\n ]),\n }\n const attrs: any = {\n segments: null,\n points,\n }\n\n if (lineGraphics[0].type === 'area') {\n attrs.stroke = lineStroke\n attrs.fill = areaFill\n } else {\n attrs.stroke = lineStroke\n }\n\n lineGraphics[0].setAttributes(attrs as unknown as Record<string, any>)\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n lineGraphics[0].setFinalAttributes?.(attrs)\n const start = lineSeries.getRegion().getLayoutStartPoint()\n const range = scale.range() as number[]\n\n return {\n points: points.map((entry) => ({ x: entry.x + start.x, y: entry.y + start.y })),\n splitCoordinate: clamper(range[0], range[range.length - 1])(splitCoordinate as number) + start.y,\n areaFill,\n lineStroke,\n } as SplitConfig\n },\n },\n children: [\n {\n type: 'area',\n interactive: false,\n zIndex: 500,\n style: {\n fillOpacity: 0.5,\n points: (datum: any, ctx: any, opt: any) => {\n const parentNode = opt.mark?._product?.parent\n\n if (parentNode?.attribute?.splitConfig) {\n const { points, splitCoordinate } = parentNode.attribute.splitConfig as SplitConfig\n\n return points.map((entry: { x: number; y: number }) => {\n return {\n ...entry,\n y1: splitCoordinate,\n }\n })\n }\n\n return []\n },\n fill: (datum: any, ctx: any, opt: any) => {\n const parentNode = opt.mark?._product?.parent\n\n if (parentNode?.attribute?.splitConfig) {\n const { areaFill } = parentNode.attribute.splitConfig as SplitConfig\n\n return areaFill\n }\n\n return\n },\n },\n },\n ],\n }\n\n if (!result.customMark) {\n result.customMark = []\n }\n\n ;(result.customMark as any[]).push(groupMark)\n\n const seriesSpec =\n result.type === 'line' || result.type === 'area'\n ? result\n : result.series?.find((s) => s.type === 'line' || s.type === 'area')\n\n if (seriesSpec) {\n if (!seriesSpec.point) {\n seriesSpec.point = {}\n }\n if (!seriesSpec.line) {\n seriesSpec.line = {}\n }\n\n if (!seriesSpec.point.style) {\n seriesSpec.point.style = {}\n }\n if (!seriesSpec.line.style) {\n seriesSpec.line.style = {}\n }\n\n const measureValueKey = datasetReshapeInfo[0].foldInfo.measureValue\n\n seriesSpec.point.style.fill = (datum) => {\n return datum?.[measureValueKey] >= splitValue ? colorConfig.positiveColor : colorConfig.negativeColor\n }\n seriesSpec.line.style.stroke = (datum) => {\n return datum?.[measureValueKey] >= splitValue ? colorConfig.positiveColor : colorConfig.negativeColor\n }\n if (seriesSpec.label && (seriesSpec.label as any).visible && isNullish((seriesSpec.label as any).style?.fill)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n ;(seriesSpec.label as any).style = {\n ...(seriesSpec.label as any).style,\n fill: (datum: any) => {\n return datum?.[measureValueKey] >= splitValue ? colorConfig.positiveColor : colorConfig.negativeColor\n },\n }\n }\n }\n\n return result\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { SpecPipe } from 'src/types'\n\nexport const initPivot: SpecPipe = (spec) => {\n const result = { ...spec } as PivotChartConstructorOptions\n\n return {\n ...result,\n animation: true,\n rows: [],\n columns: [],\n indicators: [],\n records: [],\n widthMode: 'standard',\n autoFillWidth: true,\n defaultHeaderColWidth: 'auto',\n defaultColWidth: 200,\n\n heightMode: 'standard',\n autoFillHeight: true,\n defaultRowHeight: 100,\n defaultHeaderRowHeight: 'auto',\n\n indicatorsAsCol: false,\n select: {\n highlightMode: 'cell',\n headerSelectMode: 'inline',\n },\n hover: {\n highlightMode: 'cross',\n },\n tooltip: {\n isShowOverflowTextTooltip: true,\n },\n corner: {\n titleOnDimension: 'row',\n },\n animationAppear: {\n duration: 600,\n type: 'all',\n direction: 'row',\n },\n }\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport { isCombination, isPivot } from 'src/pipeline/utils'\nimport type { Config, SpecPipe } from 'src/types'\nimport { isNullish } from 'remeda'\n\nexport const pivotGridStyle: SpecPipe = (spec, context) => {\n const { vseed, advancedVSeed } = context\n const { config, chartType } = advancedVSeed\n const themConfig = (config?.[chartType] as Config['line'])?.pivotGrid ?? {}\n\n const onlyCombination = !isPivot(vseed) && isCombination(vseed)\n\n const result = { ...spec } as PivotChartConstructorOptions\n const transparent = 'rgba(0,0,0,0)'\n\n const borderColor = themConfig.borderColor ?? '#e3e5eb'\n const bodyFontColor = themConfig.bodyFontColor ?? '#141414'\n const headerFontColor = themConfig.headerFontColor ?? '#21252c'\n const headerBackgroundColor = themConfig.headerBackgroundColor ?? 'rgba(0,0,0,0)'\n const hoverHeaderBackgroundColor = onlyCombination\n ? transparent\n : (themConfig.hoverHeaderBackgroundColor ?? '#D9DDE4')\n const hoverHeaderInlineBackgroundColor = onlyCombination\n ? transparent\n : (themConfig.hoverHeaderInlineBackgroundColor ?? '#D9DDE455')\n const outlineBorderLineWidth = themConfig.outlineBorderLineWidth ?? 0\n const frameCornerRadius = themConfig.frameCornerRadius ?? 0\n\n if (!isNullish(themConfig.minChartWidth)) {\n result.defaultColWidth = themConfig.minChartWidth\n }\n\n if (!isNullish(themConfig.minChartHeight)) {\n result.defaultRowHeight = themConfig.minChartHeight\n }\n\n return {\n ...result,\n theme: {\n underlayBackgroundColor: transparent,\n bodyStyle: {\n borderColor,\n color: bodyFontColor,\n borderLineWidth: (arg: { row: number; col: number }) => {\n const noYAxis =\n chartType === 'pie' ||\n chartType === 'rose' ||\n chartType === 'donut' ||\n chartType === 'funnel' ||\n chartType === 'radar' ||\n chartType === 'roseParallel'\n\n return [\n arg.row === 0 ? outlineBorderLineWidth : 1,\n outlineBorderLineWidth,\n 0,\n arg.col === 0 || (noYAxis && arg.col === 1) ? outlineBorderLineWidth : 1,\n ]\n },\n bgColor: transparent,\n hover: {\n cellBgColor: 'transparent',\n },\n },\n headerStyle: {\n borderColor,\n fontSize: 12,\n // borderLineWidth: [outlineBorderLineWidth, outlineBorderLineWidth, 1, 1],\n borderLineWidth: (arg: { row: number; col: number }) => {\n return [outlineBorderLineWidth, outlineBorderLineWidth, 1, arg.col === 0 ? outlineBorderLineWidth : 1]\n },\n color: headerFontColor,\n textAlign: 'center',\n bgColor: headerBackgroundColor,\n hover: {\n cellBgColor: hoverHeaderBackgroundColor,\n inlineRowBgColor: hoverHeaderInlineBackgroundColor || undefined,\n inlineColumnBgColor: hoverHeaderInlineBackgroundColor || undefined,\n },\n },\n rowHeaderStyle: {\n borderColor,\n fontSize: 12,\n color: headerFontColor,\n padding: [0, 12, 0, 4],\n borderLineWidth: (arg: { row: number }) => {\n return [arg.row === 0 ? outlineBorderLineWidth : 1, 1, 0, outlineBorderLineWidth]\n },\n bgColor: headerBackgroundColor,\n hover: {\n cellBgColor: hoverHeaderBackgroundColor,\n inlineRowBgColor: hoverHeaderInlineBackgroundColor || undefined,\n inlineColumnBgColor: hoverHeaderInlineBackgroundColor || undefined,\n },\n },\n cornerHeaderStyle: {\n borderColor,\n textAlign: 'center',\n fontSize: 12,\n color: headerFontColor,\n padding: [0, 12, 0, 4],\n fontWeight: 'bold',\n borderLineWidth: [outlineBorderLineWidth, 1, 1, outlineBorderLineWidth],\n bgColor: headerBackgroundColor,\n frameStyle: {\n borderColor,\n },\n hover: {\n cellBgColor: hoverHeaderBackgroundColor,\n inlineRowBgColor: hoverHeaderInlineBackgroundColor || undefined,\n inlineColumnBgColor: hoverHeaderInlineBackgroundColor || undefined,\n },\n },\n cornerLeftBottomCellStyle: {\n borderColor,\n borderLineWidth: [outlineBorderLineWidth, 0, outlineBorderLineWidth, outlineBorderLineWidth],\n bgColor: headerBackgroundColor,\n frameStyle: {\n borderColor,\n borderLineWidth: [1, 0, outlineBorderLineWidth, outlineBorderLineWidth],\n },\n hover: {\n cellBgColor: hoverHeaderBackgroundColor,\n },\n },\n cornerRightTopCellStyle: {\n borderColor,\n borderLineWidth: [outlineBorderLineWidth, outlineBorderLineWidth, 1, 1],\n frameStyle: {\n borderColor,\n borderLineWidth: 0,\n },\n bgColor: headerBackgroundColor,\n hover: {\n cellBgColor: hoverHeaderBackgroundColor,\n },\n },\n rightFrozenStyle: {\n borderColor,\n bgColor: headerBackgroundColor,\n borderLineWidth: (arg: { row: number }) => {\n return [arg.row === 0 ? outlineBorderLineWidth : 1, outlineBorderLineWidth, 0, 1]\n },\n frameStyle: {\n borderLineWidth: 0,\n },\n hover: {\n borderLineWidth: 0,\n cellBgColor: hoverHeaderBackgroundColor,\n },\n },\n cornerRightBottomCellStyle: {\n borderColor,\n bgColor: headerBackgroundColor,\n borderLineWidth: [1, outlineBorderLineWidth, outlineBorderLineWidth, 1],\n frameStyle: {\n borderColor,\n borderLineWidth: [1, outlineBorderLineWidth, outlineBorderLineWidth, 1],\n },\n hover: {\n cellBgColor: hoverHeaderBackgroundColor,\n },\n },\n\n bottomFrozenStyle: {\n borderColor,\n borderLineWidth: [1, outlineBorderLineWidth, outlineBorderLineWidth, 1],\n bgColor: headerBackgroundColor,\n hover: {\n cellBgColor: hoverHeaderBackgroundColor,\n },\n },\n selectionStyle: {\n cellBgColor: '',\n cellBorderColor: '',\n },\n frameStyle: {\n borderColor,\n cornerRadius: frameCornerRadius,\n borderLineWidth: outlineBorderLineWidth,\n },\n },\n }\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport { execPipeline } from '../../../../utils'\nimport type { Dataset, Encoding, MeasureGroup, SpecPipe, SpecPipeline, SpecPipelineContext } from 'src/types'\nimport { unique } from 'remeda'\n\nexport const pivotIndicators =\n (chartPipeline: SpecPipeline): SpecPipe =>\n (spec, context): Partial<PivotChartConstructorOptions> => {\n const result = { ...spec } as PivotChartConstructorOptions\n const { advancedVSeed } = context\n const { measures, datasetReshapeInfo, dataset, encoding } = advancedVSeed\n\n const colorItems = unique(datasetReshapeInfo.flatMap((d) => d.unfoldInfo.colorItems))\n const allMeasureIds = unique(datasetReshapeInfo.flatMap((d) => Object.keys(d.foldInfo.foldMap || {})))\n\n const indicators = datasetReshapeInfo.map((reshapeInfo, index) => {\n const measureGroup = measures?.find((d) => d.id === reshapeInfo.id) as MeasureGroup\n const subMeasuresId = (measureGroup?.children || []).map((d) => d.id)\n const invalideMeasuresIds = allMeasureIds.filter((id) => !subMeasuresId.includes(id))\n\n const newDataset = dataset[index] as Dataset\n const newDatasetReshapeInfo = [\n {\n ...reshapeInfo,\n unfoldInfo: { ...reshapeInfo.unfoldInfo, colorItems },\n },\n ]\n const newContext: SpecPipelineContext = {\n ...context,\n advancedVSeed: {\n ...advancedVSeed,\n datasetReshapeInfo: newDatasetReshapeInfo,\n encoding: Object.keys(encoding).reduce((res, key) => {\n res[key as keyof Encoding] = encoding[key as keyof Encoding]?.filter((e) => {\n return !invalideMeasuresIds.includes(e)\n }) as string[]\n\n return res\n }, {} as Encoding),\n dataset: newDataset,\n },\n }\n\n const chartSpec = execPipeline(chartPipeline, newContext, {})\n return {\n indicatorKey: reshapeInfo.id,\n title: measureGroup?.alias,\n cellType: 'chart',\n chartModule: 'vchart',\n chartSpec: chartSpec,\n style: {\n padding: [1, 1, 0, 1],\n },\n }\n })\n\n return {\n ...result,\n indicators: indicators,\n } as Partial<PivotChartConstructorOptions>\n }\n\nexport const pivotIndicatorsAsRow: SpecPipe = (spec) => {\n const result = { ...spec } as PivotChartConstructorOptions\n\n return {\n ...result,\n indicatorsAsCol: false,\n }\n}\n\nexport const pivotIndicatorsAsCol: SpecPipe = (spec) => {\n const result = { ...spec } as PivotChartConstructorOptions\n\n return {\n ...result,\n indicatorsAsCol: true,\n }\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { Spec, SpecPipe } from 'src/types'\n\nexport const datasetPivot: SpecPipe = (spec, context): Spec => {\n const result = { ...spec } as PivotChartConstructorOptions\n const { advancedVSeed } = context\n const { dataset, datasetReshapeInfo } = advancedVSeed\n const records = dataset.reduce((pre, cur, index) => {\n const id = datasetReshapeInfo[index].id\n pre[id] = cur\n return pre\n }, {})\n return {\n ...result,\n records: records,\n } as PivotChartConstructorOptions\n}\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport { BAND_AXIS_INNER_OFFSET_IN_PIVOT } from 'src/pipeline/utils/constant'\nimport type { Config, SpecPipe } from 'src/types'\n\nexport const pivotAxisStyle = (axisStyle: SpecPipe): SpecPipe => {\n return (spec, context) => {\n const result = axisStyle(spec, context) as ILineChartSpec\n\n if (result.axes) {\n const { advancedVSeed } = context\n const { config, chartType } = advancedVSeed\n const themConfig = (config?.[chartType] as Config['line'])?.pivotGrid ?? {}\n\n result.axes.forEach((axis: any) => {\n axis.domainLine = {\n visible: false,\n }\n\n if (themConfig.chartGridColor && axis.grid && axis.grid.visible && axis.grid.style) {\n axis.grid.style.stroke = themConfig.chartGridColor\n }\n\n if (themConfig.axisLabelColor && axis.label && axis.label.visible && axis.label.style) {\n axis.label.style.fill = themConfig.axisLabelColor\n }\n\n if (axis.type === 'band') {\n if (axis.orient === 'left' || axis.orient === 'right') {\n axis.innerOffset = {\n top: BAND_AXIS_INNER_OFFSET_IN_PIVOT,\n bottom: BAND_AXIS_INNER_OFFSET_IN_PIVOT,\n }\n } else if (axis.orient === 'top' || axis.orient === 'bottom') {\n axis.innerOffset = {\n left: BAND_AXIS_INNER_OFFSET_IN_PIVOT,\n right: BAND_AXIS_INNER_OFFSET_IN_PIVOT,\n }\n }\n }\n })\n }\n\n return result\n }\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { Dimensions, SpecPipe } from 'src/types'\n\nexport const pivotRowDimensions: SpecPipe = (spec, context): Partial<PivotChartConstructorOptions> => {\n const result = { ...spec } as PivotChartConstructorOptions\n const { advancedVSeed } = context\n const dimensions = advancedVSeed.dimensions as Dimensions\n if (!dimensions) {\n return result\n }\n const rowDimensions = dimensions.filter((dim) => dim.encoding === 'row')\n const rows = rowDimensions.map((dim) => ({\n dimensionKey: dim.id,\n title: dim.alias || dim.id,\n }))\n return {\n ...result,\n rows: rows,\n } as Partial<PivotChartConstructorOptions>\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { Dimensions, SpecPipe } from 'src/types'\n\nexport const pivotColumnDimensions: SpecPipe = (spec, context): Partial<PivotChartConstructorOptions> => {\n const result = { ...spec } as PivotChartConstructorOptions\n const { advancedVSeed } = context\n const dimensions = advancedVSeed.dimensions as Dimensions\n\n if (!dimensions) {\n return result\n }\n const columnDimensions = dimensions.filter((dim) => dim.encoding === 'column')\n const columns = columnDimensions.map((dim) => ({\n dimensionKey: dim.id,\n title: dim.alias || dim.id,\n })) as unknown\n\n return {\n ...result,\n columns: columns,\n } as Partial<PivotChartConstructorOptions>\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { SpecPipe, Config } from 'src/types'\n\nexport const pivotTitle: SpecPipe = (spec, context): Partial<PivotChartConstructorOptions> => {\n const result = { ...spec } as PivotChartConstructorOptions\n const { advancedVSeed } = context\n const { config, chartType } = advancedVSeed\n const themConfig = (config?.[chartType] as Config['line'])?.pivotGrid ?? {}\n\n if (result.columns && result.columns.length > 0) {\n result.title = {\n text: (spec as unknown as { columns: { title: string }[] }).columns.map((entry) => entry.title).join('/'),\n align: 'center',\n orient: 'top',\n padding: [2, 0, 0, 0],\n textStyle: {\n fontSize: themConfig.titleFontSize ?? 12,\n fill: themConfig.titleFontColor ?? '#000',\n fontWeight: themConfig.titleFontWeight ?? 'bold',\n },\n }\n }\n\n return result\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport { unique } from 'remeda'\nimport type { Color, Legend, SpecPipe } from 'src/types'\nimport { createSpecifiedForColorMapping } from '../color/color'\n\nexport const pivotDiscreteLegend: SpecPipe = (spec, context): Partial<PivotChartConstructorOptions> => {\n const result = { ...spec } as PivotChartConstructorOptions\n const { advancedVSeed } = context\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { legend: Legend; color: Color }\n\n if (!baseConfig || !baseConfig.legend) {\n return result\n }\n\n const { datasetReshapeInfo } = advancedVSeed\n\n const colorItems = unique(\n datasetReshapeInfo.flatMap((d) => {\n return d.unfoldInfo.colorItems\n }),\n )\n\n const colorIdMap = datasetReshapeInfo.reduce<Record<string, { id: string; alias: string }>>((prev, cur) => {\n return { ...prev, ...cur.unfoldInfo.colorIdMap }\n }, {})\n\n const { legend, color } = baseConfig\n const { colorScheme, colorMapping } = color\n\n const colorSpecified = createSpecifiedForColorMapping(colorMapping, colorIdMap, colorItems)\n\n const {\n enable,\n position = 'bottom',\n labelFontColor,\n labelColor,\n labelFontSize = 12,\n labelFontWeight = 400,\n maxSize = 1,\n border,\n shapeType = 'rectRound',\n } = legend || {}\n\n const orient = ['bottom', 'bottomLeft', 'bottomRight', 'bl', 'br'].includes(position)\n ? 'bottom'\n : ['top', 'topLeft', 'topRight', 'tl', 'tr'].includes(position)\n ? 'top'\n : ['left', 'leftTop', 'leftBottom', 'lt', 'lb'].includes(position)\n ? 'left'\n : 'right'\n\n const legendPosition = ['topLeft', 'bottomLeft', 'leftTop', 'rightTop', 'lt', 'rt', 'tl', 'bl'].includes(position)\n ? 'start'\n : ['topRight', 'bottomRight', 'leftBottom', 'rightBottom', 'lb', 'rb', 'rt', 'br'].includes(position)\n ? 'end'\n : 'middle'\n\n const legends = {\n padding: 0,\n visible: enable,\n type: 'discrete',\n orient,\n position: legendPosition,\n maxCol: Math.max(1, maxSize),\n maxRow: Math.max(1, maxSize),\n data: colorItems.map((d: string, index: number) => {\n const color = colorSpecified?.[d] ?? colorScheme?.[index % colorScheme.length]\n return {\n label: d,\n shape: {\n outerBorder: border\n ? {\n stroke: color,\n distance: 3,\n lineWidth: 1,\n }\n : undefined,\n fill: color,\n },\n }\n }),\n\n item: {\n focus: true,\n maxWidth: '30%',\n focusIconStyle: {\n size: labelFontSize + 2,\n fill: labelColor || labelFontColor,\n fontWeight: labelFontWeight,\n },\n shape: {\n space: border ? 6 : 4,\n style: {\n symbolType: shapeType,\n size: border ? 8 : 10,\n },\n },\n label: {\n formatMethod: (value: string) => {\n return colorIdMap[value]?.alias ?? value\n },\n style: {\n fontSize: labelFontSize,\n fill: labelColor || labelFontColor,\n fontWeight: labelFontWeight,\n },\n },\n background: {\n state: {\n selectedHover: {\n fill: labelColor || labelFontColor,\n fillOpacity: 0.05,\n },\n },\n },\n },\n }\n return { ...result, legends } as Partial<PivotChartConstructorOptions>\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { Color, Legend, SpecPipe } from 'src/types'\n\nexport const pivotColorLegend: SpecPipe = (spec, context): Partial<PivotChartConstructorOptions> => {\n const result = { ...spec } as PivotChartConstructorOptions\n const { advancedVSeed } = context\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { legend: Legend; color: Color }\n\n if (!baseConfig || !baseConfig.legend) {\n return result\n }\n\n const { datasetReshapeInfo } = advancedVSeed\n const max = Math.max(...datasetReshapeInfo.map((d) => d.foldInfo.statistics.colorMin))\n const min = Math.min(...datasetReshapeInfo.map((d) => d.foldInfo.statistics.colorMax))\n const { legend, color } = baseConfig\n const { colorScheme, linearColorScheme } = color\n\n const {\n enable,\n position = 'bottom',\n labelFontColor,\n labelColor,\n labelFontSize = 12,\n labelFontWeight = 400,\n } = legend || {}\n\n const orient = ['bottom', 'bottomLeft', 'bottomRight', 'bl', 'br'].includes(position)\n ? 'bottom'\n : ['top', 'topLeft', 'topRight', 'tl', 'tr'].includes(position)\n ? 'top'\n : ['left', 'leftTop', 'leftBottom', 'lt', 'lb'].includes(position)\n ? 'left'\n : 'right'\n\n const legendPosition = ['topLeft', 'bottomLeft', 'leftTop', 'rightTop', 'lt', 'rt', 'tl', 'bl'].includes(position)\n ? 'start'\n : ['topRight', 'bottomRight', 'leftBottom', 'rightBottom', 'lb', 'rb', 'rt', 'br'].includes(position)\n ? 'end'\n : 'middle'\n\n const legends = {\n visible: enable,\n type: 'color',\n orient,\n position: legendPosition,\n\n colors: linearColorScheme || colorScheme || [],\n value: [min, max],\n min: min,\n max: max,\n\n maxWidth: '30%',\n handlerText: {\n visible: true,\n style: {\n fill: labelColor || labelFontColor,\n fontSize: labelFontSize,\n fontWeight: labelFontWeight,\n },\n },\n } as unknown\n return { ...result, legends } as Partial<PivotChartConstructorOptions>\n}\n","import type { Spec, SpecPipe, SpecPipeline, SpecPipelineContext } from 'src/types'\nimport { execPipeline, isPivotChart } from '../../../../utils'\n\nexport const pivotAdapter = (pipeline: SpecPipeline, pivotPipeline: SpecPipeline): SpecPipe => {\n return (spec, context) => {\n const { vseed } = context\n const usePivotChart = isPivotChart(vseed)\n\n if (usePivotChart) {\n return execPipeline<Spec, SpecPipelineContext>(pivotPipeline, context, spec)\n }\n\n return execPipeline<Spec, SpecPipelineContext>(pipeline, context, spec)\n }\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n xBand,\n yLinear,\n initLine,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n initPivot,\n datasetPivot,\n pivotDiscreteLegend,\n pivotIndicators,\n pivotAdapter,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n pointStyle,\n lineStyle,\n verticalCrosshairLine,\n pointStateDimensionHover,\n progressive,\n colorAdapter,\n linearColor,\n colorLegend,\n colorLineStyleFill,\n colorPointStyleFill,\n pivotColorLegend,\n pivotTitle,\n pivotAxisStyle,\n splitLine,\n} from '../pipes'\n\nconst line: SpecPipeline = [\n initLine,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n verticalCrosshairLine,\n colorAdapter(discreteLegend, colorLegend),\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n label,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n splitLine,\n]\n\nconst pivotLine: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initLine,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n pivotAxisStyle(yLinear),\n verticalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n label,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n splitLine,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const lineSpecPipeline: SpecPipeline = [pivotAdapter(line, pivotLine)]\n","import { lineAdvancedPipeline, lineSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerLine = () => {\n Builder._advancedPipelineMap['line'] = lineAdvancedPipeline\n Builder._specPipelineMap['line'] = lineSpecPipeline\n}\n","import { unique } from 'remeda'\nimport { MeasureId } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\nimport { addColorToEncoding } from './color'\n\nexport const defaultEncodingForColumn: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding)\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForColumn: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding, measures.length > 1)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\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) => {\n const onlyMeasureId = dimensions.length === 1 && dimensions.find((item) => item.id === MeasureId)\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.x = uniqueDimIds.slice(0, 1) // 第一个维度放置于X轴\n encoding.color = uniqueDimIds.slice(onlyMeasureId ? 0 : 1) // 第二个之后的维度用于颜色\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 // x\n encoding.x = unique(dimensions.filter((item) => item.encoding === 'xAxis').map((item) => item.id))\n if (encoding.x.length === 0) {\n encoding.x = [dimensions[0].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.y = unique(measures.filter((item) => item.encoding === 'yAxis' || !item.encoding).map((item) => item.id))\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n // y\n encoding.y = unique(measures.filter((item) => item.encoding === 'yAxis' || !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])\n}\n","import { pick } from 'remeda'\nimport { replaceNullToUndefined } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed, Config } from 'src/types'\n\nexport const columnConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const pickedConfig = pick(vseed, [\n 'backgroundColor',\n 'color',\n 'label',\n 'legend',\n 'tooltip',\n 'xAxis',\n 'yAxis',\n 'crosshairRect',\n 'stackCornerRadius',\n 'barMaxWidth',\n 'barGapInGroup',\n ]) as Config['column']\n\n const config = replaceNullToUndefined(pickedConfig)\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n","import type { AdvancedPipe, RegressionLineConfig } from 'src/types'\n\nexport const regressionLine: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n let keys = [] as string[]\n\n if (vseed.chartType === 'histogram') {\n keys = ['kdeRegressionLine', 'ecdfRegressionLine']\n } else if (vseed.chartType === 'scatter') {\n keys = ['linearRegressionLine', 'lowessRegressionLine', 'polynomialRegressionLine', 'logisticRegressionLine']\n } else if (vseed.chartType === 'column') {\n keys = ['polynomialRegressionLine']\n }\n\n if (keys.length) {\n const regressionLineConfig: RegressionLineConfig = {}\n let hasLine = false\n\n keys.forEach((key: string) => {\n if ((vseed as any)[key]) {\n hasLine = true\n regressionLineConfig[key as keyof RegressionLineConfig] = (vseed as any)[key]\n }\n })\n\n return hasLine\n ? {\n ...advancedVSeed,\n regressionLine: regressionLineConfig,\n }\n : advancedVSeed\n }\n\n return advancedVSeed\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n columnConfig,\n markStyle,\n annotation,\n sortXBandAxis,\n sortLegend,\n encodingForColumn,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n encodingAdapter,\n defaultEncodingForColumn,\n deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n regressionLine,\n} from '../pipes'\n\nexport const columnAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n\n encodingAdapter(\n [defaultEncodingForColumn, buildMeasures],\n [\n encodingForColumn,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n sortXBandAxis,\n sortLegend,\n columnConfig,\n theme,\n markStyle,\n annotation,\n regressionLine,\n]\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initColumn: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n result.type = 'bar'\n result.direction = 'vertical'\n result.xField = unfoldInfo.encodingX\n result.yField = foldInfo.measureValue\n result.seriesField = unfoldInfo.encodingColorId\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { Datum, SpecPipe, StackCornerRadius } from 'src/types'\n\nexport const stackCornerRadius: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const stackCornerRadius = advancedVSeed.config?.[chartType as 'column']?.stackCornerRadius as StackCornerRadius\n const { datasetReshapeInfo } = advancedVSeed\n const { foldInfo } = datasetReshapeInfo[0]\n\n if (chartType === 'dualAxis' && (spec as any).type !== 'bar') {\n return spec\n }\n\n return {\n ...spec,\n stackCornerRadius: (_: unknown, datum: Datum) => {\n if (datum[foldInfo.measureValue] > 0) {\n return stackCornerRadius\n }\n\n return 0\n },\n }\n}\n","import { isNullish } from 'remeda'\nimport type { BarMaxWidth, SpecPipe } from 'src/types'\n\nexport const barMaxWidth: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const barMaxWidth = advancedVSeed.config?.[chartType as 'column']?.barMaxWidth as BarMaxWidth\n\n if (!isNullish(barMaxWidth)) {\n return {\n ...spec,\n barMaxWidth,\n }\n }\n\n return spec\n}\n","import type { IAreaChartSpec, IBarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const stackInverse: SpecPipe = (spec) => {\n const result = { ...spec } as IAreaChartSpec | IBarChartSpec\n result.stackInverse = true\n return result\n}\n","import type { ICartesianCrosshairSpec, ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const verticalCrosshairRect: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n\n const config = advancedVSeed.config?.[chartType as 'column']?.crosshairRect\n if (!config) {\n return result\n }\n\n if (!result.crosshair) {\n result.crosshair = {}\n }\n\n const visible = config.visible || true\n const rectColor = config.rectColor || undefined\n const labelColor = config.labelColor || undefined\n const labelVisible = config.labelVisible || false\n const labelBackgroundColor = config.labelBackgroundColor || undefined\n\n const crosshair = result.crosshair as ICartesianCrosshairSpec\n crosshair.xField = {\n visible,\n line: {\n type: 'rect',\n style: {\n lineWidth: 0,\n opacity: 0.2,\n fill: rectColor,\n },\n },\n label: {\n visible: labelVisible,\n labelBackground: {\n visible: labelVisible,\n style: {\n fill: labelBackgroundColor,\n },\n },\n style: {\n fill: labelColor,\n },\n },\n }\n\n return result\n}\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from './colorAdapter'\n\nexport const colorBarStyleFill = (stylePipe: SpecPipe): SpecPipe => {\n return (spec, context) => {\n const result = stylePipe(spec, context) as IBarChartSpec\n\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed, vseed)) {\n if (result?.bar?.style) {\n result.bar.style.fill = {\n field: unfoldInfo.encodingColor,\n scale: 'color',\n }\n }\n }\n\n return result\n }\n}\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { BarStyle, Datum, SpecPipe } from 'src/types'\nimport { isEmpty, isNullish } from 'remeda'\n\nexport const barStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle, dataset = [] } = advancedVSeed\n const { barStyle } = markStyle\n\n const showStroke = dataset.length <= 100\n\n const result = {\n ...spec,\n bar: {\n style: {\n visible: true,\n fillOpacity: 1,\n lineWidth: showStroke ? 1 : 0,\n },\n state: {\n hover: {\n fillOpacity: 0.6,\n },\n },\n },\n } as IBarChartSpec\n\n if (isNullish(barStyle) || isEmpty(barStyle)) {\n return result\n }\n\n const barStyles = (Array.isArray(barStyle) ? barStyle : [barStyle]) as BarStyle[]\n\n const customMap = barStyles.reduce<object>((result, style, index) => {\n const {\n barBorderColor,\n barBorderStyle,\n barBorderWidth = 1,\n barColor,\n barColorOpacity,\n barBorderOpacity,\n barRadius,\n barVisible = true,\n } = style\n\n const lineDash = barBorderStyle === 'dashed' ? [5, 2] : barBorderStyle === 'dotted' ? [2, 5] : [0, 0]\n return {\n ...result,\n [`custom${index + 1}`]: {\n // 优先级: 后者覆盖前者\n level: index + 1,\n filter: (datum: Datum) => {\n if (selector(datum, style.selector)) {\n return true\n }\n return false\n },\n style: {\n visible: barVisible,\n fill: barColor,\n fillOpacity: barColorOpacity,\n cornerRadius: barRadius,\n lineWidth: barBorderWidth,\n stroke: barBorderColor,\n strokeOpacity: barBorderOpacity,\n lineDash: lineDash,\n },\n },\n }\n }, {})\n\n result.bar!.state = {\n ...result.bar!.state,\n ...customMap,\n }\n\n return result\n}\n","import { type ICartesianSeries, type ILineChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, SpecPipe, VSeed } from 'src/types'\nimport { isSubset } from './utils'\nimport { ANNOTATION_Z_INDEX } from '../../../../utils/constant'\nimport { isBarLikeChart } from 'src/pipeline/utils/chatType'\n\nexport const annotationAreaBand: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { annotation, config } = advancedVSeed\n\n if (!annotation || !annotation.annotationArea) {\n return spec\n }\n const theme = config?.[vseed.chartType as 'column']?.annotation?.annotationArea\n const { annotationArea } = annotation\n const annotationAreaList = Array.isArray(annotationArea) ? annotationArea : [annotationArea]\n\n const positionMap = {\n top: 'insideTop',\n topRight: 'insideTopRight',\n topLeft: 'insideTopLeft',\n bottom: 'insideBottom',\n bottomLeft: 'insideBottomLeft',\n bottomRight: 'insideBottomRight',\n left: 'insideLeft',\n right: 'insideRight',\n }\n const defaultOptions = isBarLikeChart(advancedVSeed as VSeed)\n ? {\n textPosition: 'right',\n textAlign: 'right',\n }\n : {\n textPosition: 'top',\n textAlign: 'center',\n }\n\n const markArea = annotationAreaList.flatMap((annotationArea) => {\n const {\n selector: selectorPoint,\n text = '',\n textColor = theme?.textColor ?? '#ffffff',\n textFontSize = theme?.textFontSize ?? 12,\n textFontWeight = theme?.textFontWeight ?? 400,\n textAlign = defaultOptions.textAlign,\n textBaseline = 'middle',\n\n textBackgroundVisible = theme?.textBackgroundVisible ?? true,\n textBackgroundColor = theme?.textBackgroundColor ?? '#191d24',\n textBackgroundBorderColor = theme?.textBackgroundBorderColor ?? '#191d24',\n textBackgroundBorderWidth = theme?.textBackgroundBorderWidth ?? 1,\n textBackgroundBorderRadius = theme?.textBackgroundBorderRadius ?? 4,\n textBackgroundPadding = theme?.textBackgroundPadding ?? 4,\n\n areaColor = theme?.areaColor ?? '#888888',\n areaColorOpacity = theme?.areaColorOpacity ?? 0.15,\n areaBorderColor = theme?.areaBorderColor ?? '#888888',\n areaBorderRadius = theme?.areaBorderRadius ?? 4,\n areaBorderWidth = theme?.areaBorderWidth ?? 1,\n areaLineDash = theme?.areaLineDash,\n\n outerPadding = theme?.outerPadding ?? 4,\n } = annotationArea\n const textPosition: string = annotationArea.textPosition ?? defaultOptions.textPosition\n\n const dy = textPosition.includes('bottom') ? -1 * textFontSize! : 0\n\n const dataset = advancedVSeed.dataset.flat()\n const selectedData = selectorPoint ? dataset.filter((datum) => selector(datum, selectorPoint)) : []\n\n return {\n zIndex: ANNOTATION_Z_INDEX,\n regionRelative: true,\n positions: (data: Datum[], context: ICartesianSeries & { _scaleConfig?: { bandPosition?: number } }) => {\n const positionData = data.filter((item) => selectedData.some((datum) => isSubset(datum, item)))\n const xyList = positionData.map((datum) => context.dataToPosition(datum) as { x: number; y: number })\n\n const bandPosition = context?._scaleConfig?.bandPosition || 0\n\n const yAxisHelper = context.getYAxisHelper() as unknown as {\n getBandwidth: (depth?: number) => number\n getScale: () => {\n range: () => number[]\n }\n }\n const xAxisHelper = context.getXAxisHelper() as unknown as {\n getBandwidth: (depth?: number) => number\n getScale: () => {\n range: () => number[]\n }\n }\n\n if (typeof xAxisHelper?.getBandwidth === 'function') {\n const depth = context.fieldX.length ?? 0\n const xBandWidth = xAxisHelper?.getBandwidth?.(depth - 1)\n const yScale = yAxisHelper.getScale()\n const startX = Math.min(...xyList.map((item) => item.x)) - (outerPadding || 4)\n const endX = Math.max(...xyList.map((item) => item.x)) + (outerPadding || 4)\n\n const width = endX - startX + xBandWidth\n const middleX = (endX + startX) / 2 + xBandWidth * (0.5 - bandPosition)\n\n const minX = middleX - width / 2\n const maxX = middleX + width / 2\n\n const minY = Math.min(...yScale.range())\n const maxY = Math.max(...yScale.range())\n\n return [\n // 左上\n {\n x: minX,\n y: minY,\n },\n // 右上\n {\n x: maxX,\n y: minY,\n },\n // 右下\n {\n x: maxX,\n y: maxY,\n },\n // 左下\n {\n x: minX,\n y: maxY,\n },\n ]\n }\n\n if (typeof yAxisHelper?.getBandwidth === 'function') {\n const depth = context.fieldY.length ?? 0\n const yBandWidth = yAxisHelper?.getBandwidth?.(depth - 1)\n const xScale = xAxisHelper.getScale()\n\n const startY = Math.min(...xyList.map((item) => item.y)) - (outerPadding || 4)\n const endY = Math.max(...xyList.map((item) => item.y)) + (outerPadding || 4)\n const width = endY - startY + yBandWidth\n const middleY = (endY + startY) / 2 + yBandWidth * (0.5 - bandPosition)\n\n const minY = middleY - width / 2\n const maxY = middleY + width / 2\n\n const minX = Math.min(...xScale.range())\n const maxX = Math.max(...xScale.range())\n\n return [\n // 左上\n {\n x: minX,\n y: minY,\n },\n // 右上\n {\n x: maxX,\n y: minY,\n },\n // 右下\n {\n x: maxX,\n y: maxY,\n },\n // 左下\n {\n x: minX,\n y: maxY,\n },\n ]\n }\n\n return []\n },\n label: {\n position: positionMap[textPosition as 'bottom'],\n visible: true,\n text: text,\n style: {\n opacity: 0.95,\n dy: dy,\n textAlign: textAlign,\n textBaseline: textBaseline,\n stroke: textBackgroundColor,\n lineWidth: 1,\n fill: textColor,\n fontSize: textFontSize,\n fontWeight: textFontWeight,\n },\n\n labelBackground: {\n visible: textBackgroundVisible,\n padding: textBackgroundPadding,\n style: {\n opacity: 0.95,\n dy: dy,\n cornerRadius: textBackgroundBorderRadius ?? 4,\n fill: textBackgroundColor,\n stroke: textBackgroundBorderColor,\n lineWidth: textBackgroundBorderWidth,\n fillOpacity: 1,\n },\n },\n },\n area: {\n style: {\n visible: true,\n fill: areaColor,\n fillOpacity: areaColorOpacity,\n stroke: areaBorderColor,\n lineWidth: areaBorderWidth,\n cornerRadius: areaBorderRadius,\n lineDash: areaLineDash,\n },\n },\n }\n }) as ILineChartSpec['markArea']\n\n return {\n ...spec,\n markArea: markArea,\n }\n}\n","import type { Datum } from '@visactor/vchart'\n\nexport const defaultRegressionLineColor = (datum: Datum, ctx: any, opt: any): string | undefined => {\n const parentNode = opt.mark?._product?.parent\n if (parentNode?.attribute?.data) {\n return parentNode.attribute.data.color\n }\n return undefined\n}\n\nexport const defaultRegressionLineLabelX = (datum: any, ctx: any, opt: any) => {\n const parentNode = opt.mark?._product?.parent\n\n if (parentNode?.attribute?.data?.linePoints) {\n const points = parentNode.attribute.data.linePoints\n return points[points.length - 1]?.x\n }\n\n return undefined\n}\n\nexport const defaultRegressionLineLabelY = (datum: any, ctx: any, opt: any) => {\n const parentNode = opt.mark?._product?.parent\n\n if (parentNode?.attribute?.data?.linePoints) {\n const points = parentNode.attribute.data.linePoints\n return points[points.length - 1]?.y\n }\n\n return undefined\n}\n","import type { IBarChartSpec, ICartesianSeries, IChart, IVChart } from '@visactor/vchart'\nimport { isNullish } from 'remeda'\nimport { array, clamper, regressionPolynomial } from '@visactor/vutils'\nimport type { Datum, SpecPipe, RegressionLineConfig, LinearRegressionLine, PolynomialRegressionLine } from 'src/types'\nimport { defaultRegressionLineColor } from './common'\n\nexport const columnPolynomialRegressionLine: SpecPipe = (spec, context): Partial<IBarChartSpec> => {\n const result = { ...spec } as Partial<IBarChartSpec>\n const { advancedVSeed } = context\n const { chartType, regressionLine } = advancedVSeed\n const lineTheme = advancedVSeed.config[chartType as 'scatter']?.regressionLine as RegressionLineConfig\n\n if (!regressionLine || !regressionLine.polynomialRegressionLine) {\n return result\n }\n\n const lineList = array(regressionLine.polynomialRegressionLine)\n\n if (!result.customMark) {\n result.customMark = []\n }\n\n lineList.forEach((line, lineIndex) => {\n const theme = (lineTheme.linearRegressionLine ?? {}) as LinearRegressionLine\n const {\n color,\n lineWidth,\n lineDash,\n text,\n textColor,\n textFontSize,\n textFontWeight,\n confidenceIntervalOpacity,\n confidenceIntervalVisible = theme.confidenceIntervalVisible,\n } = line as LinearRegressionLine\n\n const childrenMarks: any[] = []\n\n ;(result.customMark as any[]).push({\n type: 'group',\n interactive: false,\n zIndex: 500,\n name: `polynomialRegressionLine-${lineIndex}`,\n style: {\n data: (datum: any, ctx: any) => {\n const vchart = ctx.vchart as IVChart\n const chart = vchart.getChart() as IChart\n const s = chart.getAllSeries()[0] as ICartesianSeries\n\n if (s) {\n const rect = s.getRegion().getLayoutRect()\n\n if (rect.width === 0 || rect.height === 0) {\n return null\n }\n\n const start = s.getRegion().getLayoutStartPoint()\n const yClamper = clamper(start.y, start.y + rect.height)\n const data = s.getViewData()?.latestData as Datum[]\n const fieldX = s.fieldX?.[0]\n const fieldY = s.fieldY?.[0]\n const xValues = s.getRawDataStatisticsByField(fieldX).values as string[]\n\n if (!fieldX || !fieldY || !data || data.length <= 2 || xValues.length <= 2) {\n return null\n }\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const { confidenceInterval, evaluateGrid } = regressionPolynomial(\n xValues.map((xVal, index: number) => {\n const filteredData = data.filter((d) => d[fieldX] === xVal)\n\n return {\n x: index,\n y: Math.max(...filteredData.map((d) => d[fieldY] as number)),\n }\n }),\n undefined,\n undefined,\n {\n degree: (line as PolynomialRegressionLine).degree ?? 2,\n },\n )\n const N = xValues.length\n const xAxisHelper = s.getXAxisHelper()\n const halfBandWidth = xAxisHelper ? xAxisHelper.getBandwidth!(0) / 2 : 0\n const lineData = evaluateGrid(N)\n const linePoints = lineData.map((datum: Datum, index: number) => {\n const d = { [fieldX]: xValues[index], [fieldY]: datum.y }\n return {\n x: s.dataToPositionX(d)! + start.x + halfBandWidth,\n y: yClamper(s.dataToPositionY(d)! + start.y),\n }\n })\n const result: {\n linePoints: { x: number; y: number }[]\n areaPoints?: { x: number; y: number; y1: number }[]\n color: string\n } = {\n linePoints,\n color: s.getOption().globalScale.getScale('color')?.scale(s.getSeriesKeys()[0]),\n }\n\n if (confidenceIntervalVisible) {\n const intervalData = confidenceInterval(N)\n\n result.areaPoints = intervalData.map((datum: Datum, index: number) => {\n const d = { [fieldX]: xValues[index], [fieldY]: datum.lower }\n return {\n x: s.dataToPositionX(d)! + start.x + halfBandWidth,\n y: yClamper(s.dataToPositionY(d)! + start.y),\n y1: yClamper(s.dataToPositionY({ [fieldY]: datum.upper })! + start.y),\n }\n })\n }\n\n return result\n }\n return null\n },\n },\n children: childrenMarks,\n })\n\n if (confidenceIntervalVisible) {\n childrenMarks.push({\n type: 'area',\n interactive: false,\n zIndex: 500,\n style: {\n lineWidth: lineWidth ?? theme.lineWidth,\n lineDash: lineDash ?? theme.lineDash,\n fillOpacity: confidenceIntervalOpacity ?? theme.confidenceIntervalOpacity,\n fill: color ?? defaultRegressionLineColor,\n points: (datum: any, ctx: any, opt: any) => {\n const parentNode = opt.mark?._product?.parent\n\n if (parentNode?.attribute?.data) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return parentNode.attribute.data.areaPoints\n }\n\n return []\n },\n },\n })\n }\n\n childrenMarks.push({\n type: 'line',\n interactive: false,\n zIndex: 500,\n style: {\n lineWidth: lineWidth ?? theme.lineWidth,\n lineDash: lineDash ?? theme.lineDash,\n stroke: color ?? defaultRegressionLineColor,\n points: (datum: any, ctx: any, opt: any) => {\n const parentNode = opt.mark?._product?.parent\n\n if (parentNode?.attribute?.data) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return parentNode.attribute.data.linePoints\n }\n\n return []\n },\n },\n })\n\n if (!isNullish(text)) {\n childrenMarks.push({\n type: 'text',\n interactive: false,\n zIndex: 500,\n style: {\n textAlign: 'end',\n fill: textColor ?? theme.textColor,\n fontSize: textFontSize ?? theme.textFontSize,\n fontWeight: textFontWeight ?? theme.textFontWeight,\n text: text,\n x: (datum: any, ctx: any, opt: any) => {\n const parentNode = opt.mark?._product?.parent\n\n if (parentNode?.attribute?.data?.linePoints) {\n const points = parentNode.attribute.data.linePoints\n return points[points.length - 1]?.x\n }\n\n return undefined\n },\n y: (datum: any, ctx: any, opt: any) => {\n const parentNode = opt.mark?._product?.parent\n\n if (parentNode?.attribute?.data?.linePoints) {\n const points = parentNode.attribute.data.linePoints\n return points[points.length - 1]?.y\n }\n\n return undefined\n },\n },\n })\n }\n })\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n initColumn,\n datasetXY,\n xBand,\n yLinear,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n pivotAdapter,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n stackInverse,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n verticalCrosshairRect,\n stackCornerRadius,\n progressive,\n colorAdapter,\n linearColor,\n colorLegend,\n colorBarStyleFill,\n pivotColorLegend,\n barMaxWidth,\n columnPolynomialRegressionLine,\n pivotAxisStyle,\n pivotTitle,\n} from '../pipes'\n\nconst column: SpecPipeline = [\n initColumn,\n stackCornerRadius,\n barMaxWidth,\n stackInverse,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairRect,\n colorAdapter(discreteLegend, colorLegend),\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n columnPolynomialRegressionLine,\n]\n\nconst pivotColumn: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initColumn,\n stackCornerRadius,\n barMaxWidth,\n stackInverse,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n pivotAxisStyle(yLinear),\n label,\n tooltip,\n verticalCrosshairRect,\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n columnPolynomialRegressionLine,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const columnSpecPipeline = [pivotAdapter(column, pivotColumn)]\n","import { columnAdvancedPipeline, columnSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerColumn = () => {\n Builder._advancedPipelineMap['column'] = columnAdvancedPipeline\n Builder._specPipelineMap['column'] = columnSpecPipeline\n}\n","import { pick } from 'remeda'\nimport { replaceNullToUndefined } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed, Config } from 'src/types'\n\nexport const pieConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const pickedConfig = pick(vseed, ['backgroundColor', 'color', 'label', 'legend', 'tooltip']) as Config['pie']\n\n const config = replaceNullToUndefined(pickedConfig)\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n","import { lineConfig } from './line'\nimport { columnConfig } from './column'\nimport { pieConfig } from './pie'\nimport { dualAxisConfig } from './dualAxis'\nimport { scatterConfig } from './scatter'\nimport { histogramConfig } from './histogram'\nimport { boxplotConfig } from './boxplot'\n\nexport { lineConfig, columnConfig, pieConfig, dualAxisConfig, scatterConfig, histogramConfig, boxplotConfig }\n\n// area\nexport const areaConfig = lineConfig\nexport const areaPercentConfig = lineConfig\n\n// bar\nexport const barConfig = columnConfig\nexport const barParallelConfig = columnConfig\nexport const barPercentConfig = columnConfig\n\n// column\nexport const columnParallelConfig = columnConfig\nexport const columnPercentConfig = columnConfig\n\n// donut, rose\nexport const donutConfig = pieConfig\nexport const roseConfig = pieConfig\nexport const roseParallelConfig = pieConfig\nexport const radarConfig = pieConfig\n\n// funnel, heatmap\nexport const funnelConfig = pieConfig\nexport const heatmapConfig = pieConfig\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n columnParallelConfig,\n markStyle,\n annotation,\n sortXBandAxis,\n sortLegend,\n encodingForColumn,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n encodingAdapter,\n defaultEncodingForColumn,\n deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const columnParallelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n\n encodingAdapter(\n [defaultEncodingForColumn, buildMeasures],\n [\n encodingForColumn,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n sortXBandAxis,\n sortLegend,\n columnParallelConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport { isDeepEqual } from 'remeda'\nimport { MeasureId } from 'src/dataReshape'\nimport type { SpecPipe } from 'src/types'\n\nexport const initColumnParallel: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo, encoding } = advancedVSeed\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n const sameDimensionsMode = isDeepEqual(encoding.x, encoding.color)\n\n result.type = 'bar'\n result.direction = 'vertical'\n result.xField = [unfoldInfo.encodingX]\n\n if (!sameDimensionsMode) {\n result.xField.push(unfoldInfo.encodingDetail)\n\n if (encoding.detail?.[0] === MeasureId && encoding.y?.length === 1) {\n result.xField.pop()\n }\n }\n\n result.yField = foldInfo.measureValue\n result.seriesField = unfoldInfo.encodingColorId\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import { isNullish } from 'remeda'\nimport type { BarGapInGroup, SpecPipe } from 'src/types'\n\nexport const barGapInGroup: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const barGapInGroup = advancedVSeed.config?.[chartType as 'columnParallel']?.barGapInGroup as BarGapInGroup\n\n if (!isNullish(barGapInGroup)) {\n return {\n ...spec,\n barGapInGroup,\n }\n }\n\n return spec\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n xBand,\n yLinear,\n initColumnParallel,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n pivotIndicators,\n initPivot,\n datasetPivot,\n pivotAdapter,\n pivotDiscreteLegend,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n verticalCrosshairRect,\n stackCornerRadius,\n progressive,\n linearColor,\n colorAdapter,\n colorLegend,\n colorBarStyleFill,\n pivotColorLegend,\n barMaxWidth,\n barGapInGroup,\n pivotAxisStyle,\n pivotTitle,\n} from '../pipes'\n\nconst columnParallel: SpecPipeline = [\n initColumnParallel,\n stackCornerRadius,\n barMaxWidth,\n barGapInGroup,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n colorAdapter(discreteLegend, colorLegend),\n verticalCrosshairRect,\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotColumnParallel: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initColumnParallel,\n stackCornerRadius,\n barMaxWidth,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n pivotAxisStyle(yLinear),\n label,\n tooltip,\n verticalCrosshairRect,\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const columnParallelSpecPipeline: SpecPipeline = [pivotAdapter(columnParallel, pivotColumnParallel)]\n","import { columnParallelAdvancedPipeline, columnParallelSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerColumnParallel = () => {\n Builder._advancedPipelineMap['columnParallel'] = columnParallelAdvancedPipeline\n Builder._specPipelineMap['columnParallel'] = columnParallelSpecPipeline\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n columnPercentConfig,\n markStyle,\n annotation,\n sortXBandAxis,\n sortLegend,\n encodingForColumn,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n encodingAdapter,\n defaultEncodingForColumn,\n deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const columnPercentAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n\n encodingAdapter(\n [defaultEncodingForColumn, buildMeasures],\n [\n encodingForColumn,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n sortXBandAxis,\n sortLegend,\n columnPercentConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IAreaChartSpec, IBarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const percent: SpecPipe = (spec) => {\n const result = { ...spec } as IAreaChartSpec | IBarChartSpec\n result.percent = true\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n initColumn,\n datasetXY,\n xBand,\n yLinear,\n percent,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n pivotAdapter,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n stackInverse,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n verticalCrosshairRect,\n stackCornerRadius,\n progressive,\n colorAdapter,\n linearColor,\n colorLegend,\n colorBarStyleFill,\n pivotColorLegend,\n barMaxWidth,\n pivotAxisStyle,\n pivotTitle,\n} from '../pipes'\n\nconst columnPercent: SpecPipeline = [\n initColumn,\n stackCornerRadius,\n stackInverse,\n barMaxWidth,\n colorAdapter(color, linearColor),\n backgroundColor,\n percent,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n colorAdapter(discreteLegend, colorLegend),\n verticalCrosshairRect,\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotColumnPercent: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initColumn,\n stackCornerRadius,\n stackInverse,\n barMaxWidth,\n colorAdapter(color, linearColor),\n percent,\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n pivotAxisStyle(yLinear),\n label,\n tooltip,\n verticalCrosshairRect,\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const columnPercentSpecPipeline: SpecPipeline = [pivotAdapter(columnPercent, pivotColumnPercent)]\n","import { columnPercentAdvancedPipeline, columnPercentSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerColumnPercent = () => {\n Builder._advancedPipelineMap['columnPercent'] = columnPercentAdvancedPipeline\n Builder._specPipelineMap['columnPercent'] = columnPercentSpecPipeline\n}\n","import { unique } from 'remeda'\nimport { MeasureId } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\nimport { addColorToEncoding } from './color'\n\nexport const defaultEncodingForBar: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding)\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForBar: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding, measures.length > 1)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\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) => {\n const onlyMeasureId = dimensions.length === 1 && dimensions.find((item) => item.id === MeasureId)\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.y = uniqueDimIds.slice(0, 1) // 第一个维度放置于X轴\n encoding.color = uniqueDimIds.slice(onlyMeasureId ? 0 : 1) // 第二个之后的维度用于颜色\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 // 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[0].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])\n}\n","import type { AdvancedPipe, Dataset, DatasetReshapeInfo, Line } from 'src/types'\nimport { calcOrder } from './common'\n\nexport const sortYBandAxis: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { sort: sortAxis } = vseed as Line\n const { datasetReshapeInfo, dataset } = advancedVSeed as { datasetReshapeInfo: DatasetReshapeInfo; dataset: Dataset }\n const { unfoldInfo } = datasetReshapeInfo[0]\n const yField = unfoldInfo?.encodingY\n if (!sortAxis || !yField) {\n return advancedVSeed\n }\n if (!result.analysis) result.analysis = {}\n if (!result.analysis.orderMapping) result.analysis.orderMapping = {}\n\n const axisOrderResult = calcOrder(sortAxis, yField, dataset.flat(2))\n\n result.analysis.orderMapping[yField] = axisOrderResult\n\n return result\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n buildMeasures,\n pivotAdapter,\n barConfig,\n markStyle,\n annotation,\n sortYBandAxis,\n sortLegend,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n encodingForBar,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n encodingAdapter,\n defaultEncodingForBar,\n deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const barAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n\n encodingAdapter(\n [defaultEncodingForBar, buildMeasures],\n [\n encodingForBar,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n sortYBandAxis,\n sortLegend,\n barConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initBar: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n result.type = 'bar'\n result.direction = 'horizontal'\n result.yField = unfoldInfo.encodingY\n result.xField = foldInfo.measureValue\n result.seriesField = unfoldInfo.encodingColorId\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { isPivotChart } from 'src/pipeline/utils'\nimport type { SpecPipe } from 'src/types'\n\nexport const datasetYX: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { analysis, datasetReshapeInfo } = advancedVSeed\n\n const { unfoldInfo } = datasetReshapeInfo[0]\n const orderMapping = analysis?.orderMapping || {}\n\n const angle = unfoldInfo.encodingAngle\n const y = unfoldInfo.encodingY\n const colorId = unfoldInfo.encodingColorId\n const id = datasetReshapeInfo[0].id\n\n const fields: Record<string, object> = {}\n if (angle) {\n fields[angle] = {\n sortIndex: 0,\n }\n }\n if (y) {\n const order = orderMapping[y]\n if (order) {\n fields[y] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[y] = {\n sortIndex: 0,\n }\n }\n }\n if (colorId) {\n const order = orderMapping[colorId]\n if (order) {\n fields[colorId] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[colorId] = {\n sortIndex: 0,\n }\n }\n }\n\n return {\n ...spec,\n data: {\n id,\n // 透视表不使用 dataValues\n values: isPivotChart(vseed) ? undefined : advancedVSeed.dataset,\n fields: fields,\n },\n } as ISpec\n}\n","import type { ISpec } from '@visactor/vchart'\nimport type { SpecPipe, XLinearAxis } from 'src/types'\nimport {\n AXIS_LABEL_SPACE,\n createNumFormatter,\n isAreaPercent,\n isBarPercent,\n isColumnPercent,\n LINEAR_AXIS_INNER_OFFSET_TOP,\n} from 'src/pipeline/utils'\nimport { createLinearFormat, createLinearPercentFormat } from './format/linearFormat'\nimport { defaultTitleText } from './title/defaultTitleText'\n\nexport const xLinear: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { encoding, dimensions, measures } = advancedVSeed\n const { chartType } = vseed\n const config = advancedVSeed.config?.[chartType as 'bar']?.xAxis as XLinearAxis\n\n if (!result.axes) {\n result.axes = []\n }\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n\n zero,\n nice,\n inverse,\n max,\n min,\n log,\n logBase = 10,\n autoFormat,\n numFormat = {},\n } = config\n\n const formatter = createNumFormatter(numFormat)\n const percentFormatter = createNumFormatter({\n type: 'percent',\n })\n\n const linearAxis = {\n visible,\n type: log ? 'log' : 'linear',\n base: logBase,\n orient: 'bottom',\n nice,\n zero: log ? false : zero,\n inverse,\n max,\n min,\n label: {\n space: AXIS_LABEL_SPACE,\n visible: label?.visible,\n formatMethod: (value: string) => {\n if (isBarPercent(vseed) || isColumnPercent(vseed) || isAreaPercent(vseed)) {\n return createLinearPercentFormat(value, autoFormat, numFormat, formatter, percentFormatter)\n }\n return createLinearFormat(value, autoFormat, numFormat, formatter)\n },\n style: {\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n },\n title: {\n visible: title?.visible,\n text: title?.titleText || defaultTitleText(measures, dimensions, encoding.x as string[]),\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n lineDash: grid?.gridLineDash,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n innerOffset: {\n right: LINEAR_AXIS_INNER_OFFSET_TOP,\n // left: LINEAR_AXIS_INNER_OFFSET_TOP,\n },\n }\n\n result.axes = [...result.axes, linearAxis] as ISpec['axes']\n\n return result\n}\n","import type { ICartesianBandAxisSpec, ISpec } from '@visactor/vchart'\nimport type { SpecPipe, XBandAxis } from 'src/types'\nimport { defaultTitleText } from './title/defaultTitleText'\nimport { AXIS_LABEL_SPACE } from 'src/pipeline/utils'\n\nexport const yBand: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { measures, dimensions, encoding } = advancedVSeed\n const config = advancedVSeed.config?.[chartType as 'bar']?.yAxis as XBandAxis\n\n if (!result.axes) {\n result.axes = []\n }\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n labelAutoHide,\n labelAutoHideGap,\n labelAutoLimit,\n labelAutoLimitLength = 80,\n labelAutoRotate,\n labelAutoRotateAngleRange,\n } = config\n\n const sampling = !(labelAutoHide || labelAutoRotate || labelAutoLimit)\n\n const bandAxis = {\n visible,\n type: 'band',\n orient: 'left',\n maxWidth: labelAutoLimitLength + 60,\n sampling,\n hover: true,\n label: {\n visible: label?.visible,\n flush: true,\n containerAlign: 'right',\n space: AXIS_LABEL_SPACE,\n style: {\n maxLineWidth: labelAutoLimitLength,\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n // 防重叠相关\n minGap: labelAutoHideGap,\n autoHide: labelAutoHide,\n autoHideMethod: 'greedy',\n autoHideSeparation: labelAutoHideGap,\n autoLimit: labelAutoLimit,\n autoRotate: labelAutoRotate,\n autoRotateAngle: labelAutoRotateAngleRange,\n lastVisible: true,\n },\n title: {\n visible: title?.visible,\n text: title?.titleText || defaultTitleText(measures, dimensions, encoding.y as string[]),\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n lineDash: grid?.gridLineDash,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n paddingInner: [0.15, 0.1],\n paddingOuter: [0.075, 0.1],\n } as ICartesianBandAxisSpec\n\n result.axes = [...result.axes, bandAxis] as ISpec['axes']\n return result\n}\n","import type { ICartesianCrosshairSpec, ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const horizontalCrosshairRect: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n\n const config = advancedVSeed.config?.[chartType as 'column']?.crosshairRect\n if (!config) {\n return result\n }\n\n if (!result.crosshair) {\n result.crosshair = {}\n }\n\n const visible = config.visible || true\n const rectColor = config.rectColor || undefined\n const labelColor = config.labelColor || undefined\n const labelVisible = config.labelVisible || false\n const labelBackgroundColor = config.labelBackgroundColor || undefined\n\n const crosshair = result.crosshair as ICartesianCrosshairSpec\n crosshair.yField = {\n visible,\n line: {\n type: 'rect',\n style: {\n lineWidth: 0,\n opacity: 0.2,\n fill: rectColor,\n },\n },\n label: {\n visible: labelVisible,\n labelBackground: {\n visible: labelVisible,\n style: {\n fill: labelBackgroundColor,\n },\n },\n style: {\n fill: labelColor,\n },\n },\n }\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n initBar,\n datasetYX,\n xLinear,\n yBand,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n pivotAdapter,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotIndicatorsAsCol,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n horizontalCrosshairRect,\n stackCornerRadius,\n progressive,\n colorAdapter,\n linearColor,\n colorLegend,\n colorBarStyleFill,\n pivotColorLegend,\n barMaxWidth,\n pivotAxisStyle,\n pivotTitle,\n} from '../pipes'\n\nconst bar: SpecPipeline = [\n initBar,\n stackCornerRadius,\n barMaxWidth,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetYX,\n progressive,\n xLinear,\n yBand,\n label,\n tooltip,\n colorAdapter(discreteLegend, colorLegend),\n horizontalCrosshairRect,\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotBar: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsCol,\n datasetPivot,\n pivotIndicators([\n initBar,\n stackCornerRadius,\n barMaxWidth,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetYX,\n progressive,\n xLinear,\n pivotAxisStyle(yBand),\n label,\n tooltip,\n colorBarStyleFill(barStyle),\n horizontalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const barSpecPipeline: SpecPipeline = [pivotAdapter(bar, pivotBar)]\n","import { barAdvancedPipeline, barSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerBar = () => {\n Builder._advancedPipelineMap['bar'] = barAdvancedPipeline\n Builder._specPipelineMap['bar'] = barSpecPipeline\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n buildMeasures,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n barParallelConfig,\n markStyle,\n annotation,\n sortYBandAxis,\n sortLegend,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n encodingForBar,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n encodingAdapter,\n defaultEncodingForBar,\n deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const barParallelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n\n encodingAdapter(\n [defaultEncodingForBar, buildMeasures],\n [\n encodingForBar,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n sortYBandAxis,\n sortLegend,\n barParallelConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport { isDeepEqual } from 'remeda'\nimport { MeasureId } from 'src/dataReshape'\nimport type { SpecPipe } from 'src/types'\n\nexport const initBarParallel: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo, encoding } = advancedVSeed\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n const sameDimensionsMode = isDeepEqual(encoding.y, encoding.color)\n\n result.type = 'bar'\n result.direction = 'horizontal'\n\n result.yField = [unfoldInfo.encodingY]\n\n if (!sameDimensionsMode) {\n result.yField.push(unfoldInfo.encodingDetail)\n\n if (encoding.detail?.[0] === MeasureId && encoding.x?.length === 1) {\n result.yField.pop()\n }\n }\n\n result.xField = foldInfo.measureValue\n result.seriesField = unfoldInfo.encodingColorId\n\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetYX,\n xLinear,\n yBand,\n initBarParallel,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n initPivot,\n datasetPivot,\n pivotDiscreteLegend,\n pivotIndicators,\n pivotAdapter,\n pivotIndicatorsAsCol,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n horizontalCrosshairRect,\n stackCornerRadius,\n progressive,\n linearColor,\n colorAdapter,\n colorLegend,\n colorBarStyleFill,\n pivotColorLegend,\n barMaxWidth,\n barGapInGroup,\n pivotAxisStyle,\n pivotTitle,\n} from '../pipes'\n\nconst barParallel: SpecPipeline = [\n initBarParallel,\n stackCornerRadius,\n barMaxWidth,\n barGapInGroup,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetYX,\n progressive,\n xLinear,\n yBand,\n label,\n tooltip,\n colorAdapter(discreteLegend, colorLegend),\n horizontalCrosshairRect,\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotBarParallel: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsCol,\n datasetPivot,\n pivotIndicators([\n initBarParallel,\n stackCornerRadius,\n barMaxWidth,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetYX,\n xLinear,\n pivotAxisStyle(yBand),\n label,\n tooltip,\n colorBarStyleFill(barStyle),\n horizontalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const barParallelSpecPipeline: SpecPipeline = [pivotAdapter(barParallel, pivotBarParallel)]\n","import { barParallelAdvancedPipeline, barParallelSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerBarParallel = () => {\n Builder._advancedPipelineMap['barParallel'] = barParallelAdvancedPipeline\n Builder._specPipelineMap['barParallel'] = barParallelSpecPipeline\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n buildMeasures,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n barPercentConfig,\n markStyle,\n annotation,\n sortYBandAxis,\n sortLegend,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n encodingForBar,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n encodingAdapter,\n defaultEncodingForBar,\n deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const barPercentAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n\n encodingAdapter(\n [defaultEncodingForBar, buildMeasures],\n [\n encodingForBar,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n sortYBandAxis,\n sortLegend,\n barPercentConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { SpecPipeline } from 'src/types'\nimport {\n initBar,\n datasetYX,\n xLinear,\n yBand,\n percent,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n pivotAdapter,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotIndicatorsAsCol,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n horizontalCrosshairRect,\n stackCornerRadius,\n progressive,\n colorAdapter,\n linearColor,\n colorLegend,\n colorBarStyleFill,\n pivotColorLegend,\n barMaxWidth,\n pivotAxisStyle,\n pivotTitle,\n} from '../pipes'\n\nconst barPercent: SpecPipeline = [\n initBar,\n stackCornerRadius,\n barMaxWidth,\n colorAdapter(color, linearColor),\n backgroundColor,\n percent,\n datasetYX,\n progressive,\n xLinear,\n yBand,\n label,\n tooltip,\n colorAdapter(discreteLegend, colorLegend),\n horizontalCrosshairRect,\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotBarPercent: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsCol,\n datasetPivot,\n pivotIndicators([\n initBar,\n stackCornerRadius,\n barMaxWidth,\n colorAdapter(color, linearColor),\n backgroundColor,\n percent,\n datasetYX,\n xLinear,\n pivotAxisStyle(yBand),\n label,\n tooltip,\n colorBarStyleFill(barStyle),\n horizontalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const barPercentSpecPipeline: SpecPipeline = [pivotAdapter(barPercent, pivotBarPercent)]\n","import { barPercentAdvancedPipeline, barPercentSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerBarPercent = () => {\n Builder._advancedPipelineMap['barPercent'] = barPercentAdvancedPipeline\n Builder._specPipelineMap['barPercent'] = barPercentSpecPipeline\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n areaConfig,\n annotation,\n markStyle,\n sortXBandAxis,\n sortLegend,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n buildMeasures,\n encodingForLine,\n defaultMeasures,\n defaultMeasureId,\n defaultDimensions,\n encodingAdapter,\n defaultEncodingForLine,\n deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const areaAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n\n encodingAdapter(\n [defaultEncodingForLine, buildMeasures],\n [\n encodingForLine,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n sortXBandAxis,\n sortLegend,\n areaConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IAreaChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from '../color/colorAdapter'\n\nexport const initArea: SpecPipe = (spec, context) => {\n const result = { ...spec } as IAreaChartSpec\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n result.type = 'area'\n result.direction = 'vertical'\n result.yField = foldInfo.measureValue\n\n result.xField = unfoldInfo.encodingX\n result.seriesField = isLinearColor(advancedVSeed, vseed) ? unfoldInfo.encodingDetail : unfoldInfo.encodingColorId\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { IAreaChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from './colorAdapter'\n\nexport const colorAreaStyleFill = (stylePipe: SpecPipe): SpecPipe => {\n return (spec, context) => {\n const result = stylePipe(spec, context) as IAreaChartSpec\n\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed, vseed)) {\n if (result?.area?.style) {\n result.area.style.fill = {\n field: unfoldInfo.encodingColor,\n scale: 'color',\n }\n }\n }\n\n return result\n }\n}\n","import type { IAreaChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { AreaStyle, Datum, LineStyle, SpecPipe } from 'src/types'\nimport { groupBy, isEmpty, isNullish } from 'remeda'\nimport { getCurveTension, getCurveType } from './curve'\n\nexport const areaStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle, datasetReshapeInfo, dataset } = advancedVSeed\n const { areaStyle, lineStyle } = markStyle\n const { unfoldInfo } = datasetReshapeInfo[0]\n const result = {\n ...spec,\n area: {\n visible: true,\n style: {},\n },\n } as IAreaChartSpec\n\n if (isNullish(areaStyle) || isEmpty(areaStyle)) {\n return result\n }\n\n const areaStyles = (Array.isArray(areaStyle) ? areaStyle : [areaStyle]) as AreaStyle[]\n const lineStyles = (Array.isArray(lineStyle) ? lineStyle : [lineStyle]) as LineStyle[]\n\n const group = unfoldInfo.encodingColorId\n\n const areaGroups = groupBy(dataset, (d) => d[group ?? ''] as string)\n\n const customMap = areaStyles.reduce<object>((result, style, index) => {\n const { areaColor, areaColorOpacity, areaVisible = true } = style\n\n const curveType = getCurveType(context.vseed, lineStyles[index]?.lineSmooth)\n const curveTension = getCurveTension(context.vseed, lineStyles[index]?.lineSmooth)\n\n return {\n ...result,\n [`custom${index + 1}`]: {\n // 优先级: 后者覆盖前者\n level: index + 1,\n filter: (datum: Datum) => {\n const lineData = areaGroups[datum[group ?? ''] as string]\n for (const d of lineData) {\n if (selector(d, style.selector)) {\n return true\n }\n }\n return false\n },\n style: {\n curveType,\n curveTension,\n visible: areaVisible,\n fill: areaColor,\n fillOpacity: areaColorOpacity,\n },\n },\n }\n }, {})\n\n return {\n ...result,\n area: {\n ...result.area,\n visible: true,\n state: {\n ...customMap,\n },\n },\n }\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n xBand,\n yLinear,\n initArea,\n stackInverse,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotAdapter,\n initPivot,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n pointStyle,\n lineStyle,\n areaStyle,\n verticalCrosshairLine,\n pointStateDimensionHover,\n datasetXY,\n progressive,\n colorAdapter,\n linearColor,\n colorLegend,\n colorPointStyleFill,\n colorLineStyleFill,\n colorAreaStyleFill,\n pivotColorLegend,\n pivotAxisStyle,\n pivotTitle,\n splitLine,\n} from '../pipes'\n\nconst area: SpecPipeline = [\n initArea,\n stackInverse,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n colorAdapter(discreteLegend, colorLegend),\n verticalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n splitLine,\n]\n\nconst pivotArea: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initArea,\n colorAdapter(color, linearColor),\n backgroundColor,\n stackInverse,\n datasetXY,\n progressive,\n xBand,\n pivotAxisStyle(yLinear),\n label,\n tooltip,\n verticalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n splitLine,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const areaSpecPipeline = [pivotAdapter(area, pivotArea)]\n","import { areaAdvancedPipeline, areaSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerArea = () => {\n Builder._advancedPipelineMap['area'] = areaAdvancedPipeline\n Builder._specPipelineMap['area'] = areaSpecPipeline\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n areaPercentConfig,\n annotation,\n markStyle,\n sortXBandAxis,\n sortLegend,\n encodingForLine,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n encodingAdapter,\n defaultEncodingForLine,\n deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const areaPercentAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n\n encodingAdapter(\n [defaultEncodingForLine, buildMeasures],\n [\n encodingForLine,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n sortXBandAxis,\n sortLegend,\n areaPercentConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { SpecPipeline } from 'src/types'\nimport {\n percent,\n datasetXY,\n xBand,\n yLinear,\n initArea,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotAdapter,\n initPivot,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n stackInverse,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n pointStyle,\n lineStyle,\n areaStyle,\n verticalCrosshairLine,\n progressive,\n colorLegend,\n colorAdapter,\n linearColor,\n pivotColorLegend,\n pointStateDimensionHover,\n colorPointStyleFill,\n colorLineStyleFill,\n colorAreaStyleFill,\n pivotAxisStyle,\n pivotTitle,\n} from '../pipes'\n\nconst areaPercent: SpecPipeline = [\n initArea,\n stackInverse,\n colorAdapter(color, linearColor),\n backgroundColor,\n percent,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n colorAdapter(discreteLegend, colorLegend),\n verticalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotAreaPercent: SpecPipeline = [\n initPivot,\n\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initArea,\n stackInverse,\n colorAdapter(color, linearColor),\n backgroundColor,\n percent,\n datasetXY,\n progressive,\n xBand,\n pivotAxisStyle(yLinear),\n label,\n tooltip,\n verticalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const areaPercentSpecPipeline = [pivotAdapter(areaPercent, pivotAreaPercent)]\n","import { areaPercentAdvancedPipeline, areaPercentSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerAreaPercent = () => {\n Builder._advancedPipelineMap['areaPercent'] = areaPercentAdvancedPipeline\n Builder._specPipelineMap['areaPercent'] = areaPercentSpecPipeline\n}\n","import { unique } from 'remeda'\nimport { MeasureId } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\n\nexport const defaultEncodingForScatter: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding)\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForScatter: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n // prepare measures and dimensions\n const measures = findAllMeasures(vseedMeasures)\n\n // exist encoding condition\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n\n // encoding for modify in place\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\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 */\nconst generateDefaultDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n const dimensionsWithoutMeasureId = dimensions.filter((item) => item.id !== MeasureId)\n const uniqueDimIds = unique(dimensionsWithoutMeasureId.map((d) => d.id))\n\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) => {\n // color\n encoding.color = unique(dimensions.filter((item) => item.encoding === 'color').map((item) => item.id))\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 = [MeasureId]\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.y = unique(\n measures\n .filter((item) => item.encoding === 'xAxis' || item.encoding === 'yAxis' || !item.encoding)\n .map((item) => item.id),\n )\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.y = unique(\n measures\n .filter((item) => item.encoding === 'xAxis' || item.encoding === 'yAxis' || !item.encoding)\n .map((item) => item.id),\n )\n const color = unique(measures.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (color.length > 0) {\n encoding.color = [color[0]]\n }\n\n // size\n encoding.size = unique(measures.filter((item) => item.encoding === 'size').map((item) => item.id))\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])\n}\n","import type { AdvancedPipe, MeasureGroup, Measures, MeasureTree, Scatter, ScatterMeasures } from 'src/types'\nimport { isMeasureTreeWithParentId, isMeasureTreeWithChildren } from './utils'\nimport { clone } from 'remeda'\nimport { DEFAULT_PARENT_ID } from 'src/pipeline/utils/constant'\n\nexport const buildMeasuresForScatter: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context as {\n vseed: Scatter\n }\n\n // 带Children的指标树, 不进行任何处理\n if (isMeasureTreeWithChildren(advancedVSeed.measures)) {\n return advancedVSeed\n }\n // 带parentId的指标树, 转换为带children的指标树\n if (isMeasureTreeWithParentId(advancedVSeed.measures)) {\n advancedVSeed.measures = generateMeasuresByParentId(advancedVSeed.measures as Measures)\n return advancedVSeed\n }\n\n /**\n * 既不是带Children的指标树, 也不是带parentId的指标树, 则自动生成指标\n */\n\n const scatterMeasures = vseed.scatterMeasures\n ? clone(vseed.scatterMeasures)\n : basicMeasuresToScatterMeasures(advancedVSeed.measures || [])\n advancedVSeed.measures = scatterMeasuresToMeasureTree(scatterMeasures)\n\n return advancedVSeed\n}\n\nconst basicMeasuresToScatterMeasures = (basicMeasures: Measures): ScatterMeasures => {\n const yMeasures: Measures = []\n const xMeasures: Measures = []\n\n for (let index = 0; index < basicMeasures.length; index++) {\n const item = basicMeasures[index]\n const encoding = Array.isArray(item.encoding) ? item.encoding : [item.encoding]\n const isYAxis = encoding.includes('yAxis')\n const isXAxis = encoding.includes('xAxis')\n\n if (isYAxis) {\n yMeasures.push(item)\n } else if (isXAxis) {\n xMeasures.push(item)\n } else {\n if (index !== 0) {\n yMeasures.push(item)\n } else {\n xMeasures.push(item)\n }\n }\n }\n\n if (yMeasures.length === 0 && xMeasures.length > 0) {\n yMeasures.push(xMeasures[0])\n }\n\n return [{ id: 'scatterMeasures', xMeasures, yMeasures }]\n}\n\nconst scatterMeasuresToMeasureTree = (scatterMeasures: ScatterMeasures): MeasureTree => {\n const measureTree = scatterMeasures.map((item, index): MeasureGroup => {\n const { id, xMeasures, yMeasures } = item\n const groupChildren: MeasureGroup[] = []\n\n let groupId: string = `${id}-`\n if (xMeasures) {\n const arrPrimaryMeasures = Array.isArray(xMeasures) ? xMeasures : [xMeasures]\n const alias = arrPrimaryMeasures.map((item) => item.alias || item.id).toString()\n groupId += alias\n groupChildren.push({\n id: `${index}-x`,\n alias: arrPrimaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrPrimaryMeasures,\n })\n }\n if (yMeasures) {\n const arrSecondaryMeasures = Array.isArray(yMeasures) ? yMeasures : [yMeasures]\n const alias = arrSecondaryMeasures.map((item) => item.alias || item.id).toString()\n groupId += alias\n groupChildren.push({\n id: `${index}-y`,\n alias: arrSecondaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrSecondaryMeasures,\n })\n }\n\n return {\n id: groupId,\n alias: groupId,\n children: groupChildren,\n }\n })\n\n // 只有1个散点图, 仅返回2层, vchart 绘制散点图\n if (scatterMeasures.length === 1) {\n return measureTree[0].children || []\n }\n\n // 有多个散点图, 返回3层, pivot chart 绘制组合散点图\n return measureTree\n}\n\nconst generateMeasuresByParentId = (measures: Measures) => {\n const scatterMeasures: ScatterMeasures = []\n\n measures.forEach((item) => {\n const id = item.parentId || DEFAULT_PARENT_ID\n\n if (!scatterMeasures.find((d) => d.id === id)) {\n scatterMeasures.push({\n id,\n yMeasures: [],\n xMeasures: [],\n })\n }\n const scatterChart = scatterMeasures.find((d) => d.id === id)\n if (!scatterChart || !Array.isArray(scatterChart.yMeasures) || !Array.isArray(scatterChart.xMeasures)) {\n return\n }\n\n const encoding = Array.isArray(item.encoding) ? item.encoding : [item.encoding].filter(Boolean)\n const isX = encoding.includes('xAxis')\n const isY = encoding.includes('yAxis')\n const isEmpty = !encoding.length\n if (isY) {\n scatterChart.yMeasures.push(item)\n } else if (isX) {\n scatterChart.xMeasures.push(item)\n } else if (isEmpty) {\n if (scatterChart.yMeasures.length !== 0) {\n scatterChart.yMeasures.push(item)\n } else {\n scatterChart.xMeasures.push(item)\n }\n }\n })\n\n return scatterMeasuresToMeasureTree(scatterMeasures)\n}\n","import { pick } from 'remeda'\nimport { replaceNullToUndefined } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed, Config } from 'src/types'\n\nexport const scatterConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const pickedConfig = pick(vseed, [\n 'backgroundColor',\n 'color',\n 'label',\n 'legend',\n 'tooltip',\n 'xAxis',\n 'yAxis',\n 'sizeRange',\n 'size',\n 'crosshairLine',\n ]) as Config['line']\n\n const config = replaceNullToUndefined(pickedConfig)\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n","import { uniqueBy } from 'remeda'\nimport {\n dataReshapeByEncoding,\n FoldXMeasureId,\n FoldXMeasureValue,\n FoldYMeasureId,\n FoldYMeasureValue,\n} from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n Encoding,\n FoldInfo,\n MeasureGroup,\n UnfoldInfo,\n} from 'src/types'\n\nexport const reshapeWithScatterEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed as ColumnParallel\n const { dimensions = [], measures = [], encoding, chartType } = advancedVSeed\n\n if (measures.length > 2) {\n throw new Error('measures can not be more than 2 groups in scatter')\n }\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const datasets: Dataset[] = []\n const xMeasures = measures[0] as MeasureGroup\n const yMeasures = (measures[1] || xMeasures) as MeasureGroup\n\n if (xMeasures && xMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (d) => d.id),\n uniqueBy(xMeasures.children, (d) => d.id),\n encoding as Encoding,\n {\n foldMeasureValue: FoldXMeasureValue,\n foldMeasureId: FoldXMeasureId,\n colorItemAsId: true,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n },\n )\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n if (yMeasures && yMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n datasets[0],\n uniqueBy(dimensions, (d) => d.id),\n uniqueBy(yMeasures.children, (d) => d.id),\n encoding as Encoding,\n {\n foldMeasureValue: FoldYMeasureValue,\n foldMeasureId: FoldYMeasureId,\n colorItemAsId: true,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n },\n )\n\n datasets[0] = newDataset\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n const unfoldInfo: UnfoldInfo = {\n ...unfoldInfoList[0],\n colorItems: unfoldInfoList.flatMap((d) => d.colorItems),\n colorIdMap: unfoldInfoList.reduce((prev, cur) => ({ ...prev, ...cur.colorIdMap }), {}),\n }\n\n return {\n ...result,\n dataset: datasets[0],\n\n datasetReshapeInfo: [\n {\n id: String(chartType),\n index: 0,\n foldInfo: foldInfoList[0],\n foldInfoList: foldInfoList,\n unfoldInfo: unfoldInfo,\n },\n ],\n }\n}\n","import { dataReshapeByEncoding, FoldXMeasureValue, FoldYMeasureValue } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport { findAllMeasures, measureDepth } from 'src/pipeline/utils'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Encoding,\n FoldInfo,\n MeasureGroup,\n UnfoldInfo,\n} from 'src/types'\n\nexport const pivotReshapeWithScatterEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed as ColumnParallel\n const { dimensions = [], measures = [], encoding, chartType } = advancedVSeed\n const allMeasures = findAllMeasures(measures)\n\n const measureGroups: Array<MeasureGroup[]> = []\n\n const depth = measureDepth(measures)\n if (depth === 3) {\n measures.forEach((measure: MeasureGroup) => {\n measureGroups.push(measure.children as unknown as MeasureGroup[])\n })\n } else if (depth === 2) {\n measureGroups.push(measures)\n }\n\n const datasetList: Dataset[] = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n measureGroups.forEach((measures: MeasureGroup[], index) => {\n if (measures.length > 2) {\n throw new Error('measures can not be more than 2 groups in scatter')\n }\n\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const datasets: Dataset[] = []\n const xMeasures = measures[0]\n const yMeasures = measures[1] || xMeasures\n\n if (xMeasures && xMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(dataset, dimensions, xMeasures.children, encoding as Encoding, {\n foldMeasureValue: `${FoldXMeasureValue}${index}`,\n colorItemAsId: true,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n omitIds: allMeasures.map((item) => item.id),\n })\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n if (yMeasures && yMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(dataset, dimensions, yMeasures.children, encoding as Encoding, {\n foldMeasureValue: `${FoldYMeasureValue}${index}`,\n colorItemAsId: true,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n omitIds: allMeasures.map((item) => item.id),\n })\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n const unfoldInfo: UnfoldInfo = {\n ...unfoldInfoList[0],\n colorItems: unfoldInfoList.flatMap((d) => d.colorItems),\n colorIdMap: unfoldInfoList.reduce((prev, cur) => ({ ...prev, ...cur.colorIdMap }), {}),\n }\n\n const reshapeInfo = {\n id: `${chartType}-${index}`,\n index,\n foldInfo: foldInfoList[0],\n foldInfoList: foldInfoList,\n unfoldInfo: unfoldInfo,\n }\n\n datasetReshapeInfo.push(reshapeInfo)\n datasetList.push(datasets[0].map((d, index) => ({ ...d, ...(datasets[1]?.[index] || {}) })))\n })\n\n return {\n ...result,\n dataset: datasetList,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n annotation,\n markStyle,\n scatterConfig,\n encodingForScatter,\n buildMeasuresForScatter,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n encodingAdapter,\n defaultEncodingForScatter,\n deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n regressionLine,\n} from '../pipes'\nimport { reshapeWithScatterEncoding } from '../pipes/reshape/reshapeWithScatterEncoding'\nimport { pivotReshapeWithScatterEncoding } from '../pipes/reshape/pivotReshapeWithScatterEncoding'\n\nexport const scatterAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n\n encodingAdapter(\n [defaultEncodingForScatter, buildMeasuresForScatter],\n [\n encodingForScatter,\n buildMeasuresForScatter,\n deleteEncodingForMeasure(['tooltip', 'label', 'size']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithScatterEncoding], [pivotReshapeWithScatterEncoding]),\n\n scatterConfig,\n theme,\n markStyle,\n annotation,\n regressionLine,\n]\n","import type { IScatterChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initScatter: SpecPipe = (spec, context) => {\n const result = { ...spec } as IScatterChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo, foldInfoList } = datasetReshapeInfo[0]\n\n result.type = 'scatter'\n result.direction = 'vertical'\n result.xField = foldInfoList?.[0].measureValue\n if (foldInfoList?.[1]) {\n result.yField = foldInfoList[1].measureValue\n }\n\n result.seriesField = unfoldInfo.encodingColorId\n\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { isPivotChart } from 'src/pipeline/utils'\nimport type { SpecPipe } from 'src/types'\n\nexport const datasetScatter: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const id = datasetReshapeInfo[0].id\n\n const fields: Record<string, object> = {}\n\n return {\n ...spec,\n data: {\n id,\n // 透视表不使用 dataValues\n values: isPivotChart(vseed) ? undefined : advancedVSeed.dataset.flat(),\n fields: fields,\n },\n } as ISpec\n}\n","import type { IScatterChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const scatterSize: SpecPipe = (spec, context) => {\n const result = { ...spec } as IScatterChartSpec\n const { advancedVSeed } = context\n const { chartType, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as {\n sizeRange: number | number[]\n size?: number | number[]\n }\n const hasSizeEncoding = encoding?.size?.[0]\n if (!hasSizeEncoding) {\n return result\n }\n\n const size = baseConfig.size ?? baseConfig.sizeRange\n\n result.size = {\n type: 'linear',\n range: Array.isArray(size) ? size : [size, size],\n } as IScatterChartSpec['size']\n\n result.sizeField = encoding?.size?.[0] || undefined\n\n return result\n}\n","import type { IScatterChartSpec } from '@visactor/vchart'\nimport type { Encoding, FoldInfo, Label, SpecPipe } from 'src/types'\nimport { buildLabel } from './label'\n\nexport const labelScatter: SpecPipe = (spec, context) => {\n const result = { ...spec } as IScatterChartSpec\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { chartType, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { label: Label }\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n\n const { label } = baseConfig\n\n result.label = buildLabel(\n label,\n vseed.measures,\n vseed.dimensions,\n advancedVSeed.dimensions,\n advancedVSeed.measures,\n encoding as Encoding,\n foldInfoList,\n ) as unknown as IScatterChartSpec['label']\n\n return result\n}\n","import { uniqueBy } from 'remeda'\nimport { createFormatterByMeasure, findAllMeasures, findMeasureById } from '../../../../utils'\nimport type { Datum, Dimensions, FoldInfo, Locale, Measures, SpecPipe, Tooltip, UnfoldInfo } from 'src/types'\nimport { ORIGINAL_DATA } from 'src/dataReshape'\nimport { getTooltipStyle } from './tooltipStyle'\n\nexport const tooltipScatter: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n const { foldInfoList } = datasetReshapeInfo[0] as unknown as {\n foldInfoList: FoldInfo[]\n unfoldInfo: UnfoldInfo\n }\n\n result.tooltip = {\n style: getTooltipStyle(tooltip),\n visible: enable,\n\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(\n encoding.tooltip || [],\n dimensions,\n findAllMeasures(vseed.measures),\n locale,\n foldInfoList,\n ),\n },\n dimension: {\n visible: false,\n },\n }\n return result\n}\n\nexport const createMarkContent = (\n tooltip: string[],\n dimensions: Dimensions,\n measures: Measures,\n locale: Locale,\n foldInfoList: FoldInfo[],\n) => {\n const dims = uniqueBy(\n dimensions.filter((item) => tooltip.includes(item.id)),\n (item) => item.id,\n )\n const meas = uniqueBy(\n measures.filter((item) => tooltip.includes(item.id)),\n (item) => item.id,\n )\n\n const dimContent = dims.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const datum = v as Datum\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return datum && (datum[item.id] as string)\n },\n value: (v: unknown) => {\n const datum = v as Datum\n return datum && (datum[item.id] as string)\n },\n }))\n\n const meaContent = meas.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias || item.id,\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const id = item.id\n if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) {\n return ''\n }\n const originalData = datum[ORIGINAL_DATA] as Datum\n const value = originalData[id] as string | number\n const measure = findMeasureById(measures, id)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }))\n\n const foldMeaContent = foldInfoList.map((foldInfo) => {\n return {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: Object.values(foldInfo.foldMap)[0],\n value: (v: unknown) => {\n const { measureId, measureValue } = foldInfo\n\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }\n })\n return [...dimContent, ...foldMeaContent, ...meaContent]\n}\n","import type { ICartesianCrosshairSpec, ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const horizontalCrosshairLine: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n\n const config = advancedVSeed.config?.[chartType as 'line']?.crosshairLine\n if (!config) {\n return result\n }\n\n if (!result.crosshair) {\n result.crosshair = {}\n }\n\n const visible = config.visible || true\n const lineColor = config.lineColor || undefined\n const labelColor = config.labelColor || undefined\n const labelVisible = config.labelVisible || undefined\n const labelBackgroundColor = config.labelBackgroundColor || undefined\n\n const crosshair = result.crosshair as ICartesianCrosshairSpec\n crosshair.yField = {\n visible,\n line: {\n type: 'line',\n style: {\n lineWidth: 1,\n opacity: 1,\n stroke: lineColor,\n lineDash: config.lineDash ?? [4, 2],\n },\n },\n label: {\n visible: labelVisible,\n labelBackground: {\n visible: labelVisible,\n style: {\n fill: labelBackgroundColor,\n },\n },\n style: {\n fill: labelColor,\n },\n },\n }\n\n return result\n}\n","import type { ICartesianSeries, IChart, IScatterChartSpec, IVChart } from '@visactor/vchart'\nimport { isNullish } from 'remeda'\nimport {\n array,\n clamper,\n regressionLinear,\n regressionLowess,\n regressionPolynomial,\n regressionLogistic,\n} from '@visactor/vutils'\nimport type {\n Datum,\n SpecPipe,\n RegressionLineConfig,\n LinearRegressionLine,\n SpecPipelineContext,\n PolynomialRegressionLine,\n} from 'src/types'\n\nexport const generateRegressionLinePipe = (\n type: 'linearRegressionLine' | 'lowessRegressionLine' | 'polynomialRegressionLine' | 'logisticRegressionLine',\n regressionFunction: (\n arr: Datum[],\n xAccessor: (d: Datum) => number,\n yAccessor: (d: Datum) => number,\n options?: any,\n ) => {\n confidenceInterval: (N: number) => { lower: number; upper: number; x: number }[]\n evaluateGrid: (N: number) => { x: number; y: number }[]\n },\n getOptions?: (lineConfig: any) => any,\n): SpecPipe => {\n return ((spec: Partial<IScatterChartSpec>, context: SpecPipelineContext): Partial<IScatterChartSpec> => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { chartType, regressionLine } = advancedVSeed\n const lineTheme = advancedVSeed.config[chartType as 'scatter']?.regressionLine as RegressionLineConfig\n\n if (!regressionLine || !regressionLine[type]) {\n return result\n }\n\n const lineList = array(regressionLine[type])\n\n if (!result.customMark) {\n result.customMark = []\n }\n\n lineList.forEach((line, lineIndex) => {\n const theme = (lineTheme.linearRegressionLine ?? {}) as LinearRegressionLine\n const {\n color,\n lineWidth,\n lineDash,\n text,\n textColor,\n textFontSize,\n textFontWeight,\n confidenceIntervalOpacity,\n confidenceIntervalVisible = theme.confidenceIntervalVisible,\n } = line as LinearRegressionLine\n\n const childrenMarks: any[] = []\n\n ;(result.customMark as any[]).push({\n type: 'group',\n interactive: false,\n zIndex: 500,\n name: `${type}-${lineIndex}`,\n style: {\n data: (datum: any, ctx: any) => {\n const vchart = ctx.vchart as IVChart\n const chart = vchart.getChart() as IChart\n const s = chart.getAllSeries()[0] as ICartesianSeries\n\n if (s) {\n const rect = s.getRegion().getLayoutRect()\n const segments: {\n areaPoints?: { x: number; y: number; y1: number }[]\n linePoints: { x: number; y: number }[]\n color: string\n }[] = []\n\n if (rect.width === 0 || rect.height === 0) {\n return segments\n }\n\n const start = s.getRegion().getLayoutStartPoint()\n const yClamper = clamper(start.y, start.y + rect.height)\n const colorAttrOptions = s.getColorAttribute()\n const groups: (string | undefined)[] = s.getSeriesKeys()\n const data = s.getViewData()?.latestData as Datum[]\n const fieldX = s.fieldX?.[0]\n const fieldY = s.fieldY?.[0]\n\n if (!groups.length) {\n groups.push(undefined)\n }\n\n groups.forEach((group) => {\n const groupData = data.filter((d: Datum) => d[colorAttrOptions?.field] === group)\n\n if (!groupData.length) {\n return\n }\n const { confidenceInterval, evaluateGrid } = regressionFunction(\n groupData,\n (datum: Datum) => datum?.[fieldX],\n (datum: Datum) => datum?.[fieldY],\n getOptions?.(line),\n )\n const N = Math.max(3, Math.floor(groupData.length / 4))\n const mainColor = color ?? colorAttrOptions?.scale?.scale(group)\n\n const lineData = evaluateGrid(N)\n const linePoints = lineData.map((ld: Datum) => {\n const d = { [fieldX]: ld.x, [fieldY]: ld.y }\n return {\n x: s.dataToPositionX(d)! + start.x,\n y: yClamper(s.dataToPositionY(d)! + start.y),\n }\n })\n\n segments.push({\n color: mainColor,\n linePoints,\n })\n\n if (confidenceIntervalVisible) {\n const intervalData = confidenceInterval(N)\n const areaPoints = intervalData.map((datum: Datum) => {\n const d = { [fieldX]: datum.x, [fieldY]: datum.lower }\n return {\n x: s.dataToPositionX(d)! + start.x,\n y: yClamper(s.dataToPositionY(d)! + start.y),\n y1: yClamper(s.dataToPositionY({ [fieldY]: datum.upper })! + start.y),\n }\n })\n\n segments[segments.length - 1].areaPoints = areaPoints\n }\n })\n\n return segments\n }\n return []\n },\n },\n children: childrenMarks,\n })\n\n if (confidenceIntervalVisible) {\n childrenMarks.push({\n type: 'area',\n interactive: false,\n zIndex: 500,\n style: {\n lineWidth: lineWidth ?? theme.lineWidth,\n lineDash: lineDash ?? theme.lineDash,\n fillOpacity: confidenceIntervalOpacity ?? theme.confidenceIntervalOpacity,\n fill: 'red', // vrender bug,必须要设置一个全局的fill,才会绘制\n segments: (datum: any, ctx: any, opt: any) => {\n const parentNode = opt.mark?._product?.parent\n\n if (parentNode?.attribute?.data?.length) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call\n return parentNode.attribute.data.map((d: any) => {\n return {\n points: d.areaPoints ?? [],\n fill: d.color,\n }\n })\n }\n\n return []\n },\n },\n })\n }\n\n childrenMarks.push({\n type: 'line',\n interactive: false,\n zIndex: 500,\n style: {\n lineWidth: lineWidth ?? theme.lineWidth,\n lineDash: lineDash ?? theme.lineDash,\n stroke: 'red', // vrender bug,必须要设置一个全局的stroke,才会绘制\n segments: (datum: any, ctx: any, opt: any) => {\n const parentNode = opt.mark?._product?.parent\n\n if (parentNode?.attribute?.data?.length) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call\n return parentNode.attribute.data.map((d: any) => {\n return {\n points: d.linePoints,\n stroke: d.color,\n }\n })\n }\n\n return []\n },\n },\n })\n\n if (!isNullish(text)) {\n childrenMarks.push({\n type: 'text',\n interactive: false,\n zIndex: 500,\n style: {\n textAlign: 'end',\n fill: textColor ?? theme.textColor,\n fontSize: textFontSize ?? theme.textFontSize,\n fontWeight: textFontWeight ?? theme.textFontWeight,\n text: text,\n x: (datum: any, ctx: any, opt: any) => {\n const parentNode = opt.mark?._product?.parent\n\n if (parentNode?.attribute?.data?.length) {\n const point = parentNode.attribute.data[parentNode.attribute.data.length - 1].linePoints\n return point[point.length - 1]?.x\n }\n\n return undefined\n },\n y: (datum: any, ctx: any, opt: any) => {\n const parentNode = opt.mark?._product?.parent\n\n if (parentNode?.attribute?.data?.length) {\n const point = parentNode.attribute.data[parentNode.attribute.data.length - 1].linePoints\n return point[point.length - 1]?.y\n }\n\n return undefined\n },\n },\n })\n }\n })\n\n return result\n }) as SpecPipe\n}\n\nexport const linearRegressionLine: SpecPipe = generateRegressionLinePipe('linearRegressionLine', regressionLinear)\nexport const lowessRegressionLine: SpecPipe = generateRegressionLinePipe('lowessRegressionLine', regressionLowess)\nexport const polynomialRegressionLine: SpecPipe = generateRegressionLinePipe(\n 'polynomialRegressionLine',\n regressionPolynomial,\n (lineConfig: PolynomialRegressionLine) => {\n return { degree: lineConfig.degree ?? 2 }\n },\n)\nexport const logisticRegressionLine: SpecPipe = generateRegressionLinePipe('logisticRegressionLine', regressionLogistic)\n","import type { SpecPipeline } from 'src/types'\nimport {\n yLinear,\n backgroundColor,\n tooltipScatter,\n discreteLegend,\n color,\n initPivot,\n datasetPivot,\n pivotDiscreteLegend,\n pivotIndicators,\n pivotAdapter,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n pointStyle,\n verticalCrosshairLine,\n xLinear,\n horizontalCrosshairLine,\n pointStateHover,\n initScatter,\n progressive,\n datasetScatter,\n linearColor,\n colorAdapter,\n colorPointStyleFill,\n colorLegend,\n pivotColorLegend,\n labelScatter,\n scatterSize,\n linearRegressionLine,\n lowessRegressionLine,\n polynomialRegressionLine,\n logisticRegressionLine,\n pivotAxisStyle,\n pivotTitle,\n} from '../pipes'\n\nconst scatter: SpecPipeline = [\n initScatter,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetScatter,\n progressive,\n xLinear,\n yLinear,\n scatterSize,\n labelScatter,\n tooltipScatter,\n colorAdapter(discreteLegend, colorLegend),\n verticalCrosshairLine,\n horizontalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateHover,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n linearRegressionLine,\n lowessRegressionLine,\n polynomialRegressionLine,\n logisticRegressionLine,\n]\n\nconst pivotScatter: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initScatter,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetScatter,\n progressive,\n xLinear,\n pivotAxisStyle(yLinear),\n scatterSize,\n labelScatter,\n tooltipScatter,\n verticalCrosshairLine,\n horizontalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateHover,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n linearRegressionLine,\n lowessRegressionLine,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const scatterSpecPipeline: SpecPipeline = [pivotAdapter(scatter, pivotScatter)]\n","import { scatterAdvancedPipeline, scatterSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerScatter = () => {\n Builder._advancedPipelineMap['scatter'] = scatterAdvancedPipeline\n Builder._specPipelineMap['scatter'] = scatterSpecPipeline\n}\n","import { unique } from 'remeda'\nimport { MeasureId } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\nimport { addColorToEncoding } from './color'\n\nexport const defaultEncodingForDualAxis: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding)\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForDualAxis: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding, measures.length > 1)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\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) => {\n const onlyMeasureId = dimensions.length === 1 && dimensions.find((item) => item.id === MeasureId)\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.x = uniqueDimIds.slice(0, 1) // 第一个维度放置于X轴\n encoding.color = uniqueDimIds.slice(onlyMeasureId ? 0 : 1) // 第二个之后的维度用于颜色\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 // x\n encoding.x = unique(dimensions.filter((item) => item.encoding === 'xAxis').map((item) => item.id))\n if (encoding.x.length === 0) {\n encoding.x = [dimensions[0].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 */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.y = unique(\n measures\n .filter((item) => item.encoding === 'primaryYAxis' || item.encoding === 'secondaryYAxis' || !item.encoding)\n .map((item) => item.id),\n )\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n // y\n encoding.y = unique(\n measures\n .filter((item) => item.encoding === 'primaryYAxis' || item.encoding === 'secondaryYAxis' || !item.encoding)\n .map((item) => item.id),\n )\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])\n}\n","import type { AdvancedPipe, DualAxis, DualMeasures, MeasureGroup, Measures, MeasureTree } from 'src/types'\nimport { isMeasureTreeWithParentId, isMeasureTreeWithChildren } from './utils'\nimport { clone } from 'remeda'\nimport { DEFAULT_PARENT_ID } from 'src/pipeline/utils/constant'\n\nexport const buildMeasuresForDualAxis: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context as {\n vseed: DualAxis\n }\n\n // 带Children的指标树, 不进行任何处理\n if (isMeasureTreeWithChildren(advancedVSeed.measures)) {\n return advancedVSeed\n }\n // 带parentId的指标树, 转换为带children的指标树\n if (isMeasureTreeWithParentId(advancedVSeed.measures)) {\n advancedVSeed.measures = generateMeasuresByParentId(advancedVSeed.measures as Measures)\n return advancedVSeed\n }\n\n /**\n * 既不是带Children的指标树, 也不是带parentId的指标树, 则自动生成指标\n */\n const dualMeasures = vseed.dualMeasures\n ? clone(vseed.dualMeasures)\n : basicMeasuresToDualMeasures(advancedVSeed.measures || [])\n advancedVSeed.measures = dualMeasuresToMeasureTree(dualMeasures)\n\n return advancedVSeed\n}\n\nconst basicMeasuresToDualMeasures = (basicMeasures: Measures): DualMeasures => {\n const primaryMeasures: Measures = []\n const secondaryMeasures: Measures = []\n\n for (let index = 0; index < basicMeasures.length; index++) {\n const item = basicMeasures[index]\n const encoding = Array.isArray(item.encoding) ? item.encoding : [item.encoding]\n const isPrimaryYAxis = encoding.includes('primaryYAxis')\n const isSecondaryYAxis = encoding.includes('secondaryYAxis')\n\n if (isPrimaryYAxis) {\n primaryMeasures.push(item)\n } else if (isSecondaryYAxis) {\n secondaryMeasures.push(item)\n } else {\n if (index === 0) {\n primaryMeasures.push(item)\n } else {\n secondaryMeasures.push(item)\n }\n }\n }\n\n return [{ id: 'dualMeasures', primaryMeasures, secondaryMeasures }]\n}\n\nconst dualMeasuresToMeasureTree = (dualMeasures: DualMeasures): MeasureTree => {\n const measureTree = dualMeasures.map((item, index): MeasureGroup => {\n const { id, primaryMeasures, secondaryMeasures } = item\n const groupChildren: MeasureGroup[] = []\n\n let groupId: string = `${id}-`\n if (primaryMeasures) {\n const arrPrimaryMeasures = Array.isArray(primaryMeasures) ? primaryMeasures : [primaryMeasures]\n const alias = arrPrimaryMeasures.map((item) => item.alias || item.id).toString()\n groupId += alias\n groupChildren.push({\n id: `${index}-primary`,\n alias: arrPrimaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrPrimaryMeasures,\n })\n }\n if (secondaryMeasures) {\n const arrSecondaryMeasures = Array.isArray(secondaryMeasures) ? secondaryMeasures : [secondaryMeasures]\n const alias = arrSecondaryMeasures.map((item) => item.alias || item.id).toString()\n groupId += alias\n groupChildren.push({\n id: `${index}-secondary`,\n alias: arrSecondaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrSecondaryMeasures,\n })\n }\n\n return {\n id: groupId,\n alias: groupId,\n children: groupChildren,\n }\n })\n\n // 只有1个双轴图, 仅返回2层, vchart 绘制双轴图\n if (dualMeasures.length === 1) {\n return measureTree[0].children || []\n }\n\n // 有多个双轴图, 返回3层, pivot chart 绘制组合双轴图\n return measureTree\n}\n\nconst generateMeasuresByParentId = (measures: Measures) => {\n const dualMeasures: DualMeasures = []\n\n measures.forEach((item) => {\n const id = item.parentId || DEFAULT_PARENT_ID\n if (!dualMeasures.find((d) => d.id === id)) {\n dualMeasures.push({\n id,\n primaryMeasures: [],\n secondaryMeasures: [],\n })\n }\n\n const dualChart = dualMeasures.find((d) => d.id === id)\n if (!dualChart || !Array.isArray(dualChart.primaryMeasures) || !Array.isArray(dualChart.secondaryMeasures)) {\n return\n }\n\n const encoding = Array.isArray(item.encoding) ? item.encoding : [item.encoding].filter(Boolean)\n const isPrimary = encoding.includes('primaryYAxis')\n const isSecondary = encoding.includes('secondaryYAxis')\n const isEmpty = !item.encoding\n\n if (isPrimary) {\n dualChart.primaryMeasures.push(item)\n } else if (isSecondary) {\n dualChart.secondaryMeasures.push(item)\n } else if (isEmpty) {\n if (dualChart.primaryMeasures.length === 0) {\n dualChart.primaryMeasures.push(item)\n } else {\n dualChart.secondaryMeasures.push(item)\n }\n }\n })\n\n return dualMeasuresToMeasureTree(dualMeasures)\n}\n","import { uniqueBy } from 'remeda'\nimport { dataReshapeByEncoding, FoldPrimaryMeasureValue, FoldSecondaryMeasureValue } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n Encoding,\n FoldInfo,\n MeasureGroup,\n UnfoldInfo,\n} from 'src/types'\n\nexport const reshapeWithDualEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed as ColumnParallel\n const { dimensions = [], measures = [], encoding, chartType } = advancedVSeed\n\n if (measures.length > 2) {\n throw new Error('measures can not be more than 2 groups in dualAxis')\n }\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const datasets: Dataset[] = []\n const primaryMeasures = measures[0] as MeasureGroup\n const secondaryMeasures = (measures[1] || []) as MeasureGroup\n\n if (primaryMeasures && primaryMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(primaryMeasures.children, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: FoldPrimaryMeasureValue,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n },\n )\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n if (secondaryMeasures && secondaryMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(secondaryMeasures.children, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: FoldSecondaryMeasureValue,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n },\n )\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n const unfoldInfo: UnfoldInfo = {\n ...unfoldInfoList[0],\n colorItems: unfoldInfoList.flatMap((d) => d.colorItems),\n colorIdMap: unfoldInfoList.reduce((prev, cur) => ({ ...prev, ...cur.colorIdMap }), {}),\n }\n\n return {\n ...result,\n dataset: datasets,\n datasetReshapeInfo: [\n {\n id: String(chartType),\n index: 0,\n foldInfo: foldInfoList[0],\n foldInfoList: foldInfoList,\n unfoldInfo: unfoldInfo,\n },\n ],\n }\n}\n","import { uniqueBy } from 'remeda'\nimport { dataReshapeByEncoding, FoldPrimaryMeasureValue, FoldSecondaryMeasureValue } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport { findAllMeasures, measureDepth } from 'src/pipeline/utils'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Encoding,\n FoldInfo,\n MeasureGroup,\n UnfoldInfo,\n} from 'src/types'\n\nexport const pivotReshapeWithDualEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed as ColumnParallel\n const { dimensions = [], measures = [], encoding, chartType } = advancedVSeed\n\n const allMeasures = findAllMeasures(measures)\n const datasetList: Dataset[] = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n const measureGroups: Array<MeasureGroup[]> = []\n\n const depth = measureDepth(measures)\n if (depth === 3) {\n measures.forEach((measure: MeasureGroup) => {\n measureGroups.push(measure.children as unknown as MeasureGroup[])\n })\n } else if (depth === 2) {\n measureGroups.push(measures as unknown as MeasureGroup[])\n }\n\n measureGroups.forEach((measures: MeasureGroup[], index) => {\n if (measures.length > 2) {\n throw new Error('measures can not be more than 2 groups in dualAxis')\n }\n\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const datasets: Dataset[] = []\n const primaryMeasures = measures[0]\n const secondaryMeasures = measures[1] || []\n\n if (primaryMeasures && primaryMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(primaryMeasures.children, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n omitIds: allMeasures.map((item) => item.id),\n },\n )\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n if (secondaryMeasures && secondaryMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(secondaryMeasures.children, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: `${FoldSecondaryMeasureValue}${index}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n omitIds: allMeasures.map((item) => item.id),\n },\n )\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n const unfoldInfo: UnfoldInfo = {\n ...unfoldInfoList[0],\n colorItems: unfoldInfoList.flatMap((d) => d.colorItems),\n colorIdMap: unfoldInfoList.reduce((prev, cur) => ({ ...prev, ...cur.colorIdMap }), {}),\n }\n\n const reshapeInfo = {\n id: `${chartType}-${index}`,\n index,\n foldInfo: foldInfoList[0],\n foldInfoList: foldInfoList,\n unfoldInfo: unfoldInfo,\n }\n\n datasetReshapeInfo.push(reshapeInfo)\n datasetList.push(datasets.flat(2))\n })\n\n return {\n ...result,\n dataset: datasetList,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n","import { pick } from 'remeda'\nimport { replaceNullToUndefined } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed, Config } from 'src/types'\n\nexport const dualAxisConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const pickedConfig = pick(vseed, [\n // common\n 'backgroundColor',\n 'color',\n 'label',\n 'legend',\n 'tooltip',\n 'xAxis',\n\n // only for dualAxis\n 'dualChartType',\n 'alignTicks',\n 'primaryYAxis',\n 'secondaryYAxis',\n 'crosshairLine',\n 'crosshairRect',\n\n 'barGapInGroup',\n 'barMaxWidth',\n 'stackCornerRadius',\n ]) as Config['dualAxis']\n\n const config = replaceNullToUndefined(pickedConfig)\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n annotation,\n markStyle,\n sortXBandAxis,\n sortLegend,\n dualAxisConfig,\n encodingForDualAxis,\n reshapeWithDualEncoding,\n pivotReshapeWithDualEncoding,\n buildMeasuresForDualAxis,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n encodingAdapter,\n defaultEncodingForDualAxis,\n deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const dualAxisAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n\n encodingAdapter(\n [defaultEncodingForDualAxis, buildMeasuresForDualAxis],\n [\n encodingForDualAxis,\n buildMeasuresForDualAxis,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithDualEncoding], [pivotReshapeWithDualEncoding]),\n\n sortXBandAxis,\n sortLegend,\n dualAxisConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { Spec, SpecPipe, SpecPipeline, SpecPipelineContext } from 'src/types'\nimport { execPipeline } from '../../../../utils'\nimport type { ICommonChartSpec, ILineSeriesSpec } from '@visactor/vchart'\n\nexport const series = (...args: SpecPipeline[]): SpecPipe => {\n const result = {\n type: 'common',\n padding: 0,\n region: [\n {\n clip: true,\n },\n ],\n } as ICommonChartSpec\n\n return (_, context) => {\n result.series = args.map((pipeline) => {\n return execPipeline<Spec, SpecPipelineContext>(pipeline, context, {})\n }) as ILineSeriesSpec[]\n\n return result\n }\n}\n\n/**\n * @description 双轴图的透视场景, 不能使用此pipe, 请使用series\n * 因为VTable.PivotVChart会自行解析数据, 而非VChart解析.\n */\nexport const seriesDualAxis = (...args: SpecPipeline[]): SpecPipe => {\n const result = {\n type: 'common',\n padding: 0,\n labelLayout: 'region',\n region: [\n {\n clip: true,\n },\n ],\n } as ICommonChartSpec\n\n const createDualContext = <T extends SpecPipelineContext>(context: T, index: number): T => {\n const { advancedVSeed } = context\n const dataset = advancedVSeed.dataset[index]\n return {\n ...context,\n advancedVSeed: {\n ...advancedVSeed,\n dataset: dataset,\n },\n }\n }\n\n return (_, context) => {\n result.series = args.map((pipeline, index) => {\n const seriesContext = createDualContext(context, index)\n return execPipeline<Spec, SpecPipelineContext>(pipeline, seriesContext, {})\n }) as ILineSeriesSpec[]\n\n return result\n }\n}\n","import type { IBarSeriesSpec, ILineSeriesSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from '../color/colorAdapter'\n\nexport const initDualAxisPrimary: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarSeriesSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo, foldInfoList, id } = datasetReshapeInfo[0]\n\n result.id = `${id}-primary-series`\n result.type = 'bar'\n result.direction = 'vertical'\n result.xField = unfoldInfo.encodingX\n result.seriesField = unfoldInfo.encodingColorId\n\n result.yField = foldInfoList?.[0].measureValue\n result.animation = true\n\n return result\n}\n\nexport const initDualAxisSecondary: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineSeriesSpec\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo, foldInfoList, id } = datasetReshapeInfo[0]\n\n result.id = `${id}-secondary-series`\n result.type = 'line'\n result.direction = 'vertical'\n result.xField = unfoldInfo.encodingX\n if (foldInfoList?.[1]) {\n result.yField = foldInfoList[1].measureValue\n }\n\n result.seriesField = isLinearColor(advancedVSeed, vseed) ? unfoldInfo.encodingDetail : unfoldInfo.encodingColorId\n\n result.animation = true\n\n return result\n}\n","import type { IBarSeriesSpec, ISeriesSpec } from '@visactor/vchart'\nimport { DUAL_AXIS_CHART_COLUMN_Z_INDEX, DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX } from 'src/pipeline/utils/constant'\nimport type { DualChartType, SpecPipe } from 'src/types'\n\nexport const dualChartTypePrimary: SpecPipe = (spec, context) => {\n const result = { ...spec, zIndex: DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX } as ISeriesSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { datasetReshapeInfo } = advancedVSeed\n const index = datasetReshapeInfo[0].index\n\n const config =\n advancedVSeed.config?.[chartType as 'dualAxis']?.dualChartType ||\n ({\n primary: 'column',\n secondary: 'line',\n } as DualChartType)\n\n const primary = Array.isArray(config) ? config[index].primary || config[0].primary : config.primary\n const secondary = Array.isArray(config) ? config[index].secondary || config[0].secondary : config.secondary\n const bothColumn = primary === 'column' && secondary === 'column'\n const type = bothColumn ? 'columnParallel' : primary\n switch (type) {\n case 'line': {\n result.type = 'line'\n break\n }\n case 'column': {\n result.type = 'bar'\n result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX\n break\n }\n case 'columnParallel': {\n const columnSpec = result as IBarSeriesSpec\n if (Array.isArray(columnSpec.xField)) {\n columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.encodingDetail)\n } else if (columnSpec.xField) {\n columnSpec.xField = [columnSpec.xField, datasetReshapeInfo[0].unfoldInfo.encodingDetail]\n }\n columnSpec.type = 'bar'\n result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX\n break\n }\n // @ts-expect-error 'columnPercent' 和 'areaPercent' 会改变轴值域为[0,1], VTable不支持.\n case 'columnPercent': {\n result.type = 'bar'\n result.percent = true\n result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX\n break\n }\n case 'area': {\n result.type = 'area'\n break\n }\n // @ts-expect-error 'columnPercent' 和 'areaPercent' 会改变轴值域为[0,1], VTable不支持.\n case 'areaPercent': {\n result.type = 'area'\n result.percent = true\n break\n }\n case 'scatter': {\n result.type = 'scatter'\n break\n }\n default:\n result.type = primary\n }\n\n return result\n}\n\nexport const dualChartTypeSecondary: SpecPipe = (spec, context) => {\n const result = { ...spec, zIndex: DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX } as ISeriesSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { datasetReshapeInfo } = advancedVSeed\n const config =\n advancedVSeed.config?.[chartType as 'dualAxis']?.dualChartType ||\n ({\n primary: 'column',\n secondary: 'line',\n } as DualChartType)\n\n const index = datasetReshapeInfo[0].index\n const primary = Array.isArray(config) ? config[index].primary || config[0].primary : config.primary\n const secondary = Array.isArray(config) ? config[index].secondary || config[0].secondary : config.secondary\n const bothColumn = primary === 'column' && secondary === 'column'\n const type = bothColumn ? 'columnParallel' : secondary\n\n switch (type) {\n case 'line': {\n result.type = 'line'\n break\n }\n case 'column': {\n result.type = 'bar'\n result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX\n break\n }\n case 'columnParallel': {\n const columnSpec = result as IBarSeriesSpec\n if (Array.isArray(columnSpec.xField)) {\n columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.encodingDetail)\n } else if (columnSpec.xField) {\n columnSpec.xField = [columnSpec.xField, datasetReshapeInfo[0].unfoldInfo.encodingDetail]\n }\n columnSpec.type = 'bar'\n result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX\n break\n }\n // @ts-expect-error 'columnPercent' 和 'areaPercent' 会改变轴值域为[0,1], VTable不支持.\n case 'columnPercent': {\n result.type = 'bar'\n result.percent = true\n result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX\n break\n }\n case 'area': {\n result.type = 'area'\n break\n }\n // @ts-expect-error 'columnPercent' 和 'areaPercent' 会改变轴值域为[0,1], VTable不支持.\n case 'areaPercent': {\n result.type = 'area'\n result.percent = true\n break\n }\n case 'scatter': {\n result.type = 'scatter'\n break\n }\n default:\n result.type = secondary\n }\n\n return result\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { isPivotChart } from 'src/pipeline/utils'\nimport type { SpecPipe } from 'src/types'\n\nexport const datasetPrimary: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { analysis, datasetReshapeInfo } = advancedVSeed\n const orderMapping = analysis?.orderMapping || {}\n\n const { unfoldInfo } = datasetReshapeInfo[0]\n const x = unfoldInfo.encodingX\n const colorId = unfoldInfo.encodingColorId\n const id = datasetReshapeInfo[0].id\n\n const fields: Record<string, object> = {}\n\n if (x) {\n const order = orderMapping[x]\n if (order) {\n fields[x] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[x] = {\n sortIndex: 0,\n }\n }\n }\n\n if (colorId) {\n const order = orderMapping[colorId]\n if (order) {\n fields[colorId] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[colorId] = {\n sortIndex: 0,\n }\n }\n }\n\n return {\n ...spec,\n data: {\n id: `${id}-primary-dataset`,\n // 透视表不使用 dataValues\n values: isPivotChart(vseed) ? undefined : advancedVSeed.dataset,\n fields: fields,\n },\n } as ISpec\n}\n\nexport const datasetSecondary: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { analysis, datasetReshapeInfo } = advancedVSeed\n const orderMapping = analysis?.orderMapping || {}\n\n const { unfoldInfo } = datasetReshapeInfo[0]\n const x = unfoldInfo.encodingX\n const colorId = unfoldInfo.encodingColorId\n const id = datasetReshapeInfo[0].id\n\n const fields: Record<string, object> = {}\n\n if (x) {\n const order = orderMapping[x]\n if (order) {\n fields[x] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[x] = {\n sortIndex: 0,\n }\n }\n }\n\n if (colorId) {\n const order = orderMapping[colorId]\n if (order) {\n fields[colorId] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[colorId] = {\n sortIndex: 0,\n }\n }\n }\n\n return {\n ...spec,\n data: {\n id: `${id}-secondary-dataset`,\n // 透视表不使用 dataValues\n values: isPivotChart(vseed) ? undefined : advancedVSeed.dataset,\n fields: fields,\n },\n } as ISpec\n}\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport type { Encoding, FoldInfo, Label, SpecPipe } from 'src/types'\nimport { buildLabel } from './label'\nimport { DUAL_AXIS_LABEL_Z_INDEX } from 'src/pipeline/utils/constant'\n\nexport const labelPrimary: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo, encoding } = advancedVSeed\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { label: Label }\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n result.label = buildLabel(\n baseConfig.label,\n vseed.measures,\n vseed.dimensions,\n advancedVSeed.dimensions,\n advancedVSeed.measures,\n encoding as Encoding,\n [foldInfoList[0]],\n ) as unknown as ILineChartSpec['label']\n ;(result.label as any)!.zIndex = DUAL_AXIS_LABEL_Z_INDEX\n return result\n}\n\nexport const labelSecondary: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo, encoding } = advancedVSeed\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { label: Label }\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n\n result.label = buildLabel(\n baseConfig.label,\n vseed.measures,\n vseed.dimensions,\n advancedVSeed.dimensions,\n advancedVSeed.measures,\n encoding as Encoding,\n [foldInfoList[1]],\n ) as unknown as ILineChartSpec['label']\n ;(result.label as any)!.zIndex = DUAL_AXIS_LABEL_Z_INDEX\n return result\n}\n","import { isNullish } from 'remeda'\nimport { createDimensionContent, createMarkContent } from './tooltip'\nimport type { FoldInfo, SpecPipe, Tooltip, UnfoldInfo } from 'src/types'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport { getTooltipStyle } from './tooltipStyle'\n\nexport const tooltipPrimary: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { measures, datasetReshapeInfo, chartType, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n const unfoldInfo = datasetReshapeInfo[0].unfoldInfo\n\n result.tooltip = {\n style: getTooltipStyle(tooltip),\n visible: enable,\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(\n encoding.tooltip || [],\n dimensions,\n findAllMeasures(vseed.measures),\n foldInfoList[0],\n unfoldInfo,\n ),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(dimensions, measures, foldInfoList[0], unfoldInfo),\n },\n }\n return result\n}\n\nexport const tooltipSecondary: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { measures, datasetReshapeInfo, chartType, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n\n if (isNullish(datasetReshapeInfo[0].foldInfoList?.[1])) {\n return result\n }\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n const unfoldInfo = datasetReshapeInfo[0].unfoldInfo as UnfoldInfo\n result.tooltip = {\n visible: enable,\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(\n encoding.tooltip || [],\n dimensions,\n findAllMeasures(vseed.measures),\n foldInfoList[1],\n unfoldInfo,\n ),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(dimensions, measures, foldInfoList[1], unfoldInfo),\n },\n }\n return result\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { AXIS_LABEL_SPACE, LINEAR_AXIS_INNER_OFFSET_TOP } from '../../../../utils/constant'\nimport { createNumFormatter } from '../../../../utils'\nimport type { SpecPipe, YLinearAxis } from 'src/types'\nimport { isEmpty, isNullish } from 'remeda'\nimport { createLinearFormat } from './format/linearFormat'\nimport { defaultTitleText } from './title/defaultTitleText'\n\nexport const yLinearPrimary: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { datasetReshapeInfo, encoding, measures, dimensions } = advancedVSeed\n const { index, id: reshapeInfoId, foldInfoList } = datasetReshapeInfo[0]\n // TODO: default config missing\n const primaryYAxis = advancedVSeed.config?.[chartType as 'dualAxis']?.primaryYAxis as YLinearAxis | YLinearAxis[]\n const yAxisConfig = Array.isArray(primaryYAxis) ? primaryYAxis[index] || primaryYAxis[0] : primaryYAxis\n const alignTicks = advancedVSeed.config?.[chartType as 'dualAxis']?.alignTicks as boolean | boolean[]\n const alignTicksConfig = Array.isArray(alignTicks) ? alignTicks[index] || alignTicks[0] : alignTicks\n\n if (isNullish(foldInfoList?.[0])) {\n return result\n }\n\n const isEmptySecondary = isEmpty(foldInfoList?.[0].foldMap)\n\n const id = `${reshapeInfoId}-primary-axis`\n const seriesIds = [`${reshapeInfoId}-primary-series`, `${reshapeInfoId}-secondary-series`]\n const seriesId = alignTicksConfig ? seriesIds : seriesIds[0]\n\n if (!result.axes) {\n result.axes = []\n }\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n\n zero,\n nice,\n inverse,\n max,\n min,\n log,\n logBase = 10,\n\n autoFormat,\n numFormat = {},\n } = yAxisConfig\n\n const formatter = createNumFormatter(numFormat)\n\n const linearAxis = {\n visible: isEmptySecondary ? false : visible,\n id,\n seriesId,\n\n type: log ? 'log' : 'linear',\n base: logBase,\n orient: 'left',\n nice,\n zero: log ? false : zero,\n inverse,\n max,\n min,\n label: {\n space: AXIS_LABEL_SPACE,\n visible: label?.visible,\n formatMethod: (value: string) => {\n return createLinearFormat(value, autoFormat, numFormat, formatter)\n },\n style: {\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n },\n title: {\n visible: title?.visible,\n text: title?.titleText || defaultTitleText(measures, dimensions, encoding.y as string[]),\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n lineDash: grid?.gridLineDash,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n innerOffset: {\n top: LINEAR_AXIS_INNER_OFFSET_TOP,\n // bottom: LINEAR_AXIS_INNER_OFFSET_TOP,\n },\n }\n\n result.axes = [...result.axes, linearAxis] as ISpec['axes']\n\n return result\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { AXIS_LABEL_SPACE, LINEAR_AXIS_INNER_OFFSET_TOP } from '../../../../utils/constant'\nimport { createNumFormatter } from '../../../../utils'\nimport type { SpecPipe, YLinearAxis } from 'src/types'\nimport { isEmpty, isNullish } from 'remeda'\nimport { createLinearFormat } from './format/linearFormat'\nimport { defaultTitleText } from './title/defaultTitleText'\n\nexport const yLinearSecondary: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { datasetReshapeInfo, measures, dimensions, encoding } = advancedVSeed\n const { index, id: reshapeInfoId, foldInfoList } = datasetReshapeInfo[0]\n // TODO: default config missing\n const secondaryYAxis = advancedVSeed.config?.[chartType as 'dualAxis']?.secondaryYAxis as YLinearAxis | YLinearAxis[]\n const yAxisConfig = Array.isArray(secondaryYAxis) ? secondaryYAxis[index] || secondaryYAxis[0] : secondaryYAxis\n const alignTicks = advancedVSeed.config?.[chartType as 'dualAxis']?.alignTicks as boolean | boolean[]\n const alignTicksConfig = Array.isArray(alignTicks) ? alignTicks[index] || alignTicks[0] : alignTicks\n\n if (isNullish(foldInfoList?.[1])) {\n return result\n }\n\n const isEmptySecondary = isEmpty(foldInfoList?.[1].foldMap)\n const onlySecondary = isEmpty(foldInfoList?.[0].foldMap) && !isEmptySecondary\n\n const sync = {\n axisId: `${reshapeInfoId}-primary-axis`,\n zeroAlign: true,\n }\n\n const id = `${reshapeInfoId}-secondary-axis`\n const seriesIds = [`${reshapeInfoId}-primary-series`, `${reshapeInfoId}-secondary-series`]\n const seriesId = alignTicksConfig ? seriesIds : seriesIds[1]\n if (!result.axes) {\n result.axes = []\n }\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n\n zero,\n nice,\n inverse,\n max,\n min,\n log,\n logBase = 10,\n numFormat = {},\n autoFormat,\n } = yAxisConfig\n\n const formatter = createNumFormatter(numFormat)\n\n const linearAxis = {\n visible: isEmptySecondary ? false : visible,\n id,\n seriesId,\n sync,\n type: log ? 'log' : 'linear',\n base: logBase,\n orient: 'right',\n nice,\n zero: log ? false : zero,\n inverse,\n max,\n min,\n label: {\n space: AXIS_LABEL_SPACE,\n visible: label?.visible,\n formatMethod: (value: string) => {\n return createLinearFormat(value, autoFormat, numFormat, formatter)\n },\n style: {\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n },\n title: {\n visible: title?.visible,\n text: title?.titleText || defaultTitleText(measures, dimensions, encoding.y as string[]),\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: onlySecondary ? true : grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n lineDash: grid?.gridLineDash,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n innerOffset: {\n top: LINEAR_AXIS_INNER_OFFSET_TOP,\n // bottom: LINEAR_AXIS_INNER_OFFSET_TOP,\n },\n }\n\n result.axes = [...result.axes, linearAxis] as ISpec['axes']\n\n return result\n}\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport type { Color, SpecPipe } from 'src/types'\n\nexport const linearColorForDualAxis: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo, chartType } = advancedVSeed\n const { unfoldInfo, id } = datasetReshapeInfo[0]\n const baseConfig = advancedVSeed.config[chartType] as { color: Color }\n\n if (!baseConfig || !baseConfig.color) {\n return result\n }\n\n const { color } = baseConfig\n const { colorScheme, linearColorScheme } = color\n\n result.color = {\n type: 'linear',\n range: linearColorScheme || colorScheme || [],\n domain: [\n {\n dataId: `${id}-primary-dataset`,\n fields: [unfoldInfo.encodingColor],\n },\n {\n dataId: `${id}-secondary-dataset`,\n fields: [unfoldInfo.encodingColor],\n },\n ],\n }\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n xBand,\n backgroundColor,\n discreteLegend,\n color,\n initPivot,\n datasetPivot,\n pivotDiscreteLegend,\n pivotIndicators,\n pivotAdapter,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n pointStyle,\n lineStyle,\n pointStateDimensionHover,\n progressive,\n datasetPrimary,\n datasetSecondary,\n areaStyle,\n barStyle,\n verticalCrosshairRect,\n yLinearSecondary,\n initDualAxisPrimary,\n initDualAxisSecondary,\n labelPrimary,\n labelSecondary,\n tooltipPrimary,\n tooltipSecondary,\n yLinearPrimary,\n dualChartTypePrimary,\n dualChartTypeSecondary,\n seriesDualAxis,\n series,\n colorBarStyleFill,\n colorPointStyleFill,\n colorLineStyleFill,\n colorAreaStyleFill,\n linearColor,\n colorAdapter,\n colorLegend,\n pivotColorLegend,\n linearColorForDualAxis,\n annotationAreaBand,\n barMaxWidth,\n barGapInGroup,\n stackCornerRadius,\n pivotTitle,\n pivotAxisStyle,\n} from '../pipes'\n\nconst dualAxis: SpecPipeline = [\n seriesDualAxis(\n [\n initDualAxisPrimary,\n dualChartTypePrimary,\n datasetPrimary,\n labelPrimary,\n tooltipPrimary,\n progressive,\n\n barMaxWidth,\n barGapInGroup,\n stackCornerRadius,\n\n colorBarStyleFill(barStyle),\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n ],\n [\n initDualAxisSecondary,\n dualChartTypeSecondary,\n datasetSecondary,\n labelSecondary,\n tooltipSecondary,\n progressive,\n\n barMaxWidth,\n barGapInGroup,\n stackCornerRadius,\n\n colorBarStyleFill(barStyle),\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n ],\n ),\n xBand,\n yLinearPrimary,\n yLinearSecondary,\n\n colorAdapter(color, linearColorForDualAxis),\n colorAdapter(discreteLegend, colorLegend),\n\n backgroundColor,\n\n verticalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotDualAxis: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n series(\n [\n initDualAxisPrimary,\n dualChartTypePrimary,\n datasetPrimary,\n labelPrimary,\n tooltipPrimary,\n progressive,\n\n stackCornerRadius,\n barMaxWidth,\n barGapInGroup,\n\n colorBarStyleFill(barStyle),\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n ],\n [\n initDualAxisSecondary,\n dualChartTypeSecondary,\n datasetSecondary,\n labelSecondary,\n tooltipSecondary,\n progressive,\n\n stackCornerRadius,\n barMaxWidth,\n barGapInGroup,\n\n colorBarStyleFill(barStyle),\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n ],\n ),\n xBand,\n yLinearPrimary,\n pivotAxisStyle(yLinearSecondary),\n colorAdapter(color, linearColor),\n backgroundColor,\n verticalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const dualAxisSpecPipeline: SpecPipeline = [pivotAdapter(dualAxis, pivotDualAxis)]\n","import { dualAxisAdvancedPipeline, dualAxisSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerDualAxis = () => {\n Builder._advancedPipelineMap['dualAxis'] = dualAxisAdvancedPipeline\n Builder._specPipelineMap['dualAxis'] = dualAxisSpecPipeline\n}\n","import { unique } from 'remeda'\nimport { MeasureId } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\nimport { addColorToEncoding } from './color'\n\nexport const defaultEncodingForPie: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding)\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForPie: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding, measures.length > 1)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\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) => {\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.color = uniqueDimIds.slice(0) // 第1个之后的维度用于颜色\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 // 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 = [MeasureId]\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.angle = unique(measures.filter((item) => item.encoding === 'angle' || !item.encoding).map((item) => item.id))\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n // angle\n encoding.angle = unique(measures.filter((item) => item.encoding === 'angle' || !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])\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n pieConfig,\n annotation,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n encodingForPie,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n encodingAdapter,\n defaultEncodingForPie,\n deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const pieAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n\n encodingAdapter(\n [defaultEncodingForPie, buildMeasures],\n [\n encodingForPie,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n pieConfig,\n theme,\n annotation,\n]\n","import type { IPieChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initPie: SpecPipe = (spec, context) => {\n const result = { ...spec } as IPieChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n result.type = 'pie'\n result.outerRadius = 0.8\n result.innerRadius = 0\n result.valueField = foldInfo.measureValue\n result.categoryField = unfoldInfo.encodingColorId\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n\n result.animation = true\n\n return result\n}\n","import type { IPieChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from './colorAdapter'\n\nexport const colorPieStyleFill = (stylePipe: SpecPipe): SpecPipe => {\n return (spec, context) => {\n const result = stylePipe(spec, context) as IPieChartSpec\n\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed, vseed)) {\n if (result?.pie?.style) {\n result.pie.style.fill = {\n field: unfoldInfo.encodingColor,\n scale: 'color',\n }\n }\n }\n\n return result\n }\n}\n","import type { IPieChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const pieStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { dataset } = advancedVSeed\n const showStroke = dataset.length <= 30\n const config = advancedVSeed.config?.[chartType as 'pie']\n\n const result = {\n ...spec,\n pie: {\n style: {\n stroke: config?.backgroundColor ?? '#ffffff',\n lineWidth: showStroke ? 1 : 0,\n },\n },\n } as Required<IPieChartSpec>\n\n if ((spec as IPieChartSpec).outerRadius) {\n result.pie.state = {\n hover: {\n outerRadius: ((spec as IPieChartSpec).outerRadius as number) * 1.1,\n },\n }\n }\n\n if (config?.cornerRadius) {\n result.pie.style!.cornerRadius = config.cornerRadius\n }\n\n return result\n}\n","import type { IPieChartSpec } from '@visactor/vchart'\nimport type { Encoding, FoldInfo, PieLabel, SpecPipe } from 'src/types'\nimport { buildLabel } from './label'\n\nexport const labelPie: SpecPipe = (spec, context) => {\n const result = { ...spec } as IPieChartSpec\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { chartType, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { label: PieLabel }\n const foldInfo = datasetReshapeInfo[0].foldInfo as FoldInfo\n\n const { label } = baseConfig\n\n result.label = buildLabel(\n label,\n vseed.measures,\n vseed.dimensions,\n advancedVSeed.dimensions,\n advancedVSeed.measures,\n encoding as Encoding,\n [foldInfo],\n ) as unknown as IPieChartSpec['label']\n if (label.labelLayout) {\n ;(result.label as any)!.layout = {\n align: label.labelLayout,\n }\n }\n return result\n}\n","import type { SpecPipe } from 'src/types'\n\nexport const pivotHideIndicatorName: SpecPipe = (spec) => {\n return {\n ...spec,\n hideIndicatorName: true,\n }\n}\n","import type { IPieChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const addRegionPadding: SpecPipe = (spec) => {\n const result = { ...spec } as IPieChartSpec\n\n if (result.region && result.region.length > 0) {\n result.region[0].padding = 10\n }\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n backgroundColor,\n color,\n datasetXY,\n datasetPivot,\n initPie,\n initPivot,\n discreteLegend,\n pivotAdapter,\n pivotColumnDimensions,\n pivotGridStyle,\n pivotIndicators,\n pivotIndicatorsAsRow,\n pivotDiscreteLegend,\n pivotRowDimensions,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n progressive,\n pieStyle,\n colorPieStyleFill,\n linearColor,\n colorAdapter,\n colorLegend,\n pivotColorLegend,\n labelPie,\n pivotHideIndicatorName,\n pivotTitle,\n addRegionPadding,\n} from '../pipes'\n\nconst pie: SpecPipeline = [\n initPie,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n colorPieStyleFill(pieStyle),\n colorAdapter(discreteLegend, colorLegend),\n labelPie,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotPie: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n pivotHideIndicatorName,\n datasetPivot,\n pivotIndicators([\n initPie,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n colorPieStyleFill(pieStyle),\n labelPie,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n addRegionPadding,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const pieSpecPipeline: SpecPipeline = [pivotAdapter(pie, pivotPie)]\n","import { pieAdvancedPipeline, pieSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerPie = () => {\n Builder._advancedPipelineMap['pie'] = pieAdvancedPipeline\n Builder._specPipelineMap['pie'] = pieSpecPipeline\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n annotation,\n donutConfig,\n encodingForPie,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n encodingAdapter,\n defaultEncodingForPie,\n deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const donutAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n\n encodingAdapter(\n [defaultEncodingForPie, buildMeasures],\n [\n encodingForPie,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n donutConfig,\n theme,\n annotation,\n]\n","import type { IPieChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initDonut: SpecPipe = (spec, context) => {\n const result = { ...spec } as IPieChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { foldInfo, unfoldInfo } = datasetReshapeInfo[0]\n\n result.type = 'pie'\n result.outerRadius = 0.8\n result.innerRadius = result.outerRadius * 0.8\n result.valueField = foldInfo.measureValue\n result.categoryField = unfoldInfo.encodingColorId\n\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n\n result.animation = true\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n backgroundColor,\n color,\n datasetXY,\n datasetPivot,\n initDonut,\n initPivot,\n discreteLegend,\n pivotAdapter,\n pivotColumnDimensions,\n pivotGridStyle,\n pivotIndicators,\n pivotIndicatorsAsRow,\n pivotDiscreteLegend,\n pivotRowDimensions,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n progressive,\n colorAdapter,\n linearColor,\n colorLegend,\n pivotColorLegend,\n pieStyle,\n colorPieStyleFill,\n labelPie,\n pivotHideIndicatorName,\n pivotTitle,\n addRegionPadding,\n} from '../pipes'\n\nconst donut: SpecPipeline = [\n initDonut,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n labelPie,\n colorPieStyleFill(pieStyle),\n colorAdapter(discreteLegend, colorLegend),\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotDonut: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n pivotHideIndicatorName,\n datasetPivot,\n pivotIndicators([\n initDonut,\n addRegionPadding,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n labelPie,\n colorPieStyleFill(pieStyle),\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const donutSpecPipeline: SpecPipeline = [pivotAdapter(donut, pivotDonut)]\n","import { donutAdvancedPipeline, donutSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerDonut = () => {\n Builder._advancedPipelineMap['donut'] = donutAdvancedPipeline\n Builder._specPipelineMap['donut'] = donutSpecPipeline\n}\n","import { unique } from 'remeda'\nimport { MeasureId } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\nimport { addColorToEncoding } from './color'\n\nexport const defaultEncodingForRose: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding)\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForRose: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n\n // encoding for modify in place\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding, measures.length > 1)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\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) => {\n const onlyMeasureId = dimensions.length === 1 && dimensions.find((item) => item.id === MeasureId)\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.angle = uniqueDimIds.slice(0, 1) // 第一个维度放置于X轴\n encoding.color = uniqueDimIds.slice(onlyMeasureId ? 0 : 1) // 第二个之后的维度用于颜色\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 // angle\n encoding.angle = unique(dimensions.filter((item) => item.encoding === 'angle').map((item) => item.id))\n if (encoding.angle.length === 0) {\n encoding.angle = [dimensions[0].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.radius = unique(\n measures.filter((item) => item.encoding === 'radius' || !item.encoding).map((item) => item.id),\n )\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n // y\n encoding.radius = unique(\n measures.filter((item) => item.encoding === 'radius' || !item.encoding).map((item) => item.id),\n )\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])\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n markStyle,\n annotation,\n roseConfig,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n encodingAdapter,\n encodingForRose,\n defaultEncodingForRose,\n deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const roseAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n\n encodingAdapter(\n [defaultEncodingForRose, buildMeasures],\n [\n encodingForRose,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n roseConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initRose: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRoseChartSpec\n const { advancedVSeed } = context\n const { dataset, datasetReshapeInfo } = advancedVSeed\n const { foldInfo, unfoldInfo } = datasetReshapeInfo[0]\n\n result.type = 'rose'\n\n result.angleField = unfoldInfo.encodingAngle\n result.seriesField = unfoldInfo.encodingColorId\n\n result.valueField = foldInfo.measureValue\n result.padding = 0\n result.outerRadius = 0.9\n result.innerRadius = 0\n\n const hasNegativeValue = dataset.flat().find((d) => d[foldInfo.measureValue] < 0)\n if (hasNegativeValue) {\n result.innerRadius = 0.05\n }\n\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const radiusAxis: SpecPipe = (spec) => {\n const result = { ...spec } as IRoseChartSpec\n\n if (!result.axes) {\n result.axes = []\n }\n\n result.axes.push({\n type: 'linear',\n orient: 'radius',\n visible: false,\n zero: true,\n nice: false,\n })\n\n return result\n}\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from './colorAdapter'\n\nexport const colorRoseStyleFill = (stylePipe: SpecPipe): SpecPipe => {\n return (spec, context) => {\n const result = stylePipe(spec, context) as IRoseChartSpec\n\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed, vseed)) {\n if (result?.rose?.style) {\n result.rose.style.fill = {\n field: unfoldInfo.encodingColor,\n scale: 'color',\n }\n }\n }\n\n return result\n }\n}\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const roseStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { dataset } = advancedVSeed\n const showStroke = dataset.length <= 30\n\n const result = {\n ...spec,\n rose: {\n style: {},\n },\n } as Required<IRoseChartSpec>\n\n return {\n ...result,\n rose: {\n style: {\n stroke: '#ffffff',\n lineWidth: showStroke ? 1 : 0,\n },\n state: {\n hover: {\n lineWidth: 1,\n fillOpacity: 0.6,\n },\n },\n },\n }\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n backgroundColor,\n tooltip,\n discreteLegend,\n color,\n pivotAdapter,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n stackInverse,\n verticalCrosshairRect,\n stackCornerRadius,\n initRose,\n radiusAxis,\n progressive,\n linearColor,\n colorAdapter,\n pivotColorLegend,\n colorLegend,\n roseStyle,\n colorRoseStyleFill,\n labelPie,\n pivotHideIndicatorName,\n pivotTitle,\n addRegionPadding,\n} from '../pipes'\n\nconst rose: SpecPipeline = [\n initRose,\n stackCornerRadius,\n stackInverse,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n radiusAxis,\n verticalCrosshairRect,\n colorRoseStyleFill(roseStyle),\n colorAdapter(discreteLegend, colorLegend),\n labelPie,\n tooltip,\n]\n\nconst pivotRose: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n pivotHideIndicatorName,\n datasetPivot,\n pivotIndicators([\n initRose,\n addRegionPadding,\n stackCornerRadius,\n stackInverse,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n radiusAxis,\n verticalCrosshairRect,\n colorRoseStyleFill(roseStyle),\n labelPie,\n tooltip,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const roseSpecPipeline = [pivotAdapter(rose, pivotRose)]\n","import { roseAdvancedPipeline, roseSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerRose = () => {\n Builder._advancedPipelineMap['rose'] = roseAdvancedPipeline\n Builder._specPipelineMap['rose'] = roseSpecPipeline\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n markStyle,\n annotation,\n roseParallelConfig,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n encodingAdapter,\n encodingForRose,\n defaultEncodingForRose,\n deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const roseParallelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n\n encodingAdapter(\n [defaultEncodingForRose, buildMeasures],\n [\n encodingForRose,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n roseParallelConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport { isDeepEqual } from 'remeda'\nimport { MeasureId } from 'src/dataReshape'\nimport type { SpecPipe } from 'src/types'\n\nexport const initRoseParallel: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRoseChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo, dataset, encoding } = advancedVSeed\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n const sameDimensionsMode = isDeepEqual(encoding.angle, encoding.color)\n\n result.type = 'rose'\n result.angleField = [unfoldInfo.encodingAngle]\n\n if (!sameDimensionsMode) {\n result.angleField.push(unfoldInfo.encodingDetail)\n\n if (encoding.detail?.[0] === MeasureId && encoding.radius?.length === 1) {\n result.angleField.pop()\n }\n }\n\n result.valueField = foldInfo.measureValue\n result.seriesField = unfoldInfo.encodingColorId\n result.padding = 0\n\n result.outerRadius = 0.9\n result.innerRadius = 0\n\n const hasNegativeValue = dataset.flat().find((d) => d[foldInfo.measureValue] < 0)\n if (hasNegativeValue) {\n result.innerRadius = 0.05\n }\n\n result.rose = {\n style: {\n stroke: '#ffffff',\n lineWidth: 1,\n },\n state: {\n hover: {\n lineWidth: 1,\n fillOpacity: 0.6,\n },\n },\n }\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n backgroundColor,\n tooltip,\n discreteLegend,\n color,\n pivotIndicators,\n initPivot,\n datasetPivot,\n pivotAdapter,\n pivotDiscreteLegend,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n verticalCrosshairRect,\n stackCornerRadius,\n initRoseParallel,\n radiusAxis,\n progressive,\n pivotColorLegend,\n colorAdapter,\n linearColor,\n colorLegend,\n roseStyle,\n colorRoseStyleFill,\n labelPie,\n pivotHideIndicatorName,\n pivotTitle,\n addRegionPadding,\n} from '../pipes'\n\nconst roseParallel: SpecPipeline = [\n initRoseParallel,\n stackCornerRadius,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n radiusAxis,\n colorRoseStyleFill(roseStyle),\n colorAdapter(discreteLegend, colorLegend),\n labelPie,\n tooltip,\n verticalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotRoseParallel: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n pivotHideIndicatorName,\n datasetPivot,\n pivotIndicators([\n initRoseParallel,\n addRegionPadding,\n stackCornerRadius,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n radiusAxis,\n verticalCrosshairRect,\n colorRoseStyleFill(roseStyle),\n labelPie,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const roseParallelSpecPipeline: SpecPipeline = [pivotAdapter(roseParallel, pivotRoseParallel)]\n","import { roseParallelAdvancedPipeline, roseParallelSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerRoseParallel = () => {\n Builder._advancedPipelineMap['roseParallel'] = roseParallelAdvancedPipeline\n Builder._specPipelineMap['roseParallel'] = roseParallelSpecPipeline\n}\n","import { unique } from 'remeda'\nimport { MeasureId } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\nimport { addColorToEncoding } from './color'\n\nexport const defaultEncodingForRadar: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding)\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForRadar: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding, measures.length > 1)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\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) => {\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.angle = uniqueDimIds.slice(0, 1)\n encoding.color = uniqueDimIds.slice(1)\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureId) // 展示指标名称之外的所有维度\n encoding.detail = [] // 雷达图暂不支持细分\n encoding.label = []\n encoding.row = []\n encoding.column = []\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\n // angle\n encoding.angle = unique(dimensions.filter((item) => item.encoding === 'angle').map((item) => item.id))\n if (encoding.angle.length === 0) {\n encoding.angle = [dimensions[0].id]\n }\n\n // color\n addColorToEncoding(dimensions, encoding, isMultiMeasure)\n\n // detail\n encoding.detail = []\n if (encoding.detail.length === 0) {\n encoding.detail = [MeasureId]\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 */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.radius = unique(\n measures.filter((item) => item.encoding === 'radius' || !item.encoding).map((item) => item.id),\n )\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n // radius\n encoding.radius = unique(\n measures.filter((item) => item.encoding === 'radius' || !item.encoding).map((item) => item.id),\n )\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])\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n annotation,\n markStyle,\n sortLegend,\n radarConfig,\n encodingForRadar,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n encodingAdapter,\n defaultEncodingForRadar,\n deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const radarAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n\n encodingAdapter(\n [defaultEncodingForRadar, buildMeasures],\n [\n encodingForRadar,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n // sortXBandAxis,\n sortLegend,\n radarConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IRadarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from '../color/colorAdapter'\n\nexport const initRadar: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRadarChartSpec\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n result.type = 'radar'\n result.angleField = unfoldInfo.encodingAngle\n result.radiusField = foldInfo.measureValue\n result.seriesField = isLinearColor(advancedVSeed, vseed) ? unfoldInfo.encodingDetail : unfoldInfo.encodingColorId\n\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const radarAngleAxis: SpecPipe = (spec) => {\n const result = { ...spec } as IRoseChartSpec\n\n if (!result.axes) {\n result.axes = []\n }\n\n result.axes.push({\n orient: 'angle',\n visible: true,\n zero: true,\n nice: true,\n grid: {\n visible: true,\n },\n domainLine: {\n visible: true,\n },\n tick: {\n visible: true,\n },\n })\n\n return result\n}\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const radarRadiusAxis: SpecPipe = (spec) => {\n const result = { ...spec } as IRoseChartSpec\n\n if (!result.axes) {\n result.axes = []\n }\n\n result.axes.push({\n orient: 'radius',\n visible: true,\n zero: true,\n nice: true,\n grid: {\n visible: true,\n },\n tick: {\n visible: true,\n },\n label: {\n visible: true,\n },\n domainLine: {\n visible: true,\n },\n })\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n initPivot,\n datasetPivot,\n pivotDiscreteLegend,\n pivotIndicators,\n pivotAdapter,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n pointStyle,\n lineStyle,\n verticalCrosshairLine,\n pointStateDimensionHover,\n initRadar,\n areaStyle,\n radarAngleAxis,\n radarRadiusAxis,\n progressive,\n linearColor,\n colorAdapter,\n colorLegend,\n colorPointStyleFill,\n colorLineStyleFill,\n colorAreaStyleFill,\n pivotColorLegend,\n pivotHideIndicatorName,\n pivotTitle,\n addRegionPadding,\n} from '../pipes'\n\nconst radar: SpecPipeline = [\n initRadar,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n radarAngleAxis,\n radarRadiusAxis,\n label,\n tooltip,\n colorAdapter(discreteLegend, colorLegend),\n verticalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n // annotationPoint,\n // annotationVerticalLine,\n // annotationHorizontalLine,\n // annotationArea,\n]\n\nconst pivotRadar: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n pivotHideIndicatorName,\n datasetPivot,\n pivotIndicators([\n initRadar,\n addRegionPadding,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n radarAngleAxis,\n radarRadiusAxis,\n label,\n tooltip,\n verticalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n // annotationPoint,\n // annotationVerticalLine,\n // annotationHorizontalLine,\n // annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const radarSpecPipeline: SpecPipeline = [pivotAdapter(radar, pivotRadar)]\n","import { radarAdvancedPipeline, radarSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerRadar = () => {\n Builder._advancedPipelineMap['radar'] = radarAdvancedPipeline\n Builder._specPipelineMap['radar'] = radarSpecPipeline\n}\n","import { unique } from 'remeda'\nimport { MeasureId } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\nimport { addColorToEncoding } from './color'\n\nexport const defaultEncodingForFunnel: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding)\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForFunnel: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding, measures.length > 1)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\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) => {\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.color = uniqueDimIds.slice(0) // 第0个之后的维度用于颜色\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 // 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 = [MeasureId]\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 */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.size = unique(measures.filter((item) => item.encoding === 'size' || !item.encoding).map((item) => item.id))\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n // size\n encoding.size = unique(measures.filter((item) => item.encoding === 'size' || !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[0]]\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])\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n annotation,\n funnelConfig,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n encodingForFunnel,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n encodingAdapter,\n defaultEncodingForFunnel,\n deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const funnelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n\n encodingAdapter(\n [defaultEncodingForFunnel, buildMeasures],\n [\n encodingForFunnel,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n funnelConfig,\n theme,\n annotation,\n]\n","import type { IFunnelChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initFunnel: SpecPipe = (spec, context) => {\n const result = { ...spec } as IFunnelChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { foldInfo, unfoldInfo } = datasetReshapeInfo[0]\n\n result.type = 'funnel'\n result.valueField = foldInfo.measureValue\n result.categoryField = unfoldInfo.encodingColorId\n\n result.padding = 0\n result.isTransform = true\n result.shape = 'rect'\n result.maxSize = '75%'\n result.minSize = '10%'\n result.region = [\n {\n clip: true,\n },\n ]\n\n result.animation = true\n\n return result\n}\n","import type { IFunnelChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from './colorAdapter'\n\nexport const colorFunnelStyleFill = (stylePipe: SpecPipe): SpecPipe => {\n return (spec, context) => {\n const result = stylePipe(spec, context) as IFunnelChartSpec\n\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed, vseed)) {\n if (result?.funnel?.style) {\n result.funnel.style.fill = {\n field: unfoldInfo.encodingColor,\n scale: 'color',\n }\n }\n }\n\n return result\n }\n}\n","import type { IFunnelChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const funnelStyle: SpecPipe = (spec) => {\n const result = {\n ...spec,\n funnel: {\n style: {},\n },\n } as IFunnelChartSpec\n\n return {\n ...result,\n funnel: {\n style: {\n cornerRadius: 0,\n },\n state: {\n hover: {\n fillOpacity: 0.6,\n },\n },\n },\n }\n}\n","import type { SpecPipe } from 'src/types'\n\nexport const funnelTransformStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const config = advancedVSeed.config?.[chartType as 'funnel']?.transform\n\n return {\n ...spec,\n transform: {\n style: {\n fill: config?.backgroundColor,\n },\n },\n transformLabel: {\n visible: true,\n style: {\n fill: config?.textColor,\n },\n },\n }\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n backgroundColor,\n datasetXY,\n datasetPivot,\n initPivot,\n label,\n pivotAdapter,\n pivotColumnDimensions,\n pivotGridStyle,\n pivotIndicators,\n pivotIndicatorsAsRow,\n pivotRowDimensions,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n initFunnel,\n discreteLegend,\n color,\n funnelStyle,\n linearColor,\n colorAdapter,\n colorLegend,\n colorFunnelStyleFill,\n pivotDiscreteLegend,\n pivotColorLegend,\n pivotHideIndicatorName,\n funnelTransformStyle,\n pivotTitle,\n} from '../pipes'\n\nconst funnel: SpecPipeline = [\n initFunnel,\n backgroundColor,\n datasetXY,\n colorAdapter(color, linearColor),\n label,\n colorAdapter(discreteLegend, colorLegend),\n colorFunnelStyleFill(funnelStyle),\n funnelTransformStyle,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotFunnel: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n pivotHideIndicatorName,\n datasetPivot,\n pivotIndicators([\n initFunnel,\n backgroundColor,\n datasetXY,\n colorAdapter(color, linearColor),\n label,\n tooltip,\n colorFunnelStyleFill(funnelStyle),\n funnelTransformStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const funnelSpecPipeline: SpecPipeline = [pivotAdapter(funnel, pivotFunnel)]\n","import { funnelAdvancedPipeline, funnelSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerFunnel = () => {\n Builder._advancedPipelineMap['funnel'] = funnelAdvancedPipeline\n Builder._specPipelineMap['funnel'] = funnelSpecPipeline\n}\n","import { unique } from 'remeda'\nimport { MeasureId } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\nimport { addColorToEncoding } from './color'\n\nexport const defaultEncodingForHeatmap: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding)\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForHeatmap: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding, measures.length > 1)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\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) => {\n const onlyMeasureId = dimensions.length === 1 && dimensions.find((item) => item.id === MeasureId)\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.x = uniqueDimIds.slice(0, 1) // 第一个维度放置于X轴\n encoding.y = uniqueDimIds.slice(onlyMeasureId ? 0 : 1) // 第2个维度放置于Y轴\n encoding.color = uniqueDimIds.slice(onlyMeasureId ? 0 : 1) // 第二个之后的维度用于颜色\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 encoding.x = unique(dimensions.filter((item) => item.encoding === 'xAxis').map((item) => item.id))\n // x\n if (encoding.x.length === 0) {\n encoding.x = [dimensions[0].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 if (dimensions.length > 1) {\n encoding.y = dimensions.slice(1).map((item) => item.id)\n } else {\n encoding.y = dimensions.slice(0).map((item) => item.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 // tooltip\n encoding.tooltip = unique(dimensions.map((item) => item.id))\n encoding.tooltip = encoding.tooltip.filter((d) => d !== MeasureId)\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 const colorDims = unique(\n measures.filter((item) => item.encoding === 'color' || !item.encoding).map((item) => item.id),\n )\n if (colorDims.length > 0) {\n encoding.color = [colorDims[0]]\n }\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\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[0]]\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])\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n annotation,\n markStyle,\n sortXBandAxis,\n heatmapConfig,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n encodingForHeatmap,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n encodingAdapter,\n defaultEncodingForHeatmap,\n deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const heatmapAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n\n encodingAdapter(\n [defaultEncodingForHeatmap, buildMeasures],\n [encodingForHeatmap, buildMeasures, deleteEncodingForMeasure(['tooltip', 'label']), deleteTooltipAndLabelDimension],\n ),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n sortXBandAxis,\n heatmapConfig,\n theme,\n markStyle,\n annotation,\n]\n","/* eslint-disable @typescript-eslint/no-unsafe-assignment */\nimport type { SpecPipe } from 'src/types'\nimport { colorLegend } from './colorLegend'\nimport type { Datum, IHeatmapChartSpec } from '@visactor/vchart'\nimport { DATUM_HIDE_KEY } from 'src/pipeline/utils/constant'\n\nexport const heatmapColorLegend: SpecPipe = (spec, context) => {\n const result = colorLegend(spec, context) as IHeatmapChartSpec\n\n if (result.legends) {\n ;(result.legends as any).customFilter = (data: Datum[], range: number[], key: string) => {\n const min = Math.min(range[0], range[1])\n const max = Math.max(range[0], range[1])\n return (data ?? []).map((entry: Datum) => {\n const val = entry[key]\n const isHide = val - min < -1e-6 || val - max > 1e-6\n\n entry[DATUM_HIDE_KEY] = isHide\n\n return entry\n })\n }\n }\n\n return result\n}\n","import type { IHeatmapChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from './colorAdapter'\n\nexport const colorCellStyleFill = (stylePipe: SpecPipe): SpecPipe => {\n return (spec, context) => {\n const result = stylePipe(spec, context) as IHeatmapChartSpec\n\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed, vseed)) {\n if (result?.cell?.style) {\n result.cell.style.fill = {\n field: unfoldInfo.encodingColor,\n scale: 'color',\n }\n }\n }\n\n return result\n }\n}\n","import type { IHeatmapChartSpec } from '@visactor/vchart'\nimport { DATUM_HIDE_KEY } from 'src/pipeline/utils/constant'\nimport type { SpecPipe } from 'src/types'\n\nexport const cellStyle: SpecPipe = (spec, context) => {\n const result = {\n ...spec,\n cell: {\n style: {},\n },\n } as IHeatmapChartSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const cell = advancedVSeed.config?.[chartType as 'heatmap']?.cell\n\n return {\n ...result,\n cell: {\n style: {\n visible: (datum: any) => {\n return datum?.[DATUM_HIDE_KEY] !== true\n },\n shape: 'rect',\n stroke: cell?.stroke,\n lineWidth: cell?.lineWidth ?? 1,\n },\n },\n }\n}\n","import { uniqueBy } from 'remeda'\nimport { createFormatterByMeasure, findAllMeasures, findMeasureById } from '../../../../utils'\nimport type { Datum, Dimensions, FoldInfo, Locale, Measures, SpecPipe, Tooltip, UnfoldInfo } from 'src/types'\nimport { ORIGINAL_DATA } from 'src/dataReshape'\nimport { getTooltipStyle } from './tooltipStyle'\n\nexport const tooltipHeatmap: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n const { foldInfo } = datasetReshapeInfo[0] as unknown as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n result.tooltip = {\n style: getTooltipStyle(tooltip),\n visible: enable,\n\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(encoding.tooltip || [], dimensions, findAllMeasures(vseed.measures), locale, foldInfo),\n },\n dimension: {\n visible: false,\n },\n }\n return result\n}\n\nexport const createMarkContent = (\n tooltip: string[],\n dimensions: Dimensions,\n measures: Measures,\n locale: Locale,\n foldInfo: FoldInfo,\n) => {\n const dims = uniqueBy(\n dimensions.filter((item) => tooltip.includes(item.id)),\n (item) => item.id,\n )\n const meas = uniqueBy(\n measures.filter((item) => tooltip.includes(item.id)),\n (item) => item.id,\n )\n\n const dimContent = dims.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const datum = v as Datum\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return datum && (datum[item.id] as string)\n },\n value: (v: unknown) => {\n const datum = v as Datum\n return datum && (datum[item.id] as string)\n },\n }))\n\n const meaContent = meas.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias || item.id,\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const id = item.id\n if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) {\n return ''\n }\n const originalData = datum[ORIGINAL_DATA] as Datum\n const value = originalData[id] as string | number\n const measure = findMeasureById(measures, id)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }))\n\n const foldMeaContent = [foldInfo].map((foldInfo) => {\n return {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const { measureId, foldMap } = foldInfo\n const datum = v as Datum\n const id = datum[measureId] as string\n return foldMap[id] || id\n },\n value: (v: unknown) => {\n const { measureId, measureValue } = foldInfo\n\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }\n })\n return [...dimContent, ...foldMeaContent, ...meaContent]\n}\n","import type { IHeatmapChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initHeatmap: SpecPipe = (spec, context) => {\n const result = { ...spec } as IHeatmapChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n result.type = 'heatmap'\n result.direction = 'vertical'\n result.xField = unfoldInfo.encodingX\n result.yField = unfoldInfo.encodingY\n result.seriesField = unfoldInfo.encodingColorId\n result.valueField = foldInfo.measureValue\n result.padding = 0\n result.axes = [\n {\n type: 'band',\n orient: 'left',\n bandPadding: 0,\n },\n {\n type: 'band',\n orient: 'bottom',\n bandPadding: 0,\n },\n ]\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n backgroundColor,\n label,\n tooltipHeatmap,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotAdapter,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n discreteLegend,\n color,\n colorAdapter,\n linearColor,\n heatmapColorLegend,\n cellStyle,\n colorCellStyleFill,\n pivotDiscreteLegend,\n pivotColorLegend,\n pivotTitle,\n pivotAxisStyle,\n} from '../pipes'\nimport { initHeatmap } from '../pipes/init/heatmap'\n\nconst heatmap: SpecPipeline = [\n initHeatmap,\n backgroundColor,\n datasetXY,\n colorAdapter(color, linearColor),\n label,\n colorAdapter(discreteLegend, heatmapColorLegend),\n colorCellStyleFill(cellStyle),\n tooltipHeatmap,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotHeatmap: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n pivotAxisStyle(initHeatmap),\n backgroundColor,\n datasetXY,\n colorAdapter(color, linearColor),\n label,\n tooltipHeatmap,\n colorCellStyleFill(cellStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const heatmapSpecPipeline: SpecPipeline = [pivotAdapter(heatmap, pivotHeatmap)]\n","import { heatmapAdvancedPipeline, heatmapSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerHeatmap = () => {\n Builder._advancedPipelineMap['heatmap'] = heatmapAdvancedPipeline\n Builder._specPipelineMap['heatmap'] = heatmapSpecPipeline\n}\n","import { pick } from 'remeda'\nimport { replaceNullToUndefined } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed, Config } from 'src/types'\n\nexport const boxplotConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const pickedConfig = pick(vseed, [\n 'backgroundColor',\n 'color',\n 'label',\n 'legend',\n 'tooltip',\n 'xAxis',\n 'yAxis',\n 'crosshairRect',\n 'whiskers',\n ]) as Config['boxPlot']\n\n const config = replaceNullToUndefined(pickedConfig)\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n","import { unique } from 'remeda'\nimport { MeasureId } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\nimport { addColorToEncoding } from './color'\n\nexport const defaultEncodingForBoxplot: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding)\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForBoxplot: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding, measures.length > 1)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\n }\n\n if (hasMeasureEncoding) {\n generateMeasureEncoding(measures, encoding)\n } else {\n generateDefaultMeasureEncoding(measures, encoding)\n }\n\n if ((!encoding.value || encoding.value.length <= 1) && encoding.color && encoding.color.length > 1) {\n encoding.color = encoding.color.filter((c) => c !== MeasureId)\n }\n\n return { ...advancedVSeed, encoding }\n}\n\n/**\n * --------------------维度--------------------\n */\nconst generateDefaultDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n const onlyMeasureId = dimensions.length === 1 && dimensions.find((item) => item.id === MeasureId)\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.x = uniqueDimIds.slice(0, 1) // 第一个维度放置于X轴\n encoding.color = uniqueDimIds.slice(onlyMeasureId ? 0 : 1) // 第二个之后的维度用于颜色\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 // x\n encoding.x = unique(dimensions.filter((item) => item.encoding === 'xAxis').map((item) => item.id))\n if (encoding.x.length === 0) {\n encoding.x = [dimensions[0].id]\n }\n\n // color\n addColorToEncoding(dimensions, encoding, isMultiMeasure)\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.value = unique(measures.filter((item) => item.encoding === 'value' || !item.encoding).map((item) => item.id))\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n // y\n encoding.value = unique(measures.filter((item) => item.encoding === 'value' || !item.encoding).map((item) => item.id))\n encoding.q1 = unique(measures.filter((item) => item.encoding === 'q1').map((item) => item.id))\n encoding.median = unique(measures.filter((item) => item.encoding === 'median').map((item) => item.id))\n encoding.q3 = unique(measures.filter((item) => item.encoding === 'q3').map((item) => item.id))\n encoding.min = unique(measures.filter((item) => item.encoding === 'min').map((item) => item.id))\n encoding.max = unique(measures.filter((item) => item.encoding === 'max').map((item) => item.id))\n encoding.outliers = unique(measures.filter((item) => item.encoding === 'outliers').map((item) => item.id))\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])\n}\n","import {\n FoldMeasureId,\n FoldMeasureName,\n MaxMeasureId,\n MedianMeasureId,\n MinMeasureId,\n OutliersMeasureId,\n Q1MeasureValue,\n Q3MeasureValue,\n Separator,\n unfoldDimensions,\n} from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, ColumnParallel, Dataset, Encoding } from 'src/types'\nimport { boxplot } from '@visactor/vdataset'\nimport { uniqueBy } from 'remeda'\n\nexport const reshapeWithBoxplotEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset, chartType } = vseed as ColumnParallel\n const { dimensions = [], measures = [], encoding = {}, config } = advancedVSeed\n const uniqDims = uniqueBy(dimensions, (item) => item.id)\n\n const whiskers = config?.[chartType as 'boxPlot']?.whiskers\n\n let newDatasets: any[] = []\n let foldInfo: any = {}\n let unfoldInfo: any = {}\n\n const allMeasures = findAllMeasures(measures)\n\n if (encoding.value?.length) {\n encoding.value.forEach((f) => {\n const m = allMeasures.find((m) => m.id === f)\n const boxPlotData = boxplot(dataset, {\n field: f,\n groupField: [...(encoding.x ?? []), ...(encoding.color ?? [])] as string[],\n whiskers,\n outputNames: {\n q1: Q1MeasureValue,\n q3: Q3MeasureValue,\n min: MinMeasureId,\n max: MaxMeasureId,\n median: MedianMeasureId,\n outliers: OutliersMeasureId,\n },\n }) as Dataset\n\n boxPlotData.forEach((datum) => {\n datum[FoldMeasureId] = f\n datum[FoldMeasureName] = m?.alias ?? f\n })\n\n const res = unfoldDimensions(boxPlotData, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n })\n\n res.dataset.forEach((d) => {\n newDatasets.push(d)\n })\n unfoldInfo = res.unfoldInfo\n })\n } else if (\n encoding.q1?.length &&\n encoding.q3?.length &&\n encoding.min?.length &&\n encoding.max?.length &&\n encoding.median?.length\n ) {\n const res = unfoldDimensions(dataset, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n })\n\n res.dataset.forEach((datum) => {\n datum[MaxMeasureId] = datum[encoding.max![0]]\n datum[MinMeasureId] = datum[encoding.min![0]]\n datum[Q1MeasureValue] = datum[encoding.q1![0]]\n datum[Q3MeasureValue] = datum[encoding.q3![0]]\n datum[MedianMeasureId] = datum[encoding.median![0]]\n })\n\n newDatasets = res.dataset\n foldInfo = {}\n unfoldInfo = res.unfoldInfo\n }\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: [\n {\n id: String(chartType),\n index: 0,\n foldInfo,\n unfoldInfo,\n },\n ],\n dimensions,\n measures,\n }\n}\n","import { boxplot } from '@visactor/vdataset'\nimport { uniqueBy } from 'remeda'\nimport {\n FoldMeasureId,\n FoldMeasureName,\n MaxMeasureId,\n MedianMeasureId,\n MinMeasureId,\n OutliersMeasureId,\n Q1MeasureValue,\n Q3MeasureValue,\n Separator,\n unfoldDimensions,\n} from 'src/dataReshape'\nimport type {\n AdvancedPipe,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Dimension,\n Encoding,\n MeasureGroup,\n} from 'src/types'\n\nexport const pivotReshapeWithBoxplotEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset, chartType } = vseed as ColumnParallel\n const { dimensions = [], measures = [], encoding = {}, config } = advancedVSeed\n const uniqDims = uniqueBy(dimensions, (item: Dimension) => item.id)\n const chartConfig = config?.[chartType as 'boxPlot']\n const whiskers = chartConfig?.whiskers\n\n const measureGroups: MeasureGroup[] = []\n if (measures) {\n measures.forEach((measure: MeasureGroup) => {\n if (measure.children && measure.children.length > 0) {\n measureGroups.push(measure)\n }\n })\n }\n\n const rowColumnFields = uniqueBy(\n dimensions.filter((dim: Dimension) => dim.encoding === 'row' || dim.encoding === 'column'),\n (item: Dimension) => item.id,\n )\n const datasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n measureGroups.forEach((measureGroup, index) => {\n const subMeasures = measureGroup.children\n if (!subMeasures) {\n return\n }\n const groupId = measureGroup.id\n let newDatasets: any[] = []\n let foldInfo: any = {}\n let unfoldInfo: any = {}\n\n if (encoding.value?.length) {\n encoding.value.forEach((f) => {\n const m = subMeasures.find((m) => m.id === f)\n const boxPlotData = boxplot(dataset, {\n field: f,\n groupField: [\n ...(encoding.x ?? []),\n ...(encoding.color ?? []),\n ...rowColumnFields.map((item: Dimension) => item.id),\n ] as string[],\n whiskers,\n outputNames: {\n q1: Q1MeasureValue,\n q3: Q3MeasureValue,\n min: MinMeasureId,\n max: MaxMeasureId,\n median: MedianMeasureId,\n outliers: OutliersMeasureId,\n },\n }) as Dataset\n\n boxPlotData.forEach((datum) => {\n datum[FoldMeasureId] = f\n datum[FoldMeasureName] = m?.alias ?? f\n })\n\n const res = unfoldDimensions(boxPlotData, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n })\n\n res.dataset.forEach((d) => {\n newDatasets.push(d)\n })\n unfoldInfo = res.unfoldInfo\n })\n } else if (\n encoding.q1?.length &&\n encoding.q3?.length &&\n encoding.min?.length &&\n encoding.max?.length &&\n encoding.median?.length\n ) {\n const res = unfoldDimensions(dataset, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n })\n\n res.dataset.forEach((datum) => {\n datum[MaxMeasureId] = datum[encoding.max![0]]\n datum[MinMeasureId] = datum[encoding.min![0]]\n datum[Q1MeasureValue] = datum[encoding.q1![0]]\n datum[Q3MeasureValue] = datum[encoding.q3![0]]\n datum[MedianMeasureId] = datum[encoding.median![0]]\n })\n\n newDatasets = res.dataset\n foldInfo = {}\n unfoldInfo = res.unfoldInfo\n }\n\n const reshapeInfo = {\n id: groupId,\n index,\n foldInfo,\n unfoldInfo,\n }\n datasets.push(newDatasets)\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n return {\n ...result,\n dataset: datasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n markStyle,\n annotation,\n sortLegend,\n pivotReshapeWithBoxplotEncoding,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n encodingAdapter,\n deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n defaultEncodingForBoxplot,\n encodingForBoxplot,\n reshapeWithBoxplotEncoding,\n boxplotConfig,\n} from '../pipes'\n\nexport const boxplotAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n boxplotConfig,\n\n encodingAdapter(\n [defaultEncodingForBoxplot, buildMeasures],\n [\n encodingForBoxplot,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithBoxplotEncoding], [pivotReshapeWithBoxplotEncoding]),\n\n sortLegend,\n theme,\n markStyle,\n annotation,\n]\n","import type { IBoxPlotChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isDeepEqual } from 'remeda'\nimport {\n MaxMeasureId,\n MeasureId,\n MedianMeasureId,\n MinMeasureId,\n OutliersMeasureId,\n Q1MeasureValue,\n Q3MeasureValue,\n} from 'src/dataReshape/constant'\n\nexport const initBoxplot: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBoxPlotChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo, encoding } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n result.type = 'boxPlot'\n result.minField = MinMeasureId\n result.q1Field = Q1MeasureValue\n result.medianField = MedianMeasureId\n result.maxField = MaxMeasureId\n result.q3Field = Q3MeasureValue\n result.outliersField = OutliersMeasureId\n result.xField = [unfoldInfo.encodingX]\n result.seriesField = unfoldInfo.encodingColorId\n\n const sameDimensionsMode = isDeepEqual(encoding.x, encoding.color)\n\n if (!sameDimensionsMode) {\n result.xField.push(unfoldInfo.encodingColor)\n\n if (encoding.color?.[0] === MeasureId && encoding.value?.length === 1) {\n result.xField.pop()\n }\n }\n\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import { isPivotChart } from 'src/pipeline/utils'\nimport type { SpecPipe } from 'src/types'\nimport type { ISpec } from '@visactor/vchart'\n\nexport const datasetBoxplot: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { id } = datasetReshapeInfo[0]\n\n const fields: Record<string, object> = {}\n\n return {\n ...spec,\n data: {\n id,\n // 透视表不使用 dataValues\n values: isPivotChart(vseed) ? undefined : advancedVSeed.dataset.flat(),\n fields: fields,\n },\n } as unknown as ISpec\n}\n","import { pipe, uniqueBy, isNullish } from 'remeda'\nimport { createFormatterByMeasure, findAllMeasures } from '../../../../utils'\nimport type { Dimension, Dimensions, Encoding, Spec, SpecPipe, Tooltip } from 'src/types'\nimport type { Datum, ISpec, ITooltipLinePattern, ITooltipLineActual, TooltipData } from '@visactor/vchart'\nimport {\n ColorEncoding,\n MaxMeasureId,\n MedianMeasureId,\n MinMeasureId,\n OutliersMeasureId,\n Q1MeasureValue,\n Q3MeasureValue,\n XEncoding,\n} from 'src/dataReshape'\nimport { getTooltipStyle } from './tooltipStyle'\n\nconst boxPlotMeasureKeys = [MaxMeasureId, Q3MeasureValue, MedianMeasureId, Q1MeasureValue, MinMeasureId]\nconst VCHART_OUTLIER_KEY = '__VCHART_BOX_PLOT_OUTLIER_VALUE'\n\nexport const tooltipBoxplot: SpecPipe = (spec, context): Partial<Spec> => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { chartType, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n const meas = findAllMeasures(vseed.measures)\n const valueMeasure = meas.find((item) => item.encoding === 'value' || isNullish(item.encoding))\n const defaultFormatter = valueMeasure ? createFormatterByMeasure(valueMeasure) : (v: unknown) => v\n\n result.tooltip = {\n visible: enable,\n style: getTooltipStyle(tooltip),\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(encoding.tooltip || [], dimensions, encoding as Encoding),\n updateContent: (prev: ITooltipLineActual[] | undefined, data: TooltipData | undefined) => {\n const datum = (data as any)?.[0]?.datum?.[0]\n\n if (!isNullish(datum?.[VCHART_OUTLIER_KEY])) {\n const tooltipItems: ITooltipLineActual[] = (prev ?? []).filter(\n (item: any) => !boxPlotMeasureKeys.includes(item.key as string),\n )\n const outerlierMeasure = meas.find((item) => item.id === OutliersMeasureId)\n const formatter = outerlierMeasure ? createFormatterByMeasure(outerlierMeasure) : defaultFormatter\n\n tooltipItems.push({\n ...(tooltipItems[0] as any),\n key: outerlierMeasure?.alias ?? OutliersMeasureId,\n value: formatter(datum?.[VCHART_OUTLIER_KEY] as number) as string,\n } as ITooltipLineActual)\n\n return tooltipItems\n }\n\n return (prev ?? []).map((entry) => {\n if (boxPlotMeasureKeys.includes((entry as any).key as string)) {\n const mea = meas.find((item) => item.id === (entry as any).key)\n const formatter = mea ? createFormatterByMeasure(mea) : defaultFormatter\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return {\n ...(entry as any),\n value: formatter(datum?.[(entry as any).key] as number) as string,\n key: mea?.alias ?? (entry as any).key,\n }\n }\n\n return entry\n }) as ITooltipLineActual[]\n },\n },\n dimension: {\n visible: false,\n },\n }\n return result as unknown as ISpec\n}\n\nconst createMarkContent = (tooltip: string[], dimensions: Dimensions, encoding: Encoding) => {\n const dims = pipe(\n dimensions.filter((item) => tooltip.includes(item.id)),\n uniqueBy((item: Dimension) => item.id),\n uniqueBy((item: Dimension) => item.alias),\n )\n\n const dimContent = dims.map((item: Dimension) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias ?? item.id,\n value: (datum: Datum | undefined) => {\n if (!isNullish(datum?.[VCHART_OUTLIER_KEY])) {\n if (encoding.color?.includes(item.id)) {\n return datum?.[ColorEncoding] as string\n }\n if (encoding.x?.includes(item.id)) {\n return datum?.[XEncoding] as string\n }\n }\n\n return datum?.[item.id] as string\n },\n }))\n\n const defaultContent = boxPlotMeasureKeys.map((key: string) => {\n return {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key,\n value: (datum: Datum | undefined) => {\n if (!datum) {\n return ''\n }\n return datum[key] as string | number\n },\n }\n })\n\n return [...dimContent, defaultContent] as ITooltipLinePattern[]\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n backgroundColor,\n label,\n tooltipBoxplot,\n discreteLegend,\n color,\n pivotAdapter,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n stackCornerRadius,\n progressive,\n colorAdapter,\n linearColor,\n colorLegend,\n colorBarStyleFill,\n pivotColorLegend,\n initBoxplot,\n xBand,\n yLinear,\n verticalCrosshairRect,\n datasetBoxplot,\n pivotAxisStyle,\n pivotTitle,\n} from '../pipes'\n\nconst boxplot: SpecPipeline = [\n initBoxplot,\n stackCornerRadius,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetBoxplot,\n progressive,\n xBand,\n yLinear,\n label,\n tooltipBoxplot,\n colorAdapter(discreteLegend, colorLegend),\n verticalCrosshairRect,\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotBoxplot: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n datasetPivot,\n pivotIndicators([\n initBoxplot,\n stackCornerRadius,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetBoxplot,\n progressive,\n xBand,\n pivotAxisStyle(yLinear),\n label,\n tooltipBoxplot,\n colorBarStyleFill(barStyle),\n verticalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const boxplotSpecPipeline: SpecPipeline = [pivotAdapter(boxplot, pivotBoxplot)]\n","import { boxplotAdvancedPipeline, boxplotSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerBoxplot = () => {\n Builder._advancedPipelineMap['boxPlot'] = boxplotAdvancedPipeline\n Builder._specPipelineMap['boxPlot'] = boxplotSpecPipeline\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-assignment */\nimport { pick } from 'remeda'\nimport { BinEndMeasureId, BinStartMeasureId } from 'src/dataReshape'\nimport { replaceNullToUndefined } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed, Config, Dimension } from 'src/types'\n\nexport const histogramConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n const hasColorEncoding = (advancedVSeed?.dimensions || []).find((field: Dimension) => field?.encoding === 'color')\n\n const pickedConfig = pick(vseed, [\n 'backgroundColor',\n 'color',\n 'label',\n 'legend',\n 'tooltip',\n 'xAxis',\n 'yAxis',\n 'crosshairRect',\n 'binCount',\n 'binStep',\n 'binValueType',\n ]) as Config['histogram']\n\n let config = replaceNullToUndefined(pickedConfig)\n\n if (!hasColorEncoding && !config?.legend?.enable) {\n config = {\n ...config,\n legend: {\n ...config?.legend,\n enable: false,\n },\n }\n }\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n\nexport const histogramXAxisConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n const { dataset = [] } = advancedVSeed\n const flattenDatasert = dataset.flat()\n const minValue = Math.min(...flattenDatasert.map((v) => +v[BinStartMeasureId]))\n const maxValue = Math.max(...flattenDatasert.map((v) => +v[BinEndMeasureId]))\n\n const chartConfig = result.config?.[chartType] as any\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...chartConfig,\n xAxis: {\n min: Number.isNaN(minValue) ? undefined : minValue,\n max: Number.isNaN(maxValue) ? undefined : maxValue,\n ...(chartConfig?.xAxis || {}),\n },\n },\n }\n\n return result as AdvancedVSeed\n}\n","import { unique } from 'remeda'\nimport { MeasureId } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\nimport { addColorToEncoding } from './color'\n\nexport const defaultEncodingForHistogram: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding)\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForHistogram: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding, false)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\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) => {\n const dimensionsWithoutMeasureId = dimensions.filter((item) => item.id !== MeasureId)\n const uniqueDimIds = unique(dimensionsWithoutMeasureId.map((d) => d.id))\n\n encoding.detail = encoding.color\n encoding.tooltip = uniqueDimIds.filter((d: string) => d !== MeasureId) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\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.value = unique(measures.filter((item) => item.encoding === 'value' || !item.encoding).map((item) => item.id))\n encoding.x0 = unique(measures.filter((item) => item.encoding === 'x0').map((item) => item.id))\n encoding.x1 = unique(measures.filter((item) => item.encoding === 'x1').map((item) => item.id))\n encoding.y = unique(measures.filter((item) => item.encoding === 'yAxis').map((item) => item.id))\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.value = unique(measures.filter((item) => item.encoding === 'value' || !item.encoding).map((item) => item.id))\n encoding.x0 = unique(measures.filter((item) => item.encoding === 'x0').map((item) => item.id))\n encoding.x1 = unique(measures.filter((item) => item.encoding === 'x1').map((item) => item.id))\n encoding.y = unique(measures.filter((item) => item.encoding === 'yAxis').map((item) => item.id))\n const color = unique(measures.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (color.length > 0) {\n encoding.color = [color[0]]\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])\n}\n","import {\n BinCountMeasureId,\n BinEndMeasureId,\n BinPercentageMeasureId,\n BinStartMeasureId,\n dataReshapeByEncoding,\n FoldMeasureId,\n FoldMeasureName,\n FoldMeasureValue,\n Separator,\n unfoldDimensions,\n} from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed, ColumnParallel, Dataset, Dimension, Encoding, FoldInfo } from 'src/types'\nimport { bin } from '@visactor/vdataset'\nimport { uniqueBy } from 'remeda'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes/color/colorAdapter'\n\nexport const reshapeWithHistogramEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset, chartType } = vseed as ColumnParallel\n const { dimensions = [], measures = [], encoding = {}, config } = advancedVSeed\n const uniqDims = uniqueBy(dimensions, (item) => item.id)\n const chartConfig = config?.[chartType as 'histogram']\n const binCount = chartConfig?.binCount\n const binStep = chartConfig?.binStep\n const binValueType = chartConfig?.binValueType\n\n let newDatasets: any[] = []\n let foldInfo: FoldInfo = {\n foldMap: {},\n measureId: FoldMeasureId,\n measureName: FoldMeasureName,\n measureValue: FoldMeasureValue,\n statistics: {\n max: -Infinity,\n min: Infinity,\n sum: 0,\n count: 0,\n colorMin: Infinity,\n colorMax: -Infinity,\n },\n }\n let unfoldInfo: any = {}\n\n const colorMeasureId = getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed)\n const allMeasures = findAllMeasures(measures)\n\n if (encoding.value?.length) {\n const valueField = encoding.value[0]\n const m = allMeasures.find((m) => m.id === valueField)\n const binData = bin(dataset, {\n field: valueField,\n groupField: [...(encoding.x ?? []), ...(encoding.color ?? [])] as string[],\n bins: binCount,\n step: binStep,\n outputNames: {\n x0: BinStartMeasureId,\n x1: BinEndMeasureId,\n count: BinCountMeasureId,\n percentage: BinPercentageMeasureId,\n },\n }) as Dataset\n\n binData.forEach((datum) => {\n datum[FoldMeasureId] = valueField\n datum[FoldMeasureName] = m?.alias ?? valueField\n const valueNumber = binValueType === 'percentage' ? +datum[BinPercentageMeasureId] : +datum[BinCountMeasureId]\n datum[FoldMeasureValue] = valueNumber\n datum[valueField] = valueNumber\n foldInfo.statistics.min = Math.min(foldInfo.statistics.min, valueNumber)\n foldInfo.statistics.max = Math.max(foldInfo.statistics.max, valueNumber)\n foldInfo.statistics.sum += valueNumber\n foldInfo.statistics.count++\n })\n if (m?.id) {\n foldInfo.foldMap[m?.id] = m?.alias\n }\n\n const res = unfoldDimensions(binData, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n })\n\n res.dataset.forEach((d) => {\n newDatasets.push(d)\n })\n unfoldInfo = res.unfoldInfo\n } else if (encoding.x0?.length && encoding.x1?.length && encoding.y?.length) {\n const res = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item: Dimension) => item.id),\n findAllMeasures(measures)\n .filter((item) => encoding.y?.includes(item.id))\n .slice(0, 1),\n encoding as Encoding,\n {\n colorItemAsId: false,\n colorMeasureId,\n },\n )\n\n res.dataset.forEach((datum) => {\n datum[BinStartMeasureId] = datum[encoding.x0![0]]\n datum[BinEndMeasureId] = datum[encoding.x1![0]]\n })\n\n newDatasets = res.dataset\n foldInfo = res.foldInfo\n unfoldInfo = res.unfoldInfo\n }\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: [\n {\n id: String(chartType),\n index: 0,\n foldInfo,\n unfoldInfo,\n },\n ],\n dimensions,\n measures,\n }\n}\n","import { bin } from '@visactor/vdataset'\nimport { uniqueBy } from 'remeda'\nimport {\n BinCountMeasureId,\n BinEndMeasureId,\n BinPercentageMeasureId,\n BinStartMeasureId,\n dataReshapeByEncoding,\n FoldMeasureId,\n FoldMeasureName,\n FoldMeasureValue,\n Separator,\n unfoldDimensions,\n} from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Datum,\n Dimension,\n Encoding,\n FoldInfo,\n MeasureGroup,\n} from 'src/types'\n\nexport const pivotReshapeWithHistogramEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset, chartType } = vseed as ColumnParallel\n const { dimensions = [], measures = [], encoding = {}, config } = advancedVSeed\n const colorMeasureId = getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed)\n const uniqDims = uniqueBy(dimensions, (item: Dimension) => item.id)\n const chartConfig = config?.[chartType as 'histogram']\n const binCount = chartConfig?.binCount\n const binStep = chartConfig?.binStep\n const binValueType = chartConfig?.binValueType\n\n const measureGroups: MeasureGroup[] = []\n if (measures) {\n measures.forEach((measure: MeasureGroup) => {\n if (measure.children && measure.children.length > 0) {\n measureGroups.push(measure)\n }\n })\n }\n const rowColumnFields = uniqueBy(\n dimensions.filter((dim: Dimension) => dim.encoding === 'row' || dim.encoding === 'column'),\n (item: Dimension) => item.id,\n )\n\n const datasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n measureGroups.forEach((measureGroup, index) => {\n const subMeasures = measureGroup.children\n if (!subMeasures) {\n return\n }\n const groupId = measureGroup.id\n\n let newDatasets: any[] = []\n let foldInfo: FoldInfo = {\n foldMap: {},\n measureId: FoldMeasureId,\n measureName: FoldMeasureName,\n measureValue: FoldMeasureValue,\n statistics: {\n max: -Infinity,\n min: Infinity,\n sum: 0,\n count: 0,\n colorMin: Infinity,\n colorMax: -Infinity,\n },\n }\n let unfoldInfo: any = {}\n\n if (encoding.value?.length) {\n const valueField = encoding.value[0]\n const m = subMeasures.find((m) => m.id === valueField)\n const binData = bin(dataset, {\n field: valueField,\n groupField: [\n ...(encoding.x ?? []),\n ...(encoding.color ?? []),\n ...rowColumnFields.map((item: Dimension) => item.id),\n ] as string[],\n bins: binCount,\n step: binStep,\n outputNames: {\n x0: BinStartMeasureId,\n x1: BinEndMeasureId,\n count: BinCountMeasureId,\n percentage: BinPercentageMeasureId,\n },\n }) as Dataset\n\n binData.forEach((datum: Datum) => {\n datum[FoldMeasureId] = valueField\n datum[FoldMeasureName] = m?.alias ?? valueField\n const valueNumber = binValueType === 'percentage' ? +datum[BinPercentageMeasureId] : +datum[BinCountMeasureId]\n datum[FoldMeasureValue] = valueNumber\n datum[valueField] = valueNumber\n\n foldInfo.statistics.min = Math.min(foldInfo.statistics.min, valueNumber)\n foldInfo.statistics.max = Math.max(foldInfo.statistics.max, valueNumber)\n foldInfo.statistics.sum += valueNumber\n foldInfo.statistics.count++\n })\n if (m?.id) {\n foldInfo.foldMap[m?.id] = m?.alias\n }\n\n const res = unfoldDimensions(binData, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n })\n\n res.dataset.forEach((d) => {\n newDatasets.push(d)\n })\n unfoldInfo = res.unfoldInfo\n } else if (encoding.x0?.length && encoding.x1?.length && encoding.y?.length) {\n const res = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item: Dimension) => item.id),\n subMeasures.filter((item) => encoding.y?.includes(item.id)).slice(0, 1),\n encoding as Encoding,\n {\n colorItemAsId: false,\n colorMeasureId,\n },\n )\n\n res.dataset.forEach((datum) => {\n datum[BinStartMeasureId] = datum[encoding.x0![0]]\n datum[BinEndMeasureId] = datum[encoding.x1![0]]\n datum[FoldMeasureId] = datum[encoding.y![0]]\n })\n\n newDatasets = res.dataset\n foldInfo = res.foldInfo\n unfoldInfo = res.unfoldInfo\n }\n\n const reshapeInfo = {\n id: groupId,\n index,\n foldInfo,\n unfoldInfo,\n }\n datasets.push(newDatasets)\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n return {\n ...result,\n dataset: datasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n histogramConfig,\n markStyle,\n annotation,\n sortLegend,\n pivotReshapeWithHistogramEncoding,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n encodingAdapter,\n deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n defaultEncodingForHistogram,\n encodingForHistogram,\n reshapeWithHistogramEncoding,\n regressionLine,\n} from '../pipes'\nimport { histogramXAxisConfig } from '../pipes/config/histogram'\n\nexport const histogramAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n histogramConfig,\n\n encodingAdapter(\n [defaultEncodingForHistogram, buildMeasures],\n [\n encodingForHistogram,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithHistogramEncoding], [pivotReshapeWithHistogramEncoding]),\n\n histogramXAxisConfig,\n sortLegend,\n theme,\n markStyle,\n annotation,\n regressionLine,\n]\n","import type { IHistogramChartSpec } from '@visactor/vchart'\nimport { BinEndMeasureId, BinStartMeasureId, FoldMeasureValue } from 'src/index'\nimport type { SpecPipe } from 'src/types'\n\nexport const initHistogram: SpecPipe = (spec) => {\n const result = { ...spec } as IHistogramChartSpec\n\n // 直方图默认支持明细数据\n result.type = 'histogram'\n result.xField = BinStartMeasureId\n result.x2Field = BinEndMeasureId\n result.yField = FoldMeasureValue\n // result.seriesField = unfoldInfo.encodingColorId\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.legends = {\n visible: false,\n }\n result.barGap = 2\n result.animation = true\n return result\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { isPivotChart } from 'src/pipeline/utils'\nimport type { SpecPipe } from 'src/types'\n\nexport const datasetHistogram: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { id } = datasetReshapeInfo[0]\n\n const fields: Record<string, object> = {}\n\n return {\n ...spec,\n data: {\n id,\n // 透视表不使用 dataValues\n values: isPivotChart(vseed) ? undefined : advancedVSeed.dataset.flat(),\n fields: fields,\n },\n } as unknown as ISpec\n}\n","import { pipe, uniqueBy, isNullish } from 'remeda'\nimport type { Dimension, Dimensions, Encoding, Spec, SpecPipe, Tooltip } from 'src/types'\nimport type { Datum, ISpec, ITooltipLinePattern } from '@visactor/vchart'\nimport { BinEndMeasureId, BinStartMeasureId, ColorEncoding, FoldMeasureValue, XEncoding } from 'src/dataReshape'\nimport { getTooltipStyle } from './tooltipStyle'\n\nconst VCHART_OUTLIER_KEY = '__VCHART_BOX_PLOT_OUTLIER_VALUE'\n\nexport const tooltipHistogram: SpecPipe = (spec, context): Partial<Spec> => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { chartType, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n\n result.tooltip = {\n style: getTooltipStyle(tooltip),\n visible: enable,\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(encoding.tooltip || [], dimensions, encoding as Encoding),\n },\n dimension: {\n title: {\n visible: false,\n },\n content: createMarkContent(encoding.tooltip || [], dimensions, encoding as Encoding),\n },\n }\n return result as unknown as ISpec\n}\n\nconst createMarkContent = (tooltip: string[], dimensions: Dimensions, encoding: Encoding) => {\n const dims = pipe(\n dimensions.filter((item) => tooltip.includes(item.id)),\n uniqueBy((item: Dimension) => item.id),\n uniqueBy((item: Dimension) => item.alias),\n )\n\n const dimContent = dims.map((item: Dimension) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias ?? item.id,\n value: (datum: Datum | undefined) => {\n if (!isNullish(datum?.[VCHART_OUTLIER_KEY])) {\n if (encoding.color?.includes(item.id)) {\n return datum?.[ColorEncoding] as string\n }\n if (encoding.x?.includes(item.id)) {\n return datum?.[XEncoding] as string\n }\n }\n\n return datum?.[item.id] as string\n },\n }))\n\n const defaultContent = [\n {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (datum: Datum | undefined) => {\n if (!datum) {\n return ''\n }\n return `${datum[BinStartMeasureId]} ~ ${datum[BinEndMeasureId]}`\n },\n value: (datum: Datum | undefined) => {\n if (!datum) {\n return ''\n }\n return datum[FoldMeasureValue] as string | number\n },\n },\n ]\n\n return [...dimContent, defaultContent] as ITooltipLinePattern[]\n}\n","import type { ICartesianSeries, IChart, IHistogramChartSpec, IVChart } from '@visactor/vchart'\nimport type { KDEOptions } from '@visactor/vutils'\nimport { isNullish, uniqueBy } from 'remeda'\nimport { kde, array } from '@visactor/vutils'\nimport { BinEndMeasureId, BinStartMeasureId } from 'src/dataReshape'\nimport type { Datum, Dimension, SpecPipe, Encoding, RegressionLineConfig, KdeRegressionLine } from 'src/types'\nimport { defaultRegressionLineColor, defaultRegressionLineLabelX, defaultRegressionLineLabelY } from './common'\n\nexport const kdeRegressionLine: SpecPipe = (spec, context) => {\n const result = { ...spec } as IHistogramChartSpec\n const { advancedVSeed, vseed } = context\n const { chartType, encoding = {} as Encoding, dimensions, regressionLine } = advancedVSeed\n const { dataset } = vseed\n const lineTheme = advancedVSeed.config[chartType as 'histogram']?.regressionLine as RegressionLineConfig\n\n if (!regressionLine || !regressionLine.kdeRegressionLine) {\n return result\n }\n\n const rowColumnFields = uniqueBy(\n dimensions.filter((dim: Dimension) => dim.encoding === 'row' || dim.encoding === 'column'),\n (item: Dimension) => item.id,\n )\n\n const lineList = array(regressionLine.kdeRegressionLine).filter((kdeLine) => kdeLine.enable !== false)\n\n if (!result.customMark) {\n result.customMark = []\n }\n\n lineList.forEach((line, lineIndex) => {\n const theme = (lineTheme.kdeRegressionLine ?? {}) as KdeRegressionLine\n const { color, lineWidth, lineDash, text, textColor, textFontSize, textFontWeight } = line as KdeRegressionLine\n\n const childrenMarks: any[] = []\n\n ;(result.customMark as any[]).push({\n type: 'group',\n interactive: false,\n zIndex: 500,\n name: `kdeRegressionLine-${lineIndex}`,\n style: {\n data: (datum: any, ctx: any) => {\n const vchart = ctx.vchart as IVChart\n const chart = vchart.getChart() as IChart\n const series = chart.getAllSeries().filter((s: any) => s.type === 'bar')\n\n // 直方图使用的是bar系列\n if (series && series.length) {\n const s = series[0] as ICartesianSeries\n const region = s.getRegion().getLayoutStartPoint()\n\n const fieldX = s.fieldX?.[0]\n const scaleY = s.getYAxisHelper().getScale?.(0)\n const viewData = s.getViewData()?.latestData\n\n if (!dataset || !dataset.length || !viewData || !viewData.length || !scaleY) {\n return null\n }\n const simpleData = dataset\n .filter((entry: Datum) => {\n return rowColumnFields.length\n ? rowColumnFields.every((dim: Dimension) => {\n return entry[dim.id] === viewData[0][dim.id]\n })\n : true\n })\n .map((d: Datum) => (d as any)[encoding.value?.[0] as string]) as number[]\n const res = kde(simpleData, {\n bandwidth: Math.abs(viewData[0][BinEndMeasureId] - viewData[0][BinStartMeasureId]),\n } as KDEOptions)\n const N = Math.max(3, Math.floor(simpleData.length / 4))\n const lineData = res.evaluateGrid(N)\n const scaleR = (k: number) => {\n return scaleY.scale(k * simpleData.length * res.bandwidth)\n }\n\n const linePoints = lineData.map((ld: Datum) => {\n const d = { [fieldX]: ld.x }\n return {\n x: s.dataToPositionX(d)! + region.x,\n y: scaleR(ld.y as number) + region.y,\n }\n })\n\n return {\n linePoints,\n color: color ?? s.getOption().globalScale.getScale('color')?.scale(s.getSeriesKeys()[0]),\n }\n }\n return null\n },\n },\n children: childrenMarks,\n })\n\n childrenMarks.push({\n type: 'line',\n interactive: false,\n zIndex: 500,\n style: {\n lineWidth: lineWidth ?? theme.lineWidth,\n lineDash: lineDash ?? theme.lineDash,\n stroke: color ?? defaultRegressionLineColor,\n points: (datum: any, ctx: any, opt: any) => {\n const parentNode = opt.mark?._product?.parent\n\n if (parentNode?.attribute?.data) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return parentNode.attribute.data.linePoints\n }\n\n return []\n },\n },\n })\n\n if (!isNullish(text)) {\n childrenMarks.push({\n type: 'text',\n interactive: false,\n zIndex: 500,\n style: {\n textAlign: 'end',\n fill: textColor ?? theme.textColor,\n fontSize: textFontSize ?? theme.textFontSize,\n fontWeight: textFontWeight ?? theme.textFontWeight,\n text: text,\n x: defaultRegressionLineLabelX,\n y: defaultRegressionLineLabelY,\n },\n })\n }\n })\n\n return result\n}\n","import type { ICartesianSeries, IChart, IHistogramChartSpec, IVChart } from '@visactor/vchart'\nimport { isNullish, uniqueBy } from 'remeda'\nimport { ecdf, array } from '@visactor/vutils'\nimport type { Datum, Dimension, SpecPipe, Encoding, RegressionLineConfig, EcdfRegressionLine } from 'src/types'\nimport { defaultRegressionLineColor, defaultRegressionLineLabelX, defaultRegressionLineLabelY } from './common'\n\nexport const ecdfRegressionLine: SpecPipe = (spec, context) => {\n const result = { ...spec } as IHistogramChartSpec\n const { advancedVSeed, vseed } = context\n const { chartType, encoding = {} as Encoding, dimensions, regressionLine } = advancedVSeed\n const { dataset } = vseed\n const lineTheme = advancedVSeed.config[chartType as 'histogram']?.regressionLine as RegressionLineConfig\n\n if (!regressionLine || !regressionLine.ecdfRegressionLine) {\n return result\n }\n\n const rowColumnFields = uniqueBy(\n dimensions.filter((dim: Dimension) => dim.encoding === 'row' || dim.encoding === 'column'),\n (item: Dimension) => item.id,\n )\n\n const lineList = array(regressionLine.ecdfRegressionLine).filter((ecdfLine) => ecdfLine.enable !== false)\n\n if (!result.customMark) {\n result.customMark = []\n }\n\n lineList.forEach((line, lineIndex) => {\n const theme = (lineTheme?.ecdfRegressionLine ?? {}) as EcdfRegressionLine\n const { color, lineWidth, lineDash, text, textColor, textFontSize, textFontWeight } = line as EcdfRegressionLine\n\n const childrenMarks: any[] = []\n\n ;(result.customMark as any[]).push({\n type: 'group',\n interactive: false,\n zIndex: 500,\n name: `ecdfRegressionLine-${lineIndex}`,\n style: {\n data: (datum: any, ctx: any) => {\n const vchart = ctx.vchart as IVChart\n const chart = vchart.getChart() as IChart\n const series = chart.getAllSeries().filter((s: any) => s.type === 'bar')\n\n // 直方图使用的是bar系列\n if (series && series.length) {\n const s = series[0] as ICartesianSeries\n const region = s.getRegion().getLayoutStartPoint()\n\n const fieldX = s.fieldX?.[0]\n const scaleY = s.getYAxisHelper().getScale?.(0)\n const viewData = s.getViewData()?.latestData\n\n if (!dataset || !dataset.length || !viewData || !viewData.length || !scaleY) {\n return null\n }\n const simpleData = dataset\n .filter((entry: Datum) => {\n return rowColumnFields.length\n ? rowColumnFields.every((dim: Dimension) => {\n return entry[dim.id] === viewData[0][dim.id]\n })\n : true\n })\n .map((d: Datum) => (d as any)[encoding.value?.[0] as string]) as number[]\n const res = ecdf(simpleData)\n const N = Math.max(3, Math.floor(simpleData.length / 4))\n const lineData = res.evaluateGrid(N)\n const yRange = scaleY.range()\n const y0 = yRange[0]\n const y1 = yRange[yRange.length - 1]\n const scaleR = (e: number) => {\n return y0 + (y1 - y0) * e\n }\n\n const linePoints = lineData.map((ld: Datum) => {\n const d = { [fieldX]: ld.x }\n return {\n x: s.dataToPositionX(d)! + region.x,\n y: scaleR(ld.y as number) + region.y,\n }\n })\n\n return {\n linePoints,\n color: color ?? s.getOption().globalScale.getScale('color')?.scale(s.getSeriesKeys()[0]),\n }\n }\n return null\n },\n },\n children: childrenMarks,\n })\n\n childrenMarks.push({\n type: 'line',\n interactive: false,\n zIndex: 500,\n style: {\n lineWidth: lineWidth ?? theme.lineWidth,\n lineDash: lineDash ?? theme.lineDash,\n stroke: color ?? defaultRegressionLineColor,\n points: (datum: any, ctx: any, opt: any) => {\n const parentNode = opt.mark?._product?.parent\n\n if (parentNode?.attribute?.data) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return parentNode.attribute.data.linePoints\n }\n\n return []\n },\n },\n })\n\n if (!isNullish(text)) {\n childrenMarks.push({\n type: 'text',\n interactive: false,\n zIndex: 500,\n style: {\n textAlign: 'end',\n fill: textColor ?? theme.textColor,\n fontSize: textFontSize ?? theme.textFontSize,\n fontWeight: textFontWeight ?? theme.textFontWeight,\n text: text,\n x: defaultRegressionLineLabelX,\n y: defaultRegressionLineLabelY,\n },\n })\n }\n })\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n label,\n xLinear,\n backgroundColor,\n discreteLegend,\n color,\n pivotAdapter,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n datasetHistogram,\n progressive,\n colorAdapter,\n linearColor,\n colorLegend,\n colorBarStyleFill,\n pivotColorLegend,\n initHistogram,\n yLinear,\n verticalCrosshairRect,\n tooltipHistogram,\n kdeRegressionLine,\n ecdfRegressionLine,\n pivotTitle,\n pivotAxisStyle,\n} from '../pipes'\n\nconst histogram: SpecPipeline = [\n initHistogram,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetHistogram,\n progressive,\n xLinear,\n yLinear,\n label,\n tooltipHistogram,\n colorAdapter(discreteLegend, colorLegend),\n verticalCrosshairRect,\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n kdeRegressionLine,\n ecdfRegressionLine,\n]\n\nconst pivotHistogram: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n datasetPivot,\n pivotIndicators([\n initHistogram,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetHistogram,\n progressive,\n xLinear,\n pivotAxisStyle(yLinear),\n label,\n tooltipHistogram,\n colorBarStyleFill(barStyle),\n verticalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n kdeRegressionLine,\n ecdfRegressionLine,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const histogramSpecPipeline: SpecPipeline = [pivotAdapter(histogram, pivotHistogram)]\n","import { histogramSpecPipeline, histogramAdvancedPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerHistogram = () => {\n Builder._advancedPipelineMap['histogram'] = histogramAdvancedPipeline\n Builder._specPipelineMap['histogram'] = histogramSpecPipeline\n}\n","export const getDarkCrosshairLine = () => ({\n visible: true,\n labelVisible: true,\n labelColor: '#ffffff',\n labelBackgroundColor: '#404349',\n lineColor: '#55595F',\n})\n\nexport const getDarkCrosshairRect = () => ({\n visible: true,\n labelVisible: true,\n labelColor: '#4B4F54',\n labelBackgroundColor: '#ffffff',\n rectColor: '#E2E3E6',\n})\n\nexport const getLightCrosshairLine = () => ({\n visible: true,\n labelVisible: true,\n labelColor: '#ffffff',\n labelBackgroundColor: '#21252C',\n lineColor: '#21252C',\n})\nexport const getLightCrosshairRect = () => ({\n visible: true,\n labelVisible: true,\n labelColor: '#ffffff',\n labelBackgroundColor: '#364159',\n rectColor: '#3641594d',\n})\n","export const getLightColorScheme = () => [\n '#8D72F6',\n '#5766EC',\n '#66A3FE',\n '#51D5E6',\n '#4EC0B3',\n '#F9DF90',\n '#F9AD71',\n '#ED8888',\n '#E9A0C3',\n '#D77DD3',\n]\nexport const getDarkColorScheme = () => [\n '#2E62F1',\n '#4DC36A',\n '#FF8406',\n '#FFCC00',\n '#4F44CF',\n '#5AC8FA',\n '#003A8C',\n '#B08AE2',\n '#FF6341',\n '#98DD62',\n]\nexport const getLightLinearColorScheme = () => ['#C2CEFF', '#5766EC']\nexport const getDarkLinearColorScheme = () => ['#A0CEFF', '#2E62F1']\nexport const getLightColor = () => ({\n linearColorScheme: getLightLinearColorScheme(),\n colorScheme: getLightColorScheme(),\n positiveColor: '#7E5DFF',\n negativeColor: '#EB3373',\n})\nexport const getDarkColor = () => ({\n linearColorScheme: getDarkLinearColorScheme(),\n colorScheme: getDarkColorScheme(),\n positiveColor: '#7E5DFF',\n negativeColor: '#EB3373',\n})\n","export const getDefaultLabel = () => ({\n enable: true,\n wrap: true,\n showValue: true,\n showValuePercent: false,\n labelColorSmartInvert: false,\n labelOverlap: true,\n})\n\nexport const getDarkLabel = () => ({\n ...getDefaultLabel(),\n labelStroke: '#21252C',\n})\n\nexport const getLightLabel = () => ({\n ...getDefaultLabel(),\n labelStroke: '#fff',\n})\n","import type { Legend } from 'src/types'\n\nexport const getDefaultLegend = (): Legend => ({\n enable: true,\n border: true,\n maxSize: 1,\n shapeType: 'rectRound',\n position: 'rt',\n labelColor: '#646A73',\n labelFontSize: 12,\n labelFontWeight: 400,\n})\n","import type { PivotChartGridConfig } from 'src/types'\n\nexport const getDefaultTableConfig = () => ({\n bodyFontSize: 12,\n bodyBackgroundColor: 'transparent',\n headerFontSize: 12,\n})\n\nexport const getLightTableConfig = () => ({\n ...getDefaultTableConfig(),\n borderColor: '#e3e5eb',\n\n bodyFontColor: '#141414',\n\n headerFontColor: '#21252c',\n headerBackgroundColor: '#f6f7f9',\n\n hoverBodyBackgroundColor: '#bedaff',\n hoverBodyInlineBackgroundColor: '#bedaff33',\n hoverHeaderBackgroundColor: '#D9DDE4',\n hoverHeaderInlineBackgroundColor: '#D9DDE455',\n\n selectedBorderColor: '#4080ff',\n selectedBackgroundColor: '#bedaff33',\n\n backgroundColor: 'transparent',\n})\n\nexport const getDarkTableConfig = () => ({\n ...getDefaultTableConfig(),\n borderColor: '#4b4e53',\n\n bodyFontColor: '#fdfdfd',\n headerFontColor: '#fdfdfd',\n headerBackgroundColor: '#36393e',\n\n hoverBodyBackgroundColor: '#4284ff66',\n hoverBodyInlineBackgroundColor: '#4284ff10',\n hoverHeaderBackgroundColor: '#6f7984cc',\n hoverHeaderInlineBackgroundColor: '#4b4f54',\n\n selectedBorderColor: '#3073f2',\n selectedBackgroundColor: '#4284ff33',\n})\n\nconst pickPivotChartGridConfig = (tableConfig: any) => {\n return {\n outlineBorderLineWidth: 0,\n frameCornerRadius: 0,\n borderColor: tableConfig.borderColor,\n bodyFontColor: tableConfig.bodyFontColor,\n headerFontColor: tableConfig.headerFontColor,\n\n headerBackgroundColor: 'transparent',\n hoverHeaderBackgroundColor: tableConfig.hoverHeaderBackgroundColor,\n hoverHeaderInlineBackgroundColor: tableConfig.hoverHeaderInlineBackgroundColor,\n\n titleFontColor: tableConfig.headerFontColor,\n titleFontSize: tableConfig.headerFontSize,\n titleFontWeight: 'bold',\n }\n}\n\nexport const getLightPivotChartGridConfig = () => {\n const res = pickPivotChartGridConfig(getLightTableConfig()) as PivotChartGridConfig\n\n res.chartGridColor = '#F0F1F6'\n res.axisLabelColor = '#BCC1CB'\n\n return res\n}\n\nexport const getDarkPivotChartGridConfig = () => {\n const res = pickPivotChartGridConfig(getDarkTableConfig()) as PivotChartGridConfig\n\n res.chartGridColor = '#303339'\n res.axisLabelColor = '#E2E3E6'\n\n return res\n}\n","import type { TooltipConfig } from 'src/types'\n\nconst getDefaultTooltip = (): TooltipConfig => ({\n enable: true,\n borderRadius: 12,\n borderWidth: 1,\n padding: 7,\n lineHeight: 12,\n fontSize: 12,\n lineSpace: 6,\n})\n\nexport const getLightTooltip = (): TooltipConfig => ({\n ...getDefaultTooltip(),\n borderColor: '#e3e5e8',\n backgroundColor: '#fff',\n keyColor: '#606773',\n valueColor: '#21252c',\n titleColor: '#21252c',\n})\n\nexport const getDarkTooltip = (): TooltipConfig => ({\n ...getDefaultTooltip(),\n borderColor: '#3c3f44',\n backgroundColor: '#2b2d30',\n keyColor: '#89909D',\n valueColor: '#E2E3E6',\n titleColor: '#E2E3E6',\n})\n","import type { YBandAxis, YLinearAxis } from 'src/types'\n\nexport const getLightLinearAxis = (): YLinearAxis => ({\n nice: true,\n zero: true,\n inverse: false,\n label: {\n visible: true,\n labelAngle: 0,\n labelColor: '#8F959E',\n labelFontSize: 12,\n labelFontWeight: 400,\n },\n title: {\n visible: false,\n titleText: '',\n titleColor: '#646A73',\n titleFontSize: 12,\n titleFontWeight: 400,\n },\n grid: {\n visible: true,\n gridColor: '#36415926',\n gridWidth: 0.5,\n gridLineDash: [4, 2],\n },\n tick: {\n visible: false,\n tickInside: false,\n tickSize: 4,\n tickColor: '#3641594d',\n },\n line: {\n visible: false,\n lineColor: '#3641594d',\n lineWidth: 1,\n },\n})\n\nexport const getLightBandAxis = (): YBandAxis => ({\n labelAutoHide: true,\n labelAutoHideGap: 4,\n labelAutoLimit: true,\n labelAutoLimitLength: 80,\n labelAutoRotate: false,\n labelAutoRotateAngleRange: [0, -45, -90],\n label: {\n visible: true,\n labelAngle: 0,\n labelColor: '#8F959E',\n labelFontSize: 12,\n labelFontWeight: 400,\n },\n title: {\n visible: false,\n titleText: '',\n titleColor: '#646A73',\n titleFontSize: 12,\n titleFontWeight: 400,\n },\n grid: {\n visible: false,\n gridColor: '#36415926',\n gridWidth: 0.5,\n gridLineDash: [4, 2],\n },\n tick: {\n visible: false,\n tickInside: false,\n tickSize: 4,\n tickColor: '#3641594d',\n },\n line: {\n visible: true,\n lineColor: '#3641594d',\n lineWidth: 1,\n },\n})\n\nexport const getDarkLinearAxis = (): YLinearAxis => ({\n nice: true,\n zero: true,\n label: {\n visible: true,\n labelAngle: 0,\n labelColor: '#E2E3E6',\n labelFontSize: 12,\n labelFontWeight: 400,\n },\n title: {\n visible: false,\n titleText: '',\n titleColor: '#FDFDFD',\n titleFontSize: 12,\n titleFontWeight: 400,\n },\n grid: {\n visible: true,\n gridColor: '#303339',\n gridWidth: 0.5,\n gridLineDash: [4, 2],\n },\n tick: {\n visible: false,\n tickInside: false,\n tickSize: 4,\n tickColor: '#4B4F54',\n },\n line: {\n visible: false,\n lineColor: '#4B4F54',\n lineWidth: 1,\n },\n})\n\nexport const getDarkBandAxis = (): YBandAxis => ({\n labelAutoHide: true,\n labelAutoHideGap: 4,\n labelAutoLimit: true,\n labelAutoLimitLength: 80,\n labelAutoRotate: false,\n labelAutoRotateAngleRange: [0, -45, -90],\n label: {\n visible: true,\n labelAngle: 0,\n labelColor: '#E2E3E6',\n labelFontSize: 12,\n labelFontWeight: 400,\n },\n title: {\n visible: false,\n titleText: '',\n titleColor: '#FDFDFD',\n titleFontSize: 12,\n titleFontWeight: 400,\n },\n grid: {\n visible: false,\n gridColor: '#303339',\n gridWidth: 0.5,\n gridLineDash: [4, 2],\n },\n tick: {\n visible: false,\n tickInside: false,\n tickSize: 4,\n tickColor: '#4B4F54',\n },\n line: {\n visible: true,\n lineColor: '#4B4F54',\n lineWidth: 1,\n },\n})\n","import type {\n AnnotationAreaConfig,\n AnnotationHorizontalLineConfig,\n AnnotationPointConfig,\n} from 'src/types/properties/config/annotation/annotation'\n\nexport const getDefaultAnnotationPoint = (): AnnotationPointConfig => ({\n textBackgroundVisible: true,\n textFontSize: 12,\n textFontWeight: 400,\n\n textBackgroundBorderRadius: 4,\n textBackgroundBorderWidth: 1,\n textBackgroundPadding: 2,\n})\n\nexport const getLightAnnotationPoint = (): AnnotationPointConfig => ({\n ...getDefaultAnnotationPoint(),\n textColor: '#ffffff',\n textBackgroundColor: '#364159',\n textBackgroundBorderColor: '#3641594d',\n})\n\nexport const getDefaultAnnotationLine = (): AnnotationHorizontalLineConfig => ({\n lineVisible: true,\n lineWidth: 1,\n lineStyle: 'solid' as const,\n\n textFontSize: 12,\n textFontWeight: 400,\n startSymbolVisible: true,\n endSymbolVisible: false,\n\n textBackgroundVisible: true,\n textBackgroundBorderWidth: 1,\n textBackgroundBorderRadius: 0,\n textBackgroundPadding: 2,\n})\n\nexport const getLightAnnotationHorizontalLine = (): AnnotationHorizontalLineConfig => ({\n ...getDefaultAnnotationLine(),\n lineColor: '#BCC1CB',\n\n textColor: '#ffffff',\n\n textBackgroundColor: '#BCC1CB',\n textBackgroundBorderColor: '#BCC1CB',\n})\n\nexport const getLightAnnotationVerticalLine = () => getLightAnnotationHorizontalLine()\n\nexport const getDefaultAnnotationArea = (): AnnotationAreaConfig => ({\n textFontSize: 12,\n textFontWeight: 400,\n textBackgroundVisible: true,\n textBackgroundBorderWidth: 1,\n textBackgroundBorderRadius: 0,\n textBackgroundPadding: 4,\n areaBorderWidth: 0,\n areaBorderRadius: 0,\n areaLineDash: [2, 2],\n\n outerPadding: 4,\n})\n\nexport const getLightAnnotationArea = (): AnnotationAreaConfig => ({\n ...getDefaultAnnotationArea(),\n textColor: '#ffffff',\n\n textBackgroundColor: '#BCC1CB',\n textBackgroundBorderColor: '#BCC1CB',\n\n areaColor: '#BCC1CB',\n areaColorOpacity: 0.12,\n areaBorderColor: '#BCC1CB',\n})\n\nexport const getLightAnnotation = () => ({\n annotationPoint: getLightAnnotationPoint(),\n annotationHorizontalLine: getLightAnnotationHorizontalLine(),\n annotationVerticalLine: getLightAnnotationVerticalLine(),\n annotationArea: getLightAnnotationArea(),\n})\n\n// --- dark ---\nexport const getDarkAnnotationPoint = (): AnnotationPointConfig => ({\n ...getDefaultAnnotationPoint(),\n textColor: '#4B4F54',\n\n textBackgroundColor: '#ffffff',\n textBackgroundBorderColor: '#ffffff',\n})\n\nexport const getDarkAnnotationHorizontalLine = (): AnnotationHorizontalLineConfig => ({\n ...getDefaultAnnotationLine(),\n lineColor: '#55595F',\n\n textColor: '#E2E3E6',\n textBackgroundColor: '#55595F',\n textBackgroundBorderColor: '#55595F',\n})\n\nexport const getDarkAnnotationVerticalLine = () => getDarkAnnotationHorizontalLine()\n\nexport const getDarkAnnotationArea = (): AnnotationAreaConfig => ({\n ...getDefaultAnnotationArea(),\n textColor: '#E2E3E6',\n\n textBackgroundColor: '#55595F',\n textBackgroundBorderColor: '#55595F',\n\n areaColor: '#E2E3E6',\n areaColorOpacity: 0.15,\n areaBorderColor: '#E2E3E6',\n})\n\nexport const getDarkAnnotation = () => ({\n annotationPoint: getDarkAnnotationPoint(),\n annotationHorizontalLine: getDarkAnnotationHorizontalLine(),\n annotationVerticalLine: getDarkAnnotationVerticalLine(),\n annotationArea: getDarkAnnotationArea(),\n})\n\nexport default getLightAnnotation\n","import type { FunnelTransformConfig } from 'src/types/properties/config/funnelTransform'\n\nexport const getLightFunnelTransformTheme = (): FunnelTransformConfig => {\n return {\n backgroundColor: '#F6F7F9',\n textColor: '#737880',\n }\n}\n\nexport const getDarkFunnelTransformTheme = (): FunnelTransformConfig => {\n return {\n backgroundColor: '#2A2D33',\n textColor: '#888C93',\n }\n}\n","import type { HeatmapCell } from 'src/types/properties/config/heatmap/heatmap'\n\nexport const getLightHeatmapCellTheme = (): HeatmapCell => {\n return {\n stroke: '#fff',\n }\n}\n\nexport const getDarkHeatmapCellTheme = (): HeatmapCell => {\n return {\n stroke: '#404349',\n }\n}\n","import type { RegressionLineConfig } from 'src/types/properties/regressionLine'\n\nexport const getDefaultRegressionLine = () => {\n return {\n lineWidth: 2,\n textFontSize: 12,\n textFontWeight: 400,\n }\n}\n\nexport const getLightRegressionLine = (): Partial<RegressionLineConfig> => {\n return {\n kdeRegressionLine: {\n ...getDefaultRegressionLine(),\n textColor: '#364159',\n },\n ecdfRegressionLine: {\n ...getDefaultRegressionLine(),\n textColor: '#364159',\n },\n linearRegressionLine: {\n ...getDefaultRegressionLine(),\n textColor: '#364159',\n confidenceIntervalOpacity: 0.2,\n },\n lowessRegressionLine: {\n ...getDefaultRegressionLine(),\n textColor: '#364159',\n confidenceIntervalOpacity: 0.2,\n },\n polynomialRegressionLine: {\n ...getDefaultRegressionLine(),\n textColor: '#364159',\n confidenceIntervalOpacity: 0.2,\n },\n logisticRegressionLine: {\n ...getDefaultRegressionLine(),\n textColor: '#364159',\n confidenceIntervalOpacity: 0.2,\n },\n }\n}\n\nexport const getDarkRegressionLine = (): Partial<RegressionLineConfig> => {\n return {\n kdeRegressionLine: {\n ...getDefaultRegressionLine(),\n textColor: '#FFFFFF',\n },\n ecdfRegressionLine: {\n ...getDefaultRegressionLine(),\n textColor: '#FFFFFF',\n },\n linearRegressionLine: {\n ...getDefaultRegressionLine(),\n textColor: '#FFFFFF',\n confidenceIntervalOpacity: 0.2,\n },\n lowessRegressionLine: {\n ...getDefaultRegressionLine(),\n textColor: '#FFFFFF',\n confidenceIntervalOpacity: 0.2,\n },\n polynomialRegressionLine: {\n ...getDefaultRegressionLine(),\n textColor: '#FFFFFF',\n confidenceIntervalOpacity: 0.2,\n },\n logisticRegressionLine: {\n ...getDefaultRegressionLine(),\n textColor: '#FFFFFF',\n confidenceIntervalOpacity: 0.2,\n },\n }\n}\n","import type { CustomThemeConfig, YBandAxis } from 'src/types'\nimport {\n getDefaultLegend,\n getLightColor,\n getLightCrosshairLine,\n getLightCrosshairRect,\n getLightLabel,\n getLightPivotChartGridConfig,\n getLightTableConfig,\n} from '../common'\nimport { getLightTooltip } from '../common/tooltip'\nimport { getLightBandAxis, getLightLinearAxis } from '../common/axes'\nimport { getLightAnnotation } from '../common/annotaion'\nimport { getLightFunnelTransformTheme } from '../common/funnelTransform'\nimport { getLightHeatmapCellTheme } from '../common/heatmapCell'\nimport { getLightRegressionLine } from '../common/regressionLine'\n\nexport const lightTheme = (): CustomThemeConfig => {\n const linearAxis = getLightLinearAxis()\n const bandAxis: YBandAxis = getLightBandAxis()\n const barBandAxis: YBandAxis = {\n ...bandAxis,\n labelAutoHide: false,\n labelAutoHideGap: 1,\n labelAutoLimit: false,\n labelAutoLimitLength: undefined,\n labelAutoRotate: false,\n labelAutoRotateAngleRange: [0, -45, -90],\n }\n\n const crosshairLine = getLightCrosshairLine()\n const crosshairRect = getLightCrosshairRect()\n\n const baseConfig = {\n backgroundColor: 'transparent',\n color: getLightColor(),\n label: getLightLabel(),\n legend: getDefaultLegend(),\n tooltip: getLightTooltip(),\n }\n const tableConfig = getLightTableConfig()\n\n return {\n config: {\n // table\n table: tableConfig,\n pivotTable: tableConfig,\n // cartesian\n line: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine,\n\n pivotGrid: getLightPivotChartGridConfig(),\n annotation: getLightAnnotation(),\n },\n column: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairRect,\n stackCornerRadius: [4, 4, 0, 0],\n pivotGrid: getLightPivotChartGridConfig(),\n annotation: getLightAnnotation(),\n\n regressionLine: getLightRegressionLine(),\n },\n columnParallel: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairRect,\n stackCornerRadius: [4, 4, 0, 0],\n pivotGrid: getLightPivotChartGridConfig(),\n annotation: getLightAnnotation(),\n },\n columnPercent: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: {\n ...linearAxis,\n },\n crosshairRect,\n stackCornerRadius: [4, 4, 0, 0],\n pivotGrid: getLightPivotChartGridConfig(),\n annotation: getLightAnnotation(),\n },\n bar: {\n ...baseConfig,\n xAxis: linearAxis,\n yAxis: barBandAxis,\n crosshairRect,\n stackCornerRadius: [0, 4, 4, 0],\n pivotGrid: getLightPivotChartGridConfig(),\n annotation: getLightAnnotation(),\n },\n barParallel: {\n ...baseConfig,\n xAxis: linearAxis,\n yAxis: barBandAxis,\n crosshairRect,\n stackCornerRadius: [0, 4, 4, 0],\n pivotGrid: getLightPivotChartGridConfig(),\n annotation: getLightAnnotation(),\n },\n barPercent: {\n ...baseConfig,\n xAxis: {\n ...linearAxis,\n },\n yAxis: barBandAxis,\n crosshairRect,\n stackCornerRadius: [0, 4, 4, 0],\n pivotGrid: getLightPivotChartGridConfig(),\n annotation: getLightAnnotation(),\n },\n area: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine,\n pivotGrid: getLightPivotChartGridConfig(),\n annotation: getLightAnnotation(),\n },\n areaPercent: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: {\n ...linearAxis,\n },\n crosshairLine,\n pivotGrid: getLightPivotChartGridConfig(),\n annotation: getLightAnnotation(),\n },\n scatter: {\n ...baseConfig,\n crosshairLine,\n sizeRange: [8, 24],\n xAxis: {\n ...linearAxis,\n line: {\n ...linearAxis.line,\n visible: true,\n },\n },\n yAxis: {\n ...linearAxis,\n line: {\n ...linearAxis.line,\n visible: true,\n },\n },\n label: {\n ...baseConfig.label,\n showValue: false,\n showValuePercent: false,\n },\n pivotGrid: getLightPivotChartGridConfig(),\n annotation: getLightAnnotation(),\n\n regressionLine: getLightRegressionLine(),\n },\n dualAxis: {\n ...baseConfig,\n xAxis: bandAxis,\n primaryYAxis: linearAxis,\n secondaryYAxis: { ...linearAxis, grid: { visible: false } },\n dualChartType: {\n primary: 'column',\n secondary: 'line',\n },\n crosshairRect,\n pivotGrid: getLightPivotChartGridConfig(),\n annotation: getLightAnnotation(),\n },\n // polar\n pie: {\n ...baseConfig,\n label: {\n ...baseConfig.label,\n showValuePercent: true,\n labelLayout: 'arc',\n showDimension: true,\n },\n pivotGrid: getLightPivotChartGridConfig(),\n },\n donut: {\n ...baseConfig,\n label: {\n ...baseConfig.label,\n showValuePercent: true,\n labelLayout: 'arc',\n showDimension: true,\n },\n pivotGrid: getLightPivotChartGridConfig(),\n },\n radar: {\n ...baseConfig,\n pivotGrid: getLightPivotChartGridConfig(),\n },\n rose: {\n ...baseConfig,\n label: {\n ...baseConfig.label,\n showValuePercent: true,\n showDimension: true,\n },\n pivotGrid: getLightPivotChartGridConfig(),\n },\n roseParallel: {\n ...baseConfig,\n label: {\n ...baseConfig.label,\n showValuePercent: true,\n showDimension: true,\n },\n\n pivotGrid: getLightPivotChartGridConfig(),\n },\n // other\n funnel: {\n ...baseConfig,\n\n transform: getLightFunnelTransformTheme(),\n\n pivotGrid: getLightPivotChartGridConfig(),\n },\n heatmap: {\n ...baseConfig,\n label: {\n ...baseConfig.label,\n labelColorSmartInvert: true,\n },\n cell: getLightHeatmapCellTheme(),\n pivotGrid: getLightPivotChartGridConfig(),\n },\n histogram: {\n ...baseConfig,\n xAxis: linearAxis,\n yAxis: linearAxis,\n crosshairRect,\n pivotGrid: getLightPivotChartGridConfig(),\n annotation: getLightAnnotation(),\n regressionLine: getLightRegressionLine(),\n },\n boxPlot: {\n ...baseConfig,\n xAxis: linearAxis,\n yAxis: linearAxis,\n crosshairRect,\n pivotGrid: getLightPivotChartGridConfig(),\n annotation: getLightAnnotation(),\n },\n },\n }\n}\n","import type { CustomThemeConfig, YBandAxis } from 'src/types'\nimport {\n getDarkColor,\n getDarkCrosshairLine,\n getDarkCrosshairRect,\n getDarkTableConfig,\n getDefaultLegend,\n getDarkPivotChartGridConfig,\n getDarkLabel,\n} from '../common'\nimport { getDarkTooltip } from '../common/tooltip'\nimport { getDarkBandAxis, getDarkLinearAxis } from '../common/axes'\nimport { getDarkAnnotation } from '../common/annotaion'\nimport { getDarkFunnelTransformTheme } from '../common/funnelTransform'\nimport { getDarkHeatmapCellTheme } from '../common/heatmapCell'\nimport { getDarkRegressionLine } from '../common/regressionLine'\n\nexport const darkTheme = (): CustomThemeConfig => {\n const linearAxis = getDarkLinearAxis()\n const bandAxis = getDarkBandAxis()\n const barBandAxis: YBandAxis = {\n ...bandAxis,\n labelAutoHide: false,\n labelAutoHideGap: 1,\n labelAutoLimit: false,\n labelAutoLimitLength: undefined,\n labelAutoRotate: false,\n labelAutoRotateAngleRange: [0, -45, -90],\n }\n const crosshairLine = getDarkCrosshairLine()\n const crosshairRect = getDarkCrosshairRect()\n\n const baseConfig = {\n backgroundColor: 'transparent',\n color: getDarkColor(),\n label: getDarkLabel(),\n legend: getDefaultLegend(),\n tooltip: getDarkTooltip(),\n }\n\n const tableConfig = getDarkTableConfig()\n\n return {\n config: {\n table: tableConfig,\n pivotTable: tableConfig,\n\n // cartesian\n line: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine: crosshairLine,\n pivotGrid: getDarkPivotChartGridConfig(),\n annotation: getDarkAnnotation(),\n },\n column: {\n ...baseConfig,\n\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairRect: crosshairRect,\n stackCornerRadius: [4, 4, 0, 0],\n pivotGrid: getDarkPivotChartGridConfig(),\n annotation: getDarkAnnotation(),\n\n regressionLine: getDarkRegressionLine(),\n },\n columnParallel: {\n ...baseConfig,\n\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairRect: crosshairRect,\n stackCornerRadius: [4, 4, 0, 0],\n pivotGrid: getDarkPivotChartGridConfig(),\n annotation: getDarkAnnotation(),\n },\n columnPercent: {\n ...baseConfig,\n\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairRect: crosshairRect,\n stackCornerRadius: [4, 4, 0, 0],\n pivotGrid: getDarkPivotChartGridConfig(),\n annotation: getDarkAnnotation(),\n },\n bar: {\n ...baseConfig,\n\n xAxis: linearAxis,\n yAxis: barBandAxis,\n crosshairRect: crosshairRect,\n stackCornerRadius: [0, 4, 4, 0],\n pivotGrid: getDarkPivotChartGridConfig(),\n annotation: getDarkAnnotation(),\n },\n barParallel: {\n ...baseConfig,\n\n xAxis: linearAxis,\n yAxis: barBandAxis,\n crosshairRect: crosshairRect,\n stackCornerRadius: [0, 4, 4, 0],\n pivotGrid: getDarkPivotChartGridConfig(),\n annotation: getDarkAnnotation(),\n },\n barPercent: {\n ...baseConfig,\n\n xAxis: linearAxis,\n yAxis: barBandAxis,\n crosshairRect: crosshairRect,\n stackCornerRadius: [0, 4, 4, 0],\n pivotGrid: getDarkPivotChartGridConfig(),\n annotation: getDarkAnnotation(),\n },\n area: {\n ...baseConfig,\n\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine: crosshairLine,\n pivotGrid: getDarkPivotChartGridConfig(),\n annotation: getDarkAnnotation(),\n },\n areaPercent: {\n ...baseConfig,\n\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine: crosshairLine,\n pivotGrid: getDarkPivotChartGridConfig(),\n annotation: getDarkAnnotation(),\n },\n scatter: {\n ...baseConfig,\n crosshairLine,\n sizeRange: [8, 24],\n xAxis: {\n ...linearAxis,\n line: {\n ...linearAxis.line,\n visible: true,\n },\n },\n yAxis: {\n ...linearAxis,\n line: {\n ...linearAxis.line,\n visible: true,\n },\n },\n label: {\n ...baseConfig.label,\n showValue: false,\n showValuePercent: false,\n },\n pivotGrid: getDarkPivotChartGridConfig(),\n annotation: getDarkAnnotation(),\n regressionLine: getDarkRegressionLine(),\n },\n dualAxis: {\n ...baseConfig,\n xAxis: bandAxis,\n primaryYAxis: linearAxis,\n secondaryYAxis: { ...linearAxis, grid: { visible: false } },\n dualChartType: {\n primary: 'column',\n secondary: 'line',\n },\n crosshairRect,\n pivotGrid: getDarkPivotChartGridConfig(),\n annotation: getDarkAnnotation(),\n },\n // polar\n pie: {\n ...baseConfig,\n label: {\n ...baseConfig.label,\n showValuePercent: true,\n labelLayout: 'arc',\n showDimension: true,\n },\n pivotGrid: getDarkPivotChartGridConfig(),\n },\n donut: {\n ...baseConfig,\n label: {\n ...baseConfig.label,\n showValuePercent: true,\n labelLayout: 'arc',\n showDimension: true,\n },\n pivotGrid: getDarkPivotChartGridConfig(),\n },\n radar: {\n ...baseConfig,\n pivotGrid: getDarkPivotChartGridConfig(),\n },\n rose: {\n ...baseConfig,\n label: {\n ...baseConfig.label,\n showValuePercent: true,\n showDimension: true,\n },\n pivotGrid: getDarkPivotChartGridConfig(),\n },\n roseParallel: {\n ...baseConfig,\n label: {\n ...baseConfig.label,\n showValuePercent: true,\n showDimension: true,\n },\n\n pivotGrid: getDarkPivotChartGridConfig(),\n },\n // other\n funnel: {\n ...baseConfig,\n transform: getDarkFunnelTransformTheme(),\n\n pivotGrid: getDarkPivotChartGridConfig(),\n },\n heatmap: {\n ...baseConfig,\n label: {\n ...baseConfig.label,\n labelColorSmartInvert: true,\n },\n\n cell: getDarkHeatmapCellTheme(),\n pivotGrid: getDarkPivotChartGridConfig(),\n },\n histogram: {\n ...baseConfig,\n\n xAxis: linearAxis,\n yAxis: linearAxis,\n crosshairRect: crosshairRect,\n pivotGrid: getDarkPivotChartGridConfig(),\n annotation: getDarkAnnotation(),\n regressionLine: getDarkRegressionLine(),\n },\n boxPlot: {\n ...baseConfig,\n\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairRect: crosshairRect,\n pivotGrid: getDarkPivotChartGridConfig(),\n annotation: getDarkAnnotation(),\n },\n },\n }\n}\n","import type { CustomThemeConfig } from 'src/types'\nimport { Builder } from '../../builder'\nimport { darkTheme, lightTheme } from '../../../theme'\n\nexport const registerCustomTheme = (\n key: string,\n themeConfig:\n | CustomThemeConfig\n | ((props: { lightTheme: CustomThemeConfig; darkTheme: CustomThemeConfig }) => CustomThemeConfig),\n) => {\n const customTheme =\n typeof themeConfig === 'function' ? themeConfig({ lightTheme: lightTheme(), darkTheme: darkTheme() }) : themeConfig\n Builder._themeMap[key] = customTheme\n}\n","import { registerCustomTheme } from './custom'\nimport { lightTheme } from '../../../theme'\n\nexport const registerLightTheme = () => {\n registerCustomTheme('light', lightTheme())\n}\n","import { darkTheme } from '../../../theme'\nimport { registerCustomTheme } from './custom'\n\nexport const registerDarkTheme = () => {\n registerCustomTheme('dark', darkTheme())\n}\n","import {\n registerArea,\n registerAreaPercent,\n registerBar,\n registerBarParallel,\n registerBarPercent,\n registerColumn,\n registerColumnParallel,\n registerColumnPercent,\n registerLine,\n registerPie,\n registerDonut,\n registerRose,\n registerRoseParallel,\n registerFunnel,\n registerScatter,\n registerTable,\n registerPivotTable,\n registerHeatmap,\n registerRadar,\n registerDualAxis,\n registerBoxplot,\n registerHistogram,\n} from './chartType'\nimport { registerDarkTheme, registerLightTheme } from './theme'\n\nexport const registerAll = () => {\n // table\n registerTable()\n registerPivotTable()\n // cartesian\n registerLine()\n registerColumn()\n registerColumnParallel()\n registerColumnPercent()\n registerBar()\n registerBarParallel()\n registerBarPercent()\n registerArea()\n registerAreaPercent()\n registerScatter()\n registerDualAxis()\n // polar\n registerPie()\n registerDonut()\n registerRose()\n registerRoseParallel()\n registerRadar()\n // other\n registerFunnel()\n registerHeatmap()\n registerBoxplot()\n registerHistogram()\n // theme\n registerLightTheme()\n registerDarkTheme()\n}\n","import type { AdvancedPipe, ChartType, SpecPipe } from 'src/types'\nimport { Builder } from '../builder'\n\nexport const updateAdvanced = (chartType: ChartType, advancedPipe: AdvancedPipe) => {\n Builder._customAdvancedPipe[chartType] = advancedPipe\n}\nexport const updateSpec = (chartType: ChartType, specPipe: SpecPipe) => {\n Builder._customSpecPipe[chartType] = specPipe\n}\n","import { z } from 'zod'\n\nexport type ChartType =\n | 'table'\n | 'pivotTable'\n // cartesian\n | 'line'\n | 'column'\n | 'columnPercent'\n | 'columnParallel'\n | 'bar'\n | 'barPercent'\n | 'barParallel'\n | 'area'\n | 'areaPercent'\n | 'scatter'\n | 'dualAxis'\n // polar\n | 'rose'\n | 'roseParallel'\n | 'pie'\n | 'donut'\n | 'radar'\n // other\n | 'heatmap'\n | 'funnel'\n | 'boxPlot'\n | 'histogram'\n\nexport const zChartType = z.enum([\n 'table',\n 'pivotTable',\n // cartesian\n 'line',\n 'column',\n 'columnPercent',\n 'columnParallel',\n 'bar',\n 'barPercent',\n 'barParallel',\n 'area',\n 'areaPercent',\n 'scatter',\n 'dualAxis',\n // polar\n 'rose',\n 'roseParallel',\n 'pie',\n 'donut',\n 'radar',\n // other\n 'funnel',\n 'heatmap',\n 'boxPlot',\n 'histogram',\n])\n","import { z } from 'zod'\n\n// 'columnPercent' 和 'areaPercent' 会改变轴值域为[0,1], VTable不支持.\nexport const zDualChartType = z.object({\n primary: z.enum(['line', 'column', 'columnParallel', 'area', 'scatter']).default('column'),\n secondary: z.enum(['line', 'column', 'columnParallel', 'area', 'scatter']).default('line'),\n})\n\nexport type DualChartType = z.infer<typeof zDualChartType>\n","import { z } from 'zod'\n\n/**\n * example dataset link:\n * [\n * { date: '2019', 20001:'type', profit:10, sales: null, },\n * { date: '2020', 20001:'type', profit:30, sales: -1.1, },\n * { date: '2021', 20001:'type', profit:30, sales: 1, },\n * { date: '2023', 20001:'type', profit:40, sales: undefined, },\n * { date: '2022', 20001:'type', profit:50, sales: 100, },\n * ]\n */\nexport const zDatum = z.record(z.string().or(z.number()), z.any())\nexport const zDataset = z.array(zDatum)\n\nexport type Datum = z.infer<typeof zDatum>\nexport type Dataset = z.infer<typeof zDataset>\n","import { z } from 'zod'\nimport type { DimensionGroup } from './dimensions'\n\nexport const zDimension = z.object({\n id: z.string(),\n alias: z.string().optional(),\n encoding: z.enum(['xAxis', 'yAxis', 'angle', 'color', 'detail', 'tooltip', 'label', 'row', 'column']).optional(),\n})\nexport const zDimensionGroup: z.ZodType<DimensionGroup> = z.object({\n id: z.string(),\n alias: z.string().optional(),\n get children() {\n return z.array(zDimensionGroup.or(zDimension)).optional()\n },\n})\nexport const zDimensions = z.array(zDimension)\nexport const zDimensionTree = z.array(zDimensionGroup.or(zDimension))\n","import { z } from 'zod'\n\nexport interface NumFormat {\n /**\n * @description 数字格式化类型, 支持数值(十进制)、百分比(%)、千分比(‰)、科学计数法\n * @default 'number'\n */\n type?: 'number' | 'percent' | 'permille' | 'scientific'\n\n /**\n * @description 数值格式化比例, 不能为0\n * @default 1\n * @example\n * - 100000 转换为 10万, ratio:10000, symbol:\"万\"\n * - 100000 转换为 10K, ratio:1000, symbol:\"K\"\n */\n ratio?: number\n\n /**\n * @description 数值格式化符号, 例如%、‰\n * @default ''\n * @example\n * - 100000 转换为 10万, ratio:10000, symbol:\"万\"\n * - 100000 转换为 10K, ratio:1000, symbol:\"K\"\n */\n symbol?: string\n\n /**\n * @description 数值格式化千分位分隔符\n * @default true\n */\n thousandSeparator?: boolean\n\n /**\n * @description 数值格式化后缀\n * @default ''\n */\n suffix?: string\n /**\n * @description 数值格式化前缀\n * @default ''\n */\n prefix?: string\n\n /**\n * @description 数值格式化小数位, 使用浏览器提供的 Intl.NumberFormat 中的 minimumFractionDigits 和 maximumFractionDigits 进行格式化, 优先级低于 significantDigits\n * @default 2\n * @example\n * - 1234.5678 转换为 1235, fractionDigits:0 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.6, fractionDigits:1 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.57, fractionDigits:2 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1230.568, fractionDigits:3 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.5678, fractionDigits:4 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.56780, fractionDigits:5 (roundingMode:halfCeil)\n */\n fractionDigits?: number\n\n /**\n * @description 数值格式化有效位, 使用浏览器提供的 Intl.NumberFormat 中的 minimumSignificantDigits 和 maximumSignificantDigits 进行格式化, 优先级高于 fractionDigits\n * @default undefined\n * @example\n * - 1234.5678 转换为 1000, significantDigits:1\n * - 1234.5678 转换为 1200, significantDigits:2\n * - 1234.5678 转换为 1230, significantDigits:3\n * - 1234.5678 转换为 1234, significantDigits:4\n * - 1234.5678 转换为 1234.6, significantDigits:5 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.57, significantDigits:6 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.568, significantDigits:7 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.5678, significantDigits:8 (roundingMode:halfCeil)\n */\n significantDigits?: number\n\n /**\n * @description 数值格式化舍入优先级, 处理同时设置了 significantDigits 和 fractionDigits 时的舍入优先级, 使用浏览器提供的 Intl.NumberFormat 进行格式化, 规则同 Intl.NumberFormat 中的 roundingPriority\n * @default 'morePrecision'\n * @example\n * - 1234.5678 转换为 1230, significantDigits:3 (roundingPriority:lessPrecision)\n * - 1234.5678 转换为 1234.5678, significantDigits:3 (roundingPriority:morePrecision)\n */\n roundingPriority?: 'morePrecision' | 'lessPrecision'\n\n /**\n * @description 数值格式化舍入模式, 使用浏览器提供的 Intl.NumberFormat 进行格式化, 规则同 Intl.NumberFormat 中的 roundingMode\n * @default 'halfExpand'\n * @example\n */\n roundingMode?:\n | 'floor'\n | 'ceil'\n | 'expand'\n | 'trunc'\n | 'halfCeil'\n | 'halfFloor'\n | 'halfExpand'\n | 'halfTrunc'\n | 'halfEven'\n}\n\nexport const zNumFormat = z\n .object({\n type: z.enum(['number', 'percent', 'permille', 'scientific']).default('number').optional(),\n ratio: z.number().default(1).optional(),\n symbol: z.string().default('').optional(),\n thousandSeparator: z.boolean().default(false).optional(),\n prefix: z.string().default('').optional(),\n suffix: z.string().default('').optional(),\n\n fractionDigits: z.number().default(2).optional(),\n significantDigits: z.number().default(0).optional(),\n roundingPriority: z.enum(['morePrecision', 'lessPrecision']).default('morePrecision').optional(),\n roundingMode: z\n .enum(['floor', 'ceil', 'halfEven', 'expand', 'trunc', 'halfFloor', 'halfCeil', 'halfExpand', 'halfTrunc'])\n .default('halfCeil')\n .optional(),\n })\n .optional()\n","import { z } from 'zod'\nimport { zNumFormat } from '../format/numFormat'\nimport type { MeasureGroup } from './measures'\n\nexport const zMeasure = z.object({\n id: z.string(),\n alias: z.string().optional(),\n autoFormat: z.boolean().default(true),\n numFormat: zNumFormat.default({}),\n format: zNumFormat.default({}),\n encoding: z\n .enum([\n 'primaryYAxis',\n 'secondaryYAxis',\n 'xAxis',\n 'yAxis',\n 'angle',\n 'radius',\n 'size',\n 'color',\n 'label',\n 'tooltip',\n 'detail',\n 'column',\n ])\n .optional(),\n parentId: z.string().optional(),\n})\n\nexport const zMeasureGroup: z.ZodType<MeasureGroup> = z.object({\n id: z.string(),\n alias: z.string().optional(),\n get children() {\n return z.array(zMeasureGroup.or(zMeasure)).optional()\n },\n})\n\nexport const zMeasures = z.array(zMeasure)\nexport const zMeasureTree = z.array(zMeasureGroup.or(zMeasure))\n","import { z } from 'zod'\nimport { zMeasure } from './zMeasures'\n\nexport const zDualMeasure = z.object({\n id: z.string(),\n\n primaryMeasures: z\n .array(\n zMeasure.omit({\n encoding: true,\n parentId: true,\n }),\n )\n .or(\n zMeasure.omit({\n parentId: true,\n encoding: true,\n }),\n )\n .optional(),\n\n secondaryMeasures: z.array(zMeasure).or(zMeasure).optional(),\n})\n\nexport const zDualMeasures = z.array(zDualMeasure)\n","import { z } from 'zod'\nimport { zMeasure } from './zMeasures'\n\nexport const zScatterMeasure = z.object({\n id: z.string(),\n\n xMeasures: z\n .array(\n zMeasure.omit({\n parentId: true,\n encoding: true,\n }),\n )\n .or(zMeasure)\n .optional(),\n\n yMeasures: z\n .array(\n zMeasure.omit({\n parentId: true,\n encoding: true,\n }),\n )\n .or(zMeasure)\n .optional(),\n})\n\nexport const zScatterMeasures = z.array(zScatterMeasure)\n","import { z } from 'zod'\n\nexport const zFoldInfo = z.object({\n foldMap: z.record(z.string(), z.string().or(z.undefined())),\n statistics: z.object({\n min: z.number(),\n max: z.number(),\n sum: z.number(),\n count: z.number(),\n colorMin: z.number(),\n colorMax: z.number(),\n }),\n measureId: z.string(),\n measureName: z.string(),\n measureValue: z.string(),\n})\nexport const zUnfoldInfo = z.object({\n encodingX: z.string(),\n encodingY: z.string(),\n encodingColor: z.string(),\n encodingColorId: z.string(),\n encodingDetail: z.string(),\n encodingAngle: z.string(),\n colorItems: z.array(z.string()),\n colorIdMap: z.record(z.string(), z.object({ id: z.string(), alias: z.string() })),\n})\n\nexport const zDatasetReshapeInfo = z.array(\n z.object({\n id: z.string(),\n index: z.number(),\n foldInfo: zFoldInfo,\n foldInfoList: z.array(zFoldInfo).nullish(),\n unfoldInfo: zUnfoldInfo,\n }),\n)\n","import { z } from 'zod'\n\nexport const zEncoding = z.object({\n x: z.array(z.string()).nullish(),\n y: z.array(z.string()).nullish(),\n angle: z.array(z.string()).nullish(),\n radius: z.array(z.string()).nullish(),\n detail: z.array(z.string()).nullish(),\n\n color: z.array(z.string()).nullish(),\n size: z.array(z.string()).nullish(),\n tooltip: z.array(z.string()).nullish(),\n label: z.array(z.string()).nullish(),\n\n row: z.array(z.string()).nullish(),\n column: z.array(z.string()).nullish(),\n\n group: z.array(z.string()).nullish().describe('已弃用, 请使用颜色替代'),\n value: z.array(z.string()).nullish(),\n q1: z.array(z.string()).nullish(),\n q3: z.array(z.string()).nullish(),\n median: z.array(z.string()).nullish(),\n min: z.array(z.string()).nullish(),\n max: z.array(z.string()).nullish(),\n outliers: z.array(z.string()).nullish(),\n\n x0: z.array(z.string()).nullish(),\n x1: z.array(z.string()).nullish(),\n})\n\n/**\n * @description 仅VSeed内AdvancedVSeed使用此结构, 其余场景请使用DimensionEncodingEnum、MeasureEncodingEnum\n */\nexport const EncodingEnum = {\n x: 'x',\n y: 'y',\n angle: 'angle',\n radius: 'radius',\n detail: 'detail',\n\n color: 'color',\n size: 'size',\n tooltip: 'tooltip',\n label: 'label',\n\n row: 'row',\n column: 'column',\n\n group: 'group',\n} as const\n","import { z } from 'zod'\n\nexport const zDimensionEncoding = z.enum([\n 'xAxis',\n 'yAxis',\n 'angle',\n 'color',\n 'detail',\n 'tooltip',\n 'label',\n 'row',\n 'column',\n])\n\nexport const DimensionEncodingEnum = {\n xAxis: 'xAxis',\n yAxis: 'yAxis',\n angle: 'angle',\n color: 'color',\n detail: 'detail',\n tooltip: 'tooltip',\n label: 'label',\n row: 'row',\n column: 'column',\n} as const\n","import { z } from 'zod'\n\nexport const zMeasureEncoding = z.enum([\n 'primaryYAxis',\n 'secondaryYAxis',\n 'xAxis',\n 'yAxis',\n 'angle',\n 'radius',\n 'size',\n 'color',\n 'detail',\n 'column',\n 'label',\n 'tooltip',\n])\n\nexport const MeasureEncodingEnum = {\n primaryYAxis: 'primaryYAxis',\n secondaryYAxis: 'secondaryYAxis',\n xAxis: 'xAxis',\n yAxis: 'yAxis',\n angle: 'angle',\n radius: 'radius',\n size: 'size',\n color: 'color',\n detail: 'detail',\n column: 'column',\n label: 'label',\n tooltip: 'tooltip',\n} as const\n","import { z } from 'zod'\nexport const zBackgroundColor = z.string().default('transparent').nullish()\n\n/**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\nexport type BackgroundColor = string | undefined\n","import { z } from 'zod'\nimport { zBackgroundColor } from './backgroundColor/backgroundColor'\n\nexport const zTableConfig = z.object({\n backgroundColor: zBackgroundColor.nullish(),\n\n // Border\n borderColor: z.string().nullish(),\n\n // Body\n bodyFontSize: z.number().nullish(),\n bodyFontColor: z.string().nullish(),\n bodyBackgroundColor: z.string().nullish(),\n // Body interaction\n hoverBodyBackgroundColor: z.string().nullish(),\n hoverBodyInlineBackgroundColor: z.string().nullish(),\n\n // Header\n headerFontSize: z.number().nullish(),\n headerFontColor: z.string().nullish(),\n headerBackgroundColor: z.string().nullish(),\n // Header interaction\n hoverHeaderBackgroundColor: z.string().nullish(),\n hoverHeaderInlineBackgroundColor: z.string().nullish(),\n\n // Interaction\n selectedBorderColor: z.string().nullish(),\n selectedBackgroundColor: z.string().nullish(),\n})\n\nexport type TableConfig = z.infer<typeof zTableConfig>\n","import { z } from 'zod'\n\nexport const zXBandAxis = z.object({\n visible: z.boolean().default(true).nullish(),\n\n labelAutoHide: z.boolean().default(true).nullish(),\n labelAutoHideGap: z.number().default(0).nullish(),\n labelAutoRotate: z.boolean().default(true).nullish(),\n labelAutoRotateAngleRange: z.array(z.number()).default([0, -45, -90]).nullish(),\n labelAutoLimit: z.boolean().default(true).nullish(),\n labelAutoLimitLength: z.number().default(100).nullish(),\n label: z\n .object({\n visible: z.boolean().default(true).nullish(),\n labelColor: z.string().default('#797B85').nullish(),\n labelFontSize: z.number().default(12).nullish(),\n labelFontWeight: z.number().default(400).nullish(),\n labelAngle: z.number().default(0).nullish(),\n })\n .nullish(),\n line: z\n .object({\n visible: z.boolean().default(true).nullish(),\n lineColor: z.string().default('rgba(54, 65, 89, 0.30)').nullish(),\n lineWidth: z.number().default(1).nullish(),\n })\n .nullish(),\n tick: z\n .object({\n visible: z.boolean().default(true).nullish(),\n tickInside: z.boolean().default(false).nullish(),\n tickColor: z.string().default('rgba(54, 65, 89, 0.30)').nullish(),\n tickSize: z.number().default(4).nullish(),\n })\n .nullish(),\n title: z\n .object({\n visible: z.boolean().default(false).nullish(),\n titleText: z.string().default('').nullish(),\n titleColor: z.string().default('#646A73').nullish(),\n titleFontSize: z.number().default(12).nullish(),\n titleFontWeight: z.number().default(400).nullish(),\n })\n .nullish(),\n grid: z\n .object({\n visible: z.boolean().default(false).nullish(),\n gridColor: z.string().default('rgba(54, 65, 89, 0.15)').nullish(),\n gridWidth: z.number().default(0.5).nullish(),\n gridLineDash: z.array(z.number()).nullish(),\n })\n .nullish(),\n})\nexport const zYBandAxis = zXBandAxis\n","import { z } from 'zod'\nimport { zNumFormat } from '../../format'\n\nexport const zXLinearAxis = z.object({\n visible: z.boolean().default(true).nullish(),\n\n min: z.number().nullish(),\n max: z.number().nullish(),\n nice: z.boolean().default(true).nullish(),\n zero: z.boolean().default(true).nullish(),\n log: z.boolean().default(false).nullish(),\n logBase: z.number().default(10).nullish(),\n inverse: z.boolean().default(false).nullish(),\n numFormat: zNumFormat.nullish(),\n label: z\n .object({\n visible: z.boolean().default(true).nullish(),\n labelColor: z.string().default('#797B85').nullish(),\n labelFontSize: z.number().default(12).nullish(),\n labelFontWeight: z.number().default(400).nullish(),\n labelAngle: z.number().default(0).nullish(),\n })\n .nullish(),\n line: z\n .object({\n visible: z.boolean().default(true).nullish(),\n lineColor: z.string().default('rgba(54, 65, 89, 0.30)').nullish(),\n lineWidth: z.number().default(1).nullish(),\n })\n .nullish(),\n tick: z\n .object({\n visible: z.boolean().default(true).nullish(),\n tickInside: z.boolean().default(false).nullish(),\n tickColor: z.string().default('rgba(54, 65, 89, 0.30)').nullish(),\n tickSize: z.number().default(4).nullish(),\n })\n .nullish(),\n title: z\n .object({\n visible: z.boolean().default(false).nullish(),\n titleText: z.string().default('').nullish(),\n titleColor: z.string().default('#646A73').nullish(),\n titleFontSize: z.number().default(12).nullish(),\n titleFontWeight: z.number().default(400).nullish(),\n })\n .nullish(),\n grid: z\n .object({\n visible: z.boolean().default(false).nullish(),\n gridColor: z.string().default('rgba(54, 65, 89, 0.15)').nullish(),\n gridWidth: z.number().default(0.5).nullish(),\n gridLineDash: z.array(z.number()).nullish(),\n })\n .nullish(),\n})\n\nexport const zYLinearAxis = zXLinearAxis\n","import { z } from 'zod'\n\nexport const zCrosshairLine = z.object({\n visible: z.boolean().nullish(),\n lineColor: z.string().nullish(),\n labelColor: z.string().nullish(),\n labelVisible: z.boolean().nullish(),\n labelBackgroundColor: z.string().nullish(),\n lineDash: z.array(z.number()).nullish(),\n})\n\nexport const zCrosshairRect = z.object({\n visible: z.boolean().nullish(),\n rectColor: z.string().nullish(),\n labelColor: z.string().nullish(),\n labelVisible: z.boolean().nullish(),\n labelBackgroundColor: z.string().nullish(),\n})\n","import { z } from 'zod'\n\nexport const zColor = z.object({\n colorScheme: z.array(z.string()).nullish(),\n linearColorScheme: z.array(z.string()).nullish(),\n colorMapping: z.record(z.string(), z.string()).nullish(),\n})\n\nexport const zLinearColor = z.object({\n linearColorScheme: z.array(z.string()).nullish(),\n})\n\nexport type Color = {\n /**\n * @description 离散颜色配色方案, 颜色配色方案用于定义图表中不同元素的颜色\n * @example ['#FFCDD2,#F8BBD0,#E1BEE7,#D1C4E9,#C5CAE9,#BBDEFB,#B3E5FC,#B2EBF2,#B2DFDB,#C8E6C9,#DCEDC8,#F0F4C3,#FFF9C4,#FFECB3,#FFE0B2']\n */\n colorScheme?: string[]\n /**\n * @description 线性渐变颜色配色方案, 线性渐变颜色配色方案用于定义图表中不同元素的颜色\n * @example ['#FFCDD2, #F8BBD0]\n */\n linearColorScheme?: string[]\n /**\n * @description 颜色映射, 颜色映射用于将数据值映射到具体的颜色\n * @example\n * {\n * 'profit': 'red',\n * 'sales': 'blue',\n * }\n */\n colorMapping?: Record<string, string>\n /**\n * @description 正负颜色配置, 用于定义图表中正值的颜色\n */\n positiveColor?: string\n /**\n * @description 正负颜色配置, 用于定义图表中负值的颜色\n */\n negativeColor?: string\n}\n","import { z } from 'zod'\nimport type { Datum } from '../properties'\n\nexport type ValueSelector = string | number\n\nexport type PartialDatumSelector = Datum\n\n/**\n * @description 指标选择器, 用于选择数据项中指标字段的值\n */\nexport type MeasureSelector = {\n /**\n * @description 指标字段, measures 某一项的 id\n */\n field: string\n /**\n * @description 操作符\n * - =: 选择数据项中指标字段的值等于 value 的数据项\n * - ==: 选择数据项中指标字段的值等于 value 的数据项\n * - !=: 选择数据项中指标字段的值不等于 value 的数据项\n * - >: 选择数据项中指标字段的值大于 value 的数据项\n * - <: 选择数据项中指标字段的值小于 value 的数据项\n * - >=: 选择数据项中指标字段的值大于等于 value 的数据项\n * - <=: 选择数据项中指标字段的值小于等于 value 的数据项\n * - between: 选择数据项中指标字段的值在 value 之间的 data item\n */\n operator?: '=' | '==' | '!=' | '>' | '<' | '>=' | '<=' | 'between'\n /**\n * @description 操作符\n * - =: 选择数据项中指标字段的值等于 value 的数据项, 会将值转换为字符串后进行比较, 因此 1 == \"1\" 为 true\n * - ==: 选择数据项中指标字段的值精准等于 value 的数据项, 不会做任何特殊处理, 因此 1 == \"1\" 为 false\n * - !=: 选择数据项中指标字段的值不等于 value 的数据项\n * - >: 选择数据项中指标字段的值大于 value 的数据项\n * - <: 选择数据项中指标字段的值小于 value 的数据项\n * - >=: 选择数据项中指标字段的值大于等于 value 的数据项\n * - <=: 选择数据项中指标字段的值小于等于 value 的数据项\n * - between: 选择数据项中指标字段的值在 value 之间的 data item\n * same as operator\n */\n op?: '=' | '==' | '!=' | '>' | '<' | '>=' | '<=' | 'between'\n /**\n * @description 选择数据项中指标字段的值\n * - 仅 op 为 between 时, value 为长度为2的数组, 数组中的元素为指标字段的最小值和最大值\n * - 其他情况, value 为指标字段的单个值\n */\n value: string | number | Array<string | number>\n // /**\n // * @description 是否使用原始数据进行数据匹配, 开启后会有更多的数据被匹配到\n // * 若下述数据, measures 仅设置了 value, field 为 isHigh 或 isLow, op 为 =, value 为 1,\n // * 关闭useOrigin时, 数据项并不会考虑measures之外的字段, 因此field为isHigh或isLow的字段会被忽略\n // * 开启useOrigin时, 会直接使用整个数据项进行匹配\n // * [\n // * {value: 100, isHigh: 1, isLow: 0},\n // * {value: 200, isHigh: 0, isLow: 1},\n // * {value: 300, isHigh: 1, isLow: 0},\n // * ]\n // * @default false\n // */\n // useOrigin?: boolean\n}\n\n/**\n * @description 维度选择器, 用于选择数据项中维度字段的值\n */\nexport type DimensionSelector = {\n /**\n * @description 维度字段, dimensions 某一项的 id\n */\n field: string\n /**\n * @description 操作符\n * - in: 选择数据项中维度字段的值在 value 中的数据项\n * - not in: 选择数据项中维度字段的值不在 value 中的数据项\n */\n operator?: 'in' | 'not in'\n /**\n * @description 操作符\n * - in: 选择数据项中维度字段的值在 value 中的数据项\n * - not in: 选择数据项中维度字段的值不在 value 中的数据项\n * same as operator\n */\n op?: 'in' | 'not in'\n /**\n * @description 选择数据项中维度字段的值, 支持数组\n */\n value: string | number | Array<string | number>\n // /**\n // * @description 是否使用原始数据进行数据匹配, 开启后会有更多的数据被匹配到\n // * 若下述数据, dimensions 仅设置了 name, field 为 name, op 为 =, value 为 \"high\",\n // * 关闭useOrigin时, 数据项并不会考虑dimensions之外的字段, 因此field为name的字段会被忽略\n // * 开启useOrigin时, 会直接使用整个数据项进行匹配\n // * [\n // * {name: \"low\", isHigh: \"false\", isLow: \"true\"},\n // * {name: \"low\", isHigh: \"false\", isLow: \"true\"},\n // * {name: \"high\", isHigh: \"true\", isLow: \"false\"},\n // * ]\n // * @default false\n // */\n // useOrigin?: boolean\n}\n\nexport type Selector = ValueSelector | PartialDatumSelector | MeasureSelector | DimensionSelector\n\nexport type Selectors = Array<Selector>\n\nexport const zSelector = z.union([\n z.string(),\n z.number(),\n z.object({\n field: z.string(),\n operator: z.enum(['=', '==', '!=', '>', '<', '>=', '<=', 'between']).nullish(),\n op: z.enum(['=', '==', '!=', '>', '<', '>=', '<=', 'between']).nullish(),\n value: z.union([z.string(), z.number(), z.array(z.union([z.string(), z.number()]))]),\n }),\n z.object({\n field: z.string(),\n operator: z.enum(['in', 'not in']).nullish(),\n op: z.enum(['in', 'not in']).nullish(),\n value: z.union([z.string(), z.number(), z.array(z.union([z.string(), z.number()]))]),\n }),\n])\n\nexport const zSelectors = z.array(zSelector)\n","import { z } from 'zod'\nimport { zNumFormat } from '../../format'\nimport { zSelector, zSelectors } from 'src/types/dataSelector'\n\nexport const zLabel = z.object({\n enable: z.boolean().nullish(),\n wrap: z.boolean().nullish(),\n showValue: z.boolean().nullish(),\n showValuePercent: z.boolean().nullish(),\n showDimension: z.boolean().nullish(),\n autoFormat: z.boolean().nullish(),\n numFormat: zNumFormat.nullish(),\n labelFontSize: z.number().nullish(),\n labelFontWeight: z.number().or(z.string()).nullish(),\n labelBackgroundColor: z.string().nullish(),\n labelColor: z.string().nullish(),\n labelColorSmartInvert: z.boolean().nullish(),\n labelPosition: z.string().nullish(),\n labelOverlap: z.boolean().nullish(),\n selector: z.union([zSelector, zSelectors]).nullish(),\n})\n","import { z } from 'zod'\n\nexport type Legend = {\n /**\n * 图例功能是否开启\n * @default true\n * @example enable: true\n */\n enable?: boolean\n /**\n * @description 图例边框是否开启\n * @warning 仅离散图例生效\n * @default true\n * @example border: true\n */\n border?: boolean\n\n /**\n * @description 图例字体颜色\n */\n labelColor?: string\n\n /**\n * @description 图例字体大小\n * @example labelFontSize: 10\n */\n labelFontSize?: number\n\n /**\n * @description 图例字体颜色\n * @deprecated use labelColor instead\n */\n labelFontColor?: string\n\n /**\n * @description 图例字体粗细\n * @example labelFontWeight: 400\n */\n labelFontWeight?: number | string\n /**\n * @description 图例形状\n * @warning 仅离散图例生效\n * @example shapeType: 'circle'\n */\n shapeType?:\n | 'circle'\n | 'cross'\n | 'diamond'\n | 'square'\n | 'arrow'\n | 'arrow2Left'\n | 'arrow2Right'\n | 'wedge'\n | 'thinTriangle'\n | 'triangle'\n | 'triangleUp'\n | 'triangleDown'\n | 'triangleRight'\n | 'triangleLeft'\n | 'stroke'\n | 'star'\n | 'wye'\n | 'rect'\n | 'arrowLeft'\n | 'arrowRight'\n | 'rectRound'\n | 'roundLine'\n /**\n * 图例位置\n * @default 'right'\n * @example position: 'rightTop'\n */\n position?:\n | 'left'\n | 'leftTop'\n | 'leftBottom'\n | 'lt'\n | 'lb'\n | 'top'\n | 'topLeft'\n | 'topRight'\n | 'tl'\n | 'tr'\n | 'right'\n | 'rightTop'\n | 'rightBottom'\n | 'rt'\n | 'rb'\n | 'bottom'\n | 'bottomLeft'\n | 'bottomRight'\n | 'bl'\n | 'br'\n\n /**\n * @description 存在大量图例时, 最大列数 或 图例最大行数\n * 如果position为水平方向(bottom, bottomLeft, bottomRight, bl, br, top, topLeft, topRight, tl, tr), maxSize控制显示的列数\n * 如果position为垂直方向(left, leftTop, leftBottom, lt, lb, right, rightTop, rightBottom, rt, rb), maxSize控制显示的行数\n *\n * @warning 仅离散图例生效\n * @example maxSize: 2\n * @default 1\n */\n maxSize?: number\n}\n\nexport const zLegend = z.object({\n enable: z.boolean().default(true).nullish(),\n border: z.boolean().default(true).nullish(),\n maxSize: z.number().default(1).nullish(),\n shapeType: z\n .enum([\n 'circle',\n 'cross',\n 'diamond',\n 'square',\n 'arrow',\n 'arrow2Left',\n 'arrow2Right',\n 'wedge',\n 'thinTriangle',\n 'triangle',\n 'triangleUp',\n 'triangleDown',\n 'triangleRight',\n 'triangleLeft',\n 'stroke',\n 'star',\n 'wye',\n 'rect',\n 'arrowLeft',\n 'arrowRight',\n 'rectRound',\n 'roundLine',\n ])\n .default('rectRound')\n .nullish(),\n position: z\n .enum([\n 'left',\n 'leftTop',\n 'leftBottom',\n 'lt',\n 'lb',\n 'top',\n 'topLeft',\n 'topRight',\n 'tl',\n 'tr',\n 'right',\n 'rightTop',\n 'rightBottom',\n 'rt',\n 'rb',\n 'bottom',\n 'bottomLeft',\n 'bottomRight',\n 'bl',\n 'br',\n ])\n .default('bottom')\n .nullish(),\n labelColor: z.string().default('#fff').nullish(),\n labelFontSize: z.number().default(12).nullish(),\n labelFontWeight: z.number().or(z.string()).default(400).nullish(),\n})\n\nexport type ColorLegend = Pick<Legend, 'position' | 'enable'>\nexport const zColorLegend = z.object({\n position: z\n .enum([\n 'left',\n 'leftTop',\n 'leftBottom',\n 'lt',\n 'lb',\n 'top',\n 'topLeft',\n 'topRight',\n 'tl',\n 'tr',\n 'right',\n 'rightTop',\n 'rightBottom',\n 'rt',\n 'rb',\n 'bottom',\n 'bottomLeft',\n 'bottomRight',\n 'bl',\n 'br',\n ])\n .default('bottom')\n .nullish(),\n enable: z.boolean().default(true).nullish(),\n})\n","import { z } from 'zod'\n\nexport const zTooltip = z.object({\n enable: z.boolean().default(true).nullish(),\n borderColor: z.string().nullish(),\n borderWidth: z.number().nullish(),\n borderRadius: z.number().nullish(),\n padding: z.number().or(z.array(z.number()).length(4)).nullish(),\n backgroundColor: z.string().nullish(),\n lineHeight: z.number().nullish(),\n fontSize: z.number().nullish(),\n lineSpace: z.number().nullish(),\n keyColor: z.string().nullish(),\n valueColor: z.string().nullish(),\n titleColor: z.string().nullish(),\n})\n\nexport type TooltipConfig = z.infer<typeof zTooltip>\n\nexport type Tooltip = {\n /**\n * 提示信息功能是否开启\n * @default true\n */\n enable: boolean\n}\n","import { zSelector, zSelectors } from '../../dataSelector'\nimport { z } from 'zod'\n\nexport const zAnnotationPoint = z.object({\n selector: z.union([zSelector, zSelectors]).nullish(),\n text: z.string().or(z.array(z.string())).nullish(),\n textColor: z.string().default('#ffffff').nullish(),\n textFontSize: z.number().default(12).nullish(),\n textFontWeight: z.number().default(400).nullish(),\n textAlign: z.enum(['left', 'right', 'center']).default('center').nullish(),\n textBaseline: z.enum(['top', 'middle', 'bottom']).default('middle').nullish(),\n textBackgroundVisible: z.boolean().default(true).nullish(),\n textBackgroundColor: z.string().default('#212121').nullish(),\n textBackgroundBorderColor: z.string().nullish(),\n textBackgroundBorderWidth: z.number().default(1).nullish(),\n textBackgroundBorderRadius: z.number().default(4).nullish(),\n textBackgroundPadding: z.number().nullish(),\n\n offsetY: z.number().default(0).nullish(),\n offsetX: z.number().default(0).nullish(),\n})\n","import { zSelector, zSelectors } from '../../dataSelector'\nimport { z } from 'zod'\n\nexport const zAnnotationHorizontalLine = z.object({\n selector: z.union([zSelector, zSelectors]).nullish(),\n yValue: z.union([z.number(), z.string(), z.array(z.union([z.number(), z.string()]))]).nullish(),\n text: z.string().or(z.array(z.string())).nullish(),\n textPosition: z\n .enum(['outsideStart', 'outsideEnd', 'outsideMiddle', 'insideStart', 'insideMiddle', 'insideEnd'])\n .default('insideEnd')\n .nullish(),\n textColor: z.string().default('#ffffff').nullish(),\n textFontSize: z.number().default(12).nullish(),\n textFontWeight: z.number().default(400).nullish(),\n textAlign: z.enum(['left', 'right', 'center']).default('right').nullish(),\n textBaseline: z.enum(['top', 'middle', 'bottom']).default('top').nullish(),\n\n lineVisible: z.boolean().default(true).nullish(),\n lineColor: z.string().default('#212121').nullish(),\n lineWidth: z.number().default(1).nullish(),\n lineStyle: z\n .union([z.literal('solid'), z.literal('dashed'), z.literal('dotted')])\n .default('dashed')\n .nullish(),\n\n textBackgroundVisible: z.boolean().default(true).nullish(),\n textBackgroundColor: z.string().default('#212121').nullish(),\n textBackgroundBorderColor: z.string().default('#212121').nullish(),\n textBackgroundBorderRadius: z.number().default(4).nullish(),\n textBackgroundBorderWidth: z.number().default(1).nullish(),\n textBackgroundPadding: z.number().default(2).nullish(),\n})\n","import { zSelector, zSelectors } from '../../dataSelector'\nimport { z } from 'zod'\n\nexport const zAnnotationArea = z.object({\n selector: z.union([zSelector, zSelectors]).nullish(),\n textPosition: z\n .enum(['top', 'topRight', 'topLeft', 'bottom', 'bottomLeft', 'bottomRight', 'left', 'right'])\n .default('top')\n .nullish(),\n text: z.string().or(z.array(z.string())).nullish(),\n textColor: z.string().default('#ffffff').nullish(),\n textFontSize: z.number().default(12).nullish(),\n textFontWeight: z.number().default(400).nullish(),\n textAlign: z.enum(['left', 'right', 'center']).default('center').nullish(),\n textBaseline: z.enum(['top', 'middle', 'bottom']).default('top').nullish(),\n\n textBackgroundVisible: z.boolean().default(true).nullish(),\n textBackgroundColor: z.string().default('#191d24').nullish(),\n textBackgroundBorderColor: z.string().default('#191d24').nullish(),\n textBackgroundBorderWidth: z.number().default(1).nullish(),\n textBackgroundBorderRadius: z.number().default(4).nullish(),\n textBackgroundPadding: z.number().default(4).nullish(),\n\n areaColor: z.string().default('#888888').nullish(),\n areaColorOpacity: z.number().default(0.15).nullish(),\n areaBorderColor: z.string().default('#888888').nullish(),\n areaBorderWidth: z.number().default(1).nullish(),\n areaBorderRadius: z.number().default(4).nullish(),\n areaLineDash: z.array(z.number()).nullish(),\n\n outerPadding: z.number().default(4).nullish(),\n})\n","import { z } from 'zod'\nimport { zAnnotationPoint } from '../../annotation/zAnnotationPoint'\nimport { zAnnotationHorizontalLine } from '../../annotation/zAnnotationHorizontalLine'\nimport { zAnnotationArea } from '../../annotation/zAnnotationArea'\n\nexport const zAnnotationPointConfig = zAnnotationPoint.omit({ selector: true, text: true }).partial()\n\n// Use pick to explicitly list fields we want to expose in config variants.\nexport const zAnnotationHorizontalLineConfig = zAnnotationHorizontalLine\n .pick({\n // only pick fields that exist on the runtime schema\n lineColor: true,\n lineWidth: true,\n lineVisible: true,\n lineStyle: true,\n\n textBackgroundVisible: true,\n textColor: true,\n textFontSize: true,\n textFontWeight: true,\n textBackgroundColor: true,\n textBackgroundBorderColor: true,\n textBackgroundBorderWidth: true,\n textBackgroundBorderRadius: true,\n textBackgroundPadding: true,\n })\n // extend with additional config-only fields that runtime schema doesn't include\n .extend({\n endSymbolVisible: z.boolean().nullish(),\n endSymbolType: z.string().nullish(),\n endSymbolSize: z.number().nullish(),\n\n startSymbolVisible: z.boolean().nullish(),\n startSymbolType: z.string().nullish(),\n startSymbolSize: z.number().nullish(),\n })\n .partial()\n\nexport const zAnnotationVerticalLineConfig = zAnnotationHorizontalLineConfig.clone()\n\nexport const zAnnotationAreaConfig = zAnnotationArea\n .pick({\n textColor: true,\n textFontSize: true,\n textFontWeight: true,\n\n textBackgroundVisible: true,\n textBackgroundColor: true,\n textBackgroundBorderColor: true,\n textBackgroundBorderWidth: true,\n textBackgroundBorderRadius: true,\n textBackgroundPadding: true,\n\n areaColor: true,\n areaColorOpacity: true,\n areaBorderColor: true,\n areaBorderWidth: true,\n areaBorderRadius: true,\n areaLineDash: true,\n\n outerPadding: true,\n })\n .partial()\n\nexport const zAnnotationConfig = z.object({\n annotationPoint: zAnnotationPointConfig.nullish(),\n annotationHorizontalLine: zAnnotationHorizontalLineConfig.nullish(),\n annotationVerticalLine: zAnnotationVerticalLineConfig.nullish(),\n annotationArea: zAnnotationAreaConfig.nullish(),\n})\n","import { z } from 'zod'\n\nexport const zPivotChartGridConfig = z.object({\n borderColor: z.string().nullish(),\n bodyFontColor: z.string().nullish(),\n headerFontColor: z.string().nullish(),\n headerBackgroundColor: z.string().nullish(),\n hoverHeaderBackgroundColor: z.string().nullish(),\n hoverHeaderInlineBackgroundColor: z.string().nullish(),\n outlineBorderLineWidth: z.number().nullish(),\n frameCornerRadius: z.number().nullish(),\n\n minChartWidth: z.number().nullish(),\n minChartHeight: z.number().nullish(),\n\n titleFontColor: z.string().nullish(),\n titleFontSize: z.number().nullish(),\n titleFontWeight: z.string().nullish(),\n\n chartGridColor: z.string().nullish(),\n axisLabelColor: z.string().nullish(),\n})\n\nexport type PivotChartGridConfig = z.infer<typeof zPivotChartGridConfig>\n","import { z } from 'zod'\nimport { zXBandAxis, zYLinearAxis } from './axes'\nimport { zCrosshairLine } from './crosshair'\nimport { zBackgroundColor } from './backgroundColor/backgroundColor'\nimport { zColor } from './color/color'\nimport { zLabel } from './label'\nimport { zLegend } from './legend/legend'\nimport { zTooltip } from './tooltip/tooltip'\nimport { zAnnotationConfig } from './annotation/zAnnotaion'\nimport { zPivotChartGridConfig } from './pivotGrid'\n\nexport const zLineConfig = z.object({\n backgroundColor: zBackgroundColor.nullish(),\n label: zLabel.nullish(),\n color: zColor.nullish(),\n tooltip: zTooltip.nullish(),\n legend: zLegend.nullish(),\n\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairLine: zCrosshairLine.nullish(),\n pivotGrid: zPivotChartGridConfig.nullish(),\n annotation: zAnnotationConfig.nullish(),\n})\n\nexport type LineConfig = z.infer<typeof zLineConfig>\n","import { z } from 'zod'\n\nexport const zStackCornerRadius = z.number().or(z.array(z.number())).default([3, 3, 0, 0])\n\nexport type StackCornerRadius = z.infer<typeof zStackCornerRadius>\n","import { z } from 'zod'\n\nexport const zBarMaxWidth = z.number().or(z.string())\n\nexport type BarMaxWidth = z.infer<typeof zBarMaxWidth>\n\nexport const zBarGapInGroup = z.number().or(z.string())\n\nexport type BarGapInGroup = z.infer<typeof zBarGapInGroup>\n","import { z } from 'zod'\n\nexport const zEcdfRegressionLine = z.object({\n enable: z.boolean().nullish(),\n color: z.string().nullish(),\n lineWidth: z.number().nullish(),\n lineDash: z.array(z.number()).nullish(),\n text: z.string().nullish(),\n textColor: z.string().nullish(),\n textFontSize: z.number().nullish(),\n textFontWeight: z.number().nullish(),\n})\n\nexport const zKdeRegressionLine = zEcdfRegressionLine.extend({})\n\nexport const zLinearRegressionLine = zEcdfRegressionLine.extend({\n confidenceIntervalVisible: z.boolean().nullish(),\n confidenceIntervalColor: z.string().nullish(),\n confidenceIntervalOpacity: z.number().nullish(),\n})\n\nexport const zLogisticRegressionLine = zLinearRegressionLine.extend({})\nexport const zLowessRegressionLine = zLinearRegressionLine.extend({})\n\nexport const zPolynomialRegressionLine = zLinearRegressionLine.extend({\n degree: z.number().nullish(),\n})\n\nexport const zRegressionLine = z.object({\n ecdfRegressionLine: zEcdfRegressionLine.or(z.array(zEcdfRegressionLine)).nullish(),\n kdeRegressionLine: zKdeRegressionLine.or(z.array(zKdeRegressionLine)).nullish(),\n linearRegressionLine: zLinearRegressionLine.or(z.array(zLinearRegressionLine)).nullish(),\n lowessRegressionLine: zLowessRegressionLine.or(z.array(zLowessRegressionLine)).nullish(),\n polynomialRegressionLine: zPolynomialRegressionLine.or(z.array(zPolynomialRegressionLine)).nullish(),\n logisticRegressionLine: zLogisticRegressionLine.or(z.array(zLogisticRegressionLine)).nullish(),\n})\n\nexport type RegressionLineConfig = z.infer<typeof zRegressionLine>\n","import { z } from 'zod'\nimport { zXBandAxis, zYLinearAxis } from './axes'\nimport { zCrosshairRect } from './crosshair'\nimport { zStackCornerRadius } from './stackCornerRadius/stackCornerRadius'\nimport { zBackgroundColor } from './backgroundColor/backgroundColor'\nimport { zColor } from './color/color'\nimport { zLabel } from './label'\nimport { zLegend } from './legend/legend'\nimport { zTooltip } from './tooltip/tooltip'\nimport { zAnnotationConfig } from './annotation/zAnnotaion'\nimport { zPivotChartGridConfig } from './pivotGrid'\nimport { zBarGapInGroup, zBarMaxWidth } from './barWidth'\nimport { zRegressionLine } from '../regressionLine'\n\nexport const zColumnParallelConfig = z.object({\n backgroundColor: zBackgroundColor.nullish(),\n label: zLabel.nullish(),\n color: zColor.nullish(),\n tooltip: zTooltip.nullish(),\n legend: zLegend.nullish(),\n\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n stackCornerRadius: zStackCornerRadius.nullish(),\n barMaxWidth: zBarMaxWidth.nullish(),\n barGapInGroup: zBarGapInGroup.nullish(),\n pivotGrid: zPivotChartGridConfig.nullish(),\n annotation: zAnnotationConfig.nullish(),\n})\nexport const zColumnConfig = zColumnParallelConfig.extend({\n regressionLine: zRegressionLine.nullish(),\n})\nexport const zColumnPercentConfig = zColumnParallelConfig.extend({})\n\nexport type ColumnConfig = z.infer<typeof zColumnConfig>\nexport type ColumnParallelConfig = z.infer<typeof zColumnParallelConfig>\nexport type ColumnPercentConfig = z.infer<typeof zColumnPercentConfig>\n","import { z } from 'zod'\nimport { zYBandAxis, zXLinearAxis } from './axes'\nimport { zCrosshairRect } from './crosshair'\nimport { zStackCornerRadius } from './stackCornerRadius/stackCornerRadius'\nimport { zBackgroundColor } from './backgroundColor/backgroundColor'\nimport { zColor } from './color/color'\nimport { zLabel } from './label'\nimport { zLegend } from './legend/legend'\nimport { zTooltip } from './tooltip/tooltip'\nimport { zAnnotationConfig } from './annotation/zAnnotaion'\nimport { zPivotChartGridConfig } from './pivotGrid'\n\nexport const zBarConfig = z.object({\n backgroundColor: zBackgroundColor.nullish(),\n label: zLabel.nullish(),\n color: zColor.nullish(),\n tooltip: zTooltip.nullish(),\n legend: zLegend.nullish(),\n\n xAxis: zXLinearAxis.nullish(),\n yAxis: zYBandAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n stackCornerRadius: zStackCornerRadius.nullish(),\n pivotGrid: zPivotChartGridConfig.nullish(),\n annotation: zAnnotationConfig.nullish(),\n})\nexport const zBarParallelConfig = zBarConfig\nexport const zBarPercentConfig = zBarConfig\n\nexport type BarConfig = z.infer<typeof zBarConfig>\nexport type BarParallelConfig = z.infer<typeof zBarParallelConfig>\nexport type BarPercentConfig = z.infer<typeof zBarPercentConfig>\n","import { z } from 'zod'\nimport { zXBandAxis, zYLinearAxis } from './axes'\nimport { zCrosshairLine } from './crosshair'\nimport { zBackgroundColor } from './backgroundColor/backgroundColor'\nimport { zColor } from './color/color'\nimport { zLabel } from './label'\nimport { zLegend } from './legend/legend'\nimport { zTooltip } from './tooltip/tooltip'\nimport { zAnnotationConfig } from './annotation/zAnnotaion'\nimport { zPivotChartGridConfig } from './pivotGrid'\n\nexport const zAreaConfig = z.object({\n backgroundColor: zBackgroundColor.nullish(),\n label: zLabel.nullish(),\n color: zColor.nullish(),\n tooltip: zTooltip.nullish(),\n legend: zLegend.nullish(),\n\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairLine: zCrosshairLine.nullish(),\n pivotGrid: zPivotChartGridConfig.nullish(),\n annotation: zAnnotationConfig.nullish(),\n})\nexport const zAreaPercentConfig = zAreaConfig\n\nexport type AreaConfig = z.infer<typeof zAreaConfig>\nexport type AreaPercentConfig = z.infer<typeof zAreaPercentConfig>\n","import { z } from 'zod'\nimport { zXLinearAxis, zYLinearAxis } from './axes'\nimport { zCrosshairLine } from './crosshair'\nimport { zBackgroundColor } from './backgroundColor/backgroundColor'\nimport { zColor } from './color/color'\nimport { zLabel } from './label'\nimport { zLegend } from './legend/legend'\nimport { zTooltip } from './tooltip/tooltip'\nimport { zAnnotationConfig } from './annotation/zAnnotaion'\nimport { zPivotChartGridConfig } from './pivotGrid'\nimport { zRegressionLine } from '../regressionLine/zRegressionLine'\n\nexport const zScatterConfig = z.object({\n backgroundColor: zBackgroundColor.nullish(),\n label: zLabel.nullish(),\n color: zColor.nullish(),\n tooltip: zTooltip.nullish(),\n legend: zLegend.nullish(),\n\n xAxis: zXLinearAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairLine: zCrosshairLine.nullish(),\n size: z.number().or(z.array(z.number())).nullish(),\n sizeRange: z.number().or(z.array(z.number())).nullish(),\n pivotGrid: zPivotChartGridConfig.nullish(),\n annotation: zAnnotationConfig.nullish(),\n regressionLine: zRegressionLine.nullish(),\n})\n\nexport type ScatterConfig = z.infer<typeof zScatterConfig>\n","import { z } from 'zod'\nimport { zXBandAxis, zYLinearAxis } from './axes'\nimport { zCrosshairRect } from './crosshair'\nimport { zBackgroundColor } from './backgroundColor/backgroundColor'\nimport { zColor } from './color/color'\nimport { zLabel } from './label'\nimport { zLegend } from './legend/legend'\nimport { zTooltip } from './tooltip/tooltip'\nimport { zDualChartType } from '../chartType'\nimport { zAnnotationConfig } from './annotation/zAnnotaion'\nimport { zPivotChartGridConfig } from './pivotGrid'\n\nexport const zDualAxisConfig = z.object({\n backgroundColor: zBackgroundColor.nullish(),\n label: zLabel.nullish(),\n color: zColor.nullish(),\n tooltip: zTooltip.nullish(),\n legend: zLegend.nullish(),\n\n dualChartType: z.array(zDualChartType).or(zDualChartType).nullish(),\n alignTicks: z.array(z.boolean()).or(z.boolean()).nullish(),\n primaryYAxis: z.array(zYLinearAxis).or(zYLinearAxis).nullish(),\n secondaryYAxis: z.array(zYLinearAxis).or(zYLinearAxis).nullish(),\n\n xAxis: zXBandAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n pivotGrid: zPivotChartGridConfig.nullish(),\n annotation: zAnnotationConfig.nullish(),\n})\n\nexport type DualAxisConfig = z.infer<typeof zDualAxisConfig>\n","import { z } from 'zod'\nimport { zLabel } from './zLabel'\n\nexport const zPieLabel = zLabel.extend({\n labelLayout: z.union([z.literal('arc'), z.literal('labelLine'), z.literal('edge')]).nullish(),\n})\n","import { z } from 'zod'\nimport { zBackgroundColor } from './backgroundColor/backgroundColor'\nimport { zColor } from './color/color'\nimport { zPieLabel } from './label'\nimport { zLegend } from './legend/legend'\nimport { zTooltip } from './tooltip/tooltip'\nimport { zPivotChartGridConfig } from './pivotGrid'\n\nexport const zPieConfig = z.object({\n backgroundColor: zBackgroundColor.nullish(),\n label: zPieLabel.nullish(),\n color: zColor.nullish(),\n tooltip: zTooltip.nullish(),\n legend: zLegend.nullish(),\n pivotGrid: zPivotChartGridConfig.nullish(),\n cornerRadius: z.number().nullish(),\n})\nexport const zDonutConfig = zPieConfig\nexport const zRadarConfig = zPieConfig\n\nexport type PieConfig = z.infer<typeof zPieConfig>\nexport type DonutConfig = z.infer<typeof zDonutConfig>\nexport type RadarConfig = z.infer<typeof zRadarConfig>\n","import { z } from 'zod'\nimport { zBackgroundColor } from './backgroundColor/backgroundColor'\nimport { zColor } from './color/color'\nimport { zPieLabel } from './label'\nimport { zLegend } from './legend/legend'\nimport { zTooltip } from './tooltip/tooltip'\nimport { zPivotChartGridConfig } from './pivotGrid'\n\nexport const zRoseConfig = z.object({\n backgroundColor: zBackgroundColor.nullish(),\n label: zPieLabel.nullish(),\n color: zColor.nullish(),\n tooltip: zTooltip.nullish(),\n legend: zLegend.nullish(),\n pivotGrid: zPivotChartGridConfig.nullish(),\n})\nexport const zRoseParallelConfig = zRoseConfig\n\nexport type RoseConfig = z.infer<typeof zRoseConfig>\nexport type RoseParallelConfig = z.infer<typeof zRoseParallelConfig>\n","import { z } from 'zod'\n\nexport const zFunnelTransform = z.object({\n backgroundColor: z.string().nullish(),\n textColor: z.string().nullish(),\n})\n","import { z } from 'zod'\nimport { zBackgroundColor } from './backgroundColor/backgroundColor'\nimport { zColor } from './color/color'\nimport { zLabel } from './label'\nimport { zLegend } from './legend/legend'\nimport { zTooltip } from './tooltip/tooltip'\nimport { zFunnelTransform } from './funnelTransform/zFunnelTransform'\nimport { zPivotChartGridConfig } from './pivotGrid'\n\nexport const zFunnelConfig = z.object({\n backgroundColor: zBackgroundColor.nullish(),\n label: zLabel.nullish(),\n color: zColor.nullish(),\n tooltip: zTooltip.nullish(),\n legend: zLegend.nullish(),\n\n pivotGrid: zPivotChartGridConfig.nullish(),\n transform: zFunnelTransform.nullish(),\n})\n\nexport type FunnelConfig = z.infer<typeof zFunnelConfig>\n","import { z } from 'zod'\n\nexport const zHeatmapCell = z.object({\n stroke: z.string().nullish(),\n lineWidth: z.number().nullish(),\n cornerRadius: z.number().nullish(),\n})\n","import { z } from 'zod'\nimport { zBackgroundColor } from './backgroundColor/backgroundColor'\nimport { zColor } from './color/color'\nimport { zLabel } from './label'\nimport { zLegend } from './legend/legend'\nimport { zTooltip } from './tooltip/tooltip'\nimport { zPivotChartGridConfig } from './pivotGrid'\nimport { zHeatmapCell } from './heatmap/zHeatmap'\n\nexport const zHeatmapConfig = z.object({\n backgroundColor: zBackgroundColor.nullish(),\n label: zLabel.nullish(),\n color: zColor.nullish(),\n tooltip: zTooltip.nullish(),\n legend: zLegend.nullish(),\n\n pivotGrid: zPivotChartGridConfig.nullish(),\n cell: zHeatmapCell.nullish(),\n})\n\nexport type HeatmapConfig = z.infer<typeof zHeatmapConfig>\n","import type { z } from 'zod'\nimport { zTableConfig } from './table'\n\nexport const zPivotTableConfig = zTableConfig\nexport type PivotTableConfig = z.infer<typeof zPivotTableConfig>\n","import { z } from 'zod'\n\nexport const zWhiskersConfig = z.number().or(z.array(z.number())).default(1.5)\n\nexport type WhiskersConfig = z.infer<typeof zWhiskersConfig>\n","import { z } from 'zod'\nimport { zXBandAxis, zYLinearAxis } from './axes'\nimport { zCrosshairRect } from './crosshair'\nimport { zBackgroundColor } from './backgroundColor/backgroundColor'\nimport { zColor } from './color/color'\nimport { zLabel } from './label'\nimport { zLegend } from './legend/legend'\nimport { zTooltip } from './tooltip/tooltip'\nimport { zAnnotationConfig } from './annotation/zAnnotaion'\nimport { zPivotChartGridConfig } from './pivotGrid'\nimport { zWhiskersConfig } from './whiskers'\n\nexport const zBoxplotConfig = z.object({\n backgroundColor: zBackgroundColor.nullish(),\n label: zLabel.nullish(),\n color: zColor.nullish(),\n tooltip: zTooltip.nullish(),\n legend: zLegend.nullish(),\n\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n pivotGrid: zPivotChartGridConfig.nullish(),\n annotation: zAnnotationConfig.nullish(),\n\n whiskers: zWhiskersConfig.nullish(),\n})\n\nexport type BoxplotConfig = z.infer<typeof zBoxplotConfig>\n","import { z } from 'zod'\nimport { zXBandAxis, zYLinearAxis } from './axes'\nimport { zCrosshairRect } from './crosshair'\nimport { zStackCornerRadius } from './stackCornerRadius/stackCornerRadius'\nimport { zBackgroundColor } from './backgroundColor/backgroundColor'\nimport { zColor } from './color/color'\nimport { zLabel } from './label'\nimport { zLegend } from './legend/legend'\nimport { zTooltip } from './tooltip/tooltip'\nimport { zAnnotationConfig } from './annotation/zAnnotaion'\nimport { zPivotChartGridConfig } from './pivotGrid'\nimport { zRegressionLine } from '../regressionLine'\n\nexport const zHistogramConfig = z.object({\n backgroundColor: zBackgroundColor.nullish(),\n label: zLabel.nullish(),\n color: zColor.nullish(),\n tooltip: zTooltip.nullish(),\n legend: zLegend.nullish(),\n\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n stackCornerRadius: zStackCornerRadius.nullish(),\n pivotGrid: zPivotChartGridConfig.nullish(),\n annotation: zAnnotationConfig.nullish(),\n binCount: z.number().positive().nullish(),\n binStep: z.number().positive().nullish(),\n binValueType: z.literal('count').or(z.literal('percentage')).nullish(),\n regressionLine: zRegressionLine.nullish(),\n})\n\nexport type HistogramConfig = z.infer<typeof zHistogramConfig>\n","import { z } from 'zod'\nimport { zTableConfig } from './table'\nimport { zLineConfig } from './line'\nimport { zColumnConfig, zColumnParallelConfig, zColumnPercentConfig } from './column'\nimport { zBarConfig, zBarParallelConfig, zBarPercentConfig } from './bar'\nimport { zAreaConfig, zAreaPercentConfig } from './area'\nimport { zScatterConfig } from './scatter'\nimport { zDualAxisConfig } from './dualAxis'\nimport { zDonutConfig, zPieConfig, zRadarConfig } from './pie'\nimport { zRoseConfig, zRoseParallelConfig } from './rose'\nimport { zFunnelConfig } from './funnel'\nimport { zHeatmapConfig } from './heatmap'\nimport { zPivotTableConfig } from './pivotTable'\nimport { zBoxplotConfig } from './boxplot'\nimport { zHistogramConfig } from './histogram'\n\nexport type Config = z.infer<typeof zConfig>\nexport const zConfig = z.object({\n table: zTableConfig.nullish(),\n pivotTable: zPivotTableConfig.nullish(),\n\n // cartesian\n line: zLineConfig.nullish(),\n column: zColumnConfig.nullish(),\n columnParallel: zColumnParallelConfig.nullish(),\n columnPercent: zColumnPercentConfig.nullish(),\n bar: zBarConfig.nullish(),\n barParallel: zBarParallelConfig.nullish(),\n barPercent: zBarPercentConfig.nullish(),\n area: zAreaConfig.nullish(),\n areaPercent: zAreaPercentConfig.nullish(),\n\n scatter: zScatterConfig.nullish(),\n dualAxis: zDualAxisConfig.nullish(),\n\n // polar\n rose: zRoseConfig.nullish(),\n roseParallel: zRoseParallelConfig.nullish(),\n pie: zPieConfig.nullish(),\n donut: zDonutConfig.nullish(),\n radar: zRadarConfig.nullish(),\n // other\n funnel: zFunnelConfig.nullish(),\n heatmap: zHeatmapConfig.nullish(),\n boxPlot: zBoxplotConfig.nullish(),\n histogram: zHistogramConfig.nullish(),\n})\n","import { z } from 'zod'\nimport { zConfig } from '../config'\n\nexport const zCustomThemeConfig = z.object({\n config: zConfig.nullish(),\n})\n\nexport const zCustomTheme = z.record(z.string(), zCustomThemeConfig).nullish()\n\nexport type CustomTheme = z.infer<typeof zCustomTheme>\nexport type CustomThemeConfig = z.infer<typeof zCustomThemeConfig>\n","import { z } from 'zod'\n\nexport const zTheme = z.string()\n\ntype Light = 'light' & { readonly brand: unique symbol }\ntype Dark = 'dark' & { readonly brand: unique symbol }\n\n/**\n * 主题\n * @default light\n * @description 内置 light、dark 两种主题, 新的主题可以通过registerTheme自定义主题.\n */\nexport type Theme = Light | Dark | string\n","import { z } from 'zod'\nimport { zSelector, zSelectors, type Selector, type Selectors } from '../../dataSelector'\n\nexport type BarStyle = {\n /**\n * 数据选择器\n * @description\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n * @type {Selector | Selectors}\n * @example 数值选择器\n * selector = \"tool\"\n * selector = [\"tool\", \"book\"]\n * selector = 100\n * selector = [100, 200]\n * @example 局部数据选择器\n * selector = { profit: 100 }\n * selector = [{ profit: 100 }, { profit: 200 }]\n * @example 条件维度选择器\n * selector = {\n * field: 'category',\n * operator: 'in',\n * value: 'tool'\n * }\n * selector = {\n * field: 'category',\n * operator: 'not in',\n * value: 'book'\n * }\n * @example 条件指标选择器\n * selector = {\n * field: 'profit',\n * operator: '>=',\n * value: 100\n * }\n * selector = {\n * field: 'profit',\n * operator: 'between'\n * value: [100, 300]\n * }\n */\n selector?: Selector | Selectors\n\n /**\n * @description 柱图元(矩形图元)是否可见\n */\n barVisible?: boolean\n /**\n * @description 柱图元(矩形图元)颜色\n * @type {string}\n */\n barColor?: string\n /**\n * @description 柱图元(矩形图元)颜色透明度\n * @type {number}\n */\n barColorOpacity?: number\n /**\n * @description 柱图元(矩形图元)边框颜色\n * @type {string}\n */\n barBorderColor?: string\n /**\n * @description 柱图元(矩形图元)边框宽度\n * @type {number}\n */\n barBorderWidth?: number\n /**\n * @description 柱图元(矩形图元)边框样式\n * @type {number}\n * @example solid\n * @example dashed\n * @example dotted\n */\n barBorderStyle?: 'solid' | 'dashed' | 'dotted'\n /**\n * @description 柱图元(矩形图元)圆角\n * @type {number | number[]}\n * @example 4\n * @example [0, 0, 10, 10]\n */\n /**\n * @description 柱图元(矩形图元)描边透明度\n * @type {number}\n */\n barBorderOpacity?: number\n barRadius?: number | number[]\n}\n\nexport const zBarStyle = z.object({\n selector: z.union([zSelector, zSelectors]).nullish(),\n barVisible: z.boolean().nullish(),\n barColor: z.string().nullish(),\n barColorOpacity: z.number().nullish(),\n barBorderColor: z.string().nullish(),\n barBorderWidth: z.number().nullish(),\n barBorderStyle: z.union([z.literal('solid'), z.literal('dashed'), z.literal('dotted')]).nullish(),\n barRadius: z.union([z.number(), z.array(z.number())]).nullish(),\n})\n","import { z } from 'zod'\nimport { zSelector, zSelectors, type Selector, type Selectors } from '../../dataSelector'\n\nexport type PointStyle = {\n /**\n * 数据选择器\n * @description\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n * @type {Selector | Selectors}\n * @example 数值选择器\n * selector = \"tool\"\n * selector = [\"tool\", \"book\"]\n * selector = 100\n * selector = [100, 200]\n * @example 局部数据选择器\n * selector = { profit: 100 }\n * selector = [{ profit: 100 }, { profit: 200 }]\n * @example 条件维度选择器\n * selector = {\n * field: 'category',\n * operator: 'in',\n * value: 'tool'\n * }\n * selector = {\n * field: 'category',\n * operator: 'not in',\n * value: 'book'\n * }\n * @example 条件指标选择器\n * selector = {\n * field: 'profit',\n * operator: '>=',\n * value: 100\n * }\n * selector = {\n * field: 'profit',\n * operator: 'between'\n * value: [100, 300]\n * }\n */\n selector?: Selector | Selectors\n\n /**\n * @description 点是否可见\n */\n pointVisible?: boolean\n /**\n * 点大小\n * @description 点大小\n */\n pointSize?: number\n /**\n * 点图元颜色\n * @description 点图元颜色\n */\n pointColor?: string\n /**\n * 点图元颜色透明度\n * @description 点图元颜色透明度\n */\n pointColorOpacity?: number\n /**\n * 点图元边框颜色\n * @description 点图元边框颜色\n */\n pointBorderColor?: string\n /**\n * 点图元边框宽度\n * @description 点图元边框宽度\n */\n pointBorderWidth?: number\n /**\n * 点图元边框样式\n * @description 点图元边框样式\n * @example solid\n * @example dashed\n * @example dotted\n */\n pointBorderStyle?: 'solid' | 'dashed' | 'dotted'\n}\n\nexport const zPointStyle = z.object({\n selector: z.union([zSelector, zSelectors]).nullish(),\n pointVisible: z.boolean().nullish(),\n pointSize: z.number().nullish(),\n pointColor: z.string().nullish(),\n pointColorOpacity: z.number().nullish(),\n pointBorderColor: z.string().nullish(),\n pointBorderWidth: z.number().nullish(),\n pointBorderStyle: z.union([z.enum(['solid', 'dashed', 'dotted'])]).nullish(),\n})\n","import { z } from 'zod'\nimport { zSelector, zSelectors, type Selector, type Selectors } from '../../dataSelector'\n\nexport type LineStyle = {\n /**\n * 数据选择器\n * @description\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n * @type {Selector | Selectors}\n * @example 数值选择器\n * selector = \"tool\"\n * selector = [\"tool\", \"book\"]\n * selector = 100\n * selector = [100, 200]\n * @example 局部数据选择器\n * selector = { profit: 100 }\n * selector = [{ profit: 100 }, { profit: 200 }]\n * @example 条件维度选择器\n * selector = {\n * field: 'category',\n * operator: 'in',\n * value: 'tool'\n * }\n * selector = {\n * field: 'category',\n * operator: 'not in',\n * value: 'book'\n * }\n * @example 条件指标选择器\n * selector = {\n * field: 'profit',\n * operator: '>=',\n * value: 100\n * }\n * selector = {\n * field: 'profit',\n * operator: 'between'\n * value: [100, 300]\n * }\n */\n selector?: Selector | Selectors\n\n /**\n * @description 线段是否可见\n */\n lineVisible?: boolean\n /**\n * @description 线段是否平滑\n * @type {boolean}\n */\n lineSmooth?: boolean\n\n /**\n * @description 线段颜色\n */\n lineColor?: string\n /**\n * @description 线段颜色透明度\n */\n lineColorOpacity?: number\n /**\n * @description 线段宽度\n */\n lineWidth?: number\n /**\n * @description 线段样式\n * @example `lineStyle: 'solid'`\n */\n lineStyle?: 'solid' | 'dashed' | 'dotted'\n}\n\nexport const zLineStyle = z.object({\n selector: z.union([zSelector, zSelectors]).nullish(),\n lineVisible: z.boolean().nullish(),\n lineSmooth: z.boolean().nullish(),\n lineColor: z.string().nullish(),\n lineColorOpacity: z.number().nullish(),\n lineWidth: z.number().nullish(),\n lineStyle: z.union([z.enum(['solid', 'dashed', 'dotted'])]).nullish(),\n})\n","import { z } from 'zod'\nimport { zSelector, zSelectors } from '../../dataSelector'\n\nexport const zAreaStyle = z.object({\n selector: z.union([zSelector, zSelectors]).nullish(),\n areaVisible: z.boolean().nullish(),\n areaColor: z.string().nullish(),\n areaColorOpacity: z.number().nullish(),\n})\n","import { z } from 'zod'\nimport { zBarStyle } from './barStyle'\nimport { zPointStyle } from './pointStyle'\nimport { zLineStyle } from './lineStyle'\nimport { zAreaStyle } from './zAreaStyle'\n\nexport const zMarkStyle = z.object({\n barStyle: zBarStyle.or(z.array(zBarStyle)).nullish(),\n pointStyle: zPointStyle.or(z.array(zPointStyle)).nullish(),\n lineStyle: zLineStyle.or(z.array(zLineStyle)).nullish(),\n areaStyle: zAreaStyle.or(z.array(zAreaStyle)).nullish(),\n})\n\nexport type MarkStyle = z.infer<typeof zMarkStyle>\n","import { zSelector, zSelectors } from '../../dataSelector'\nimport { z } from 'zod'\n\nexport const zAnnotationVerticalLine = z.object({\n selector: z.union([zSelector, zSelectors]).nullish(),\n xValue: z.union([z.number(), z.string(), z.array(z.union([z.number(), z.string()]))]).nullish(),\n text: z.string().or(z.array(z.string())).nullish(),\n textPosition: z\n .enum(['outsideStart', 'outsideEnd', 'outsideMiddle', 'insideStart', 'insideMiddle', 'insideEnd'])\n .default('insideEnd')\n .nullish(),\n textColor: z.string().default('#ffffff').nullish(),\n textFontSize: z.number().default(12).nullish(),\n textFontWeight: z.number().default(400).nullish(),\n textAlign: z.enum(['left', 'right', 'center']).default('right').nullish(),\n textBaseline: z.enum(['top', 'middle', 'bottom']).default('top').nullish(),\n\n textBackgroundVisible: z.boolean().default(true).nullish(),\n textBackgroundColor: z.string().default('#212121').nullish(),\n textBackgroundBorderColor: z.string().default('#212121').nullish(),\n textBackgroundBorderRadius: z.number().default(4).nullish(),\n textBackgroundBorderWidth: z.number().default(1).nullish(),\n textBackgroundPadding: z.number().default(2).nullish(),\n\n lineVisible: z.boolean().default(true).nullish(),\n lineColor: z.string().default('#212121').nullish(),\n lineWidth: z.number().default(1).nullish(),\n lineStyle: z\n .union([z.literal('solid'), z.literal('dashed'), z.literal('dotted')])\n .default('dashed')\n .nullish(),\n})\n","import { z } from 'zod'\nimport { zAnnotationPoint } from './zAnnotationPoint'\nimport { zAnnotationVerticalLine } from './zAnnotationVerticalLine'\nimport { zAnnotationHorizontalLine } from './zAnnotationHorizontalLine'\nimport { zAnnotationArea } from './zAnnotationArea'\n\nexport const zAnnotation = z.object({\n annotationPoint: zAnnotationPoint.or(z.array(zAnnotationPoint)).nullish(),\n annotationVerticalLine: zAnnotationVerticalLine.or(z.array(zAnnotationVerticalLine)).nullish(),\n annotationHorizontalLine: zAnnotationHorizontalLine.or(z.array(zAnnotationHorizontalLine)).nullish(),\n annotationArea: zAnnotationArea.or(z.array(zAnnotationArea)).nullish(),\n})\n\nexport type Annotation = z.infer<typeof zAnnotation>\n","import { z } from 'zod'\n\nexport const zSort = z.object({\n order: z.enum(['asc', 'desc']).default('asc'),\n orderBy: z.string().nullish(),\n customOrder: z.array(z.any()).nullish(),\n})\n\n/**\n * @description 类目轴排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @default {}\n * @example\n * - order:'asc'\n * - orderBy:'date'\n * 或\n * - customOrder:['2019', '2020', '2021']\n */\nexport type Sort = {\n /**\n * @description 排序顺序, 可选值为 'asc' 或 'desc'\n * @enum ['asc', 'desc']\n * @example order:'asc'\n */\n order?: 'asc' | 'desc'\n\n /**\n * @description 排序依赖的字段, 可以是维度id或指标id\n * @example\n * - orderBy:'date'\n * - orderBy:'profit'\n */\n orderBy?: string\n\n /**\n * @description 自定义排序顺序, 该顺序将直接应用至类目轴\n */\n customOrder?: string[]\n}\n","import { z } from 'zod'\n\nexport const zSortLegend = z.object({\n order: z.enum(['asc', 'desc']).default('asc'),\n orderBy: z.string().nullish(),\n customOrder: z.array(z.any()).nullish(),\n})\n\n/**\n * @description 图例排序配置, 支持根据维度或指标排序, 以及自定义排序顺序; 排序数组遵循从左到右或从上到下的顺序\n * @default {}\n * @example\n * - order:'asc'\n * - orderBy:'date'\n * 或\n * - customOrder:['2019', '2020', '2021']\n */\nexport type SortLegend = {\n /**\n * @description 排序顺序, 可选值为 'asc' 或 'desc'\n * @default 'asc'\n * @enum ['asc', 'desc']\n * @example order:'asc'\n */\n order?: 'asc' | 'desc'\n /**\n * @description 排序依赖的字段, 可以是维度id或指标id\n * @example\n * - orderBy:'date'\n * - orderBy:'profit'\n */\n orderBy?: string\n /**\n * @description 自定义排序顺序, 该顺序将直接应用至图例, 升序从左到右或从上到下, 降序从右到左或从下到上\n */\n customOrder?: string[]\n}\n","import { z } from 'zod'\n\nexport const zAnalysis = z.object({\n orderMapping: z.record(z.string(), z.array(z.string())).nullish(),\n})\n","import { z } from 'zod'\nimport { zSelector, zSelectors, type Selector, type Selectors } from '../../dataSelector'\n\nexport type BodyCellStyle = {\n /**\n * 数据选择器\n * @description\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n * @type {Selector | Selectors}\n * @example 数值选择器\n * selector = \"tool\"\n * selector = [\"tool\", \"book\"]\n * selector = 100\n * selector = [100, 200]\n * @example 局部数据选择器\n * selector = { profit: 100 }\n * selector = [{ profit: 100 }, { profit: 200 }]\n * @example 条件维度选择器\n * selector = {\n * field: 'category',\n * operator: 'in',\n * value: 'tool'\n * }\n * selector = {\n * field: 'category',\n * operator: 'not in',\n * value: 'book'\n * }\n * @example 条件指标选择器\n * selector = {\n * field: 'profit',\n * operator: '>=',\n * value: 100\n * }\n * selector = {\n * field: 'profit',\n * operator: 'between'\n * value: [100, 300]\n * }\n */\n selector?: Selector | Selectors\n /**\n * 单元格背景色\n */\n backgroundColor?: string\n /**\n * 单元格文字颜色\n */\n textColor?: string\n /**\n * 单元格文字大小\n */\n textFontSize?: number\n /**\n * 单元格边框颜色\n */\n borderColor?: string\n /**\n * 单元格边框线宽\n */\n borderLineWidth?: number\n}\n\nexport const zBodyCellStyle = z.object({\n selector: z.union([zSelector, zSelectors]).nullish(),\n backgroundColor: z.string().nullish(),\n textColor: z.string().nullish(),\n textFontSize: z.number().nullish(),\n borderColor: z.string().nullish(),\n borderLineWidth: z.number().nullish(),\n})\n","import { z } from 'zod'\n\nexport type Locale = 'zh-CN' | 'en-US'\n\nexport type TranslateRecordType = Record<string, { [local in Locale]: string }>\n\nexport const zLocale = z.enum(['zh-CN', 'en-US']).default('zh-CN')\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport { zBackgroundColor, zBodyCellStyle, zDataset, zDimensions, zMeasureTree, zTheme } from '../../properties'\n\nexport const zTable = z.object({\n chartType: z.literal('table'),\n dataset: zDataset.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n\n backgroundColor: zBackgroundColor.nullish(),\n borderColor: z.string().nullish(),\n bodyFontSize: z.number().nullish(),\n bodyFontColor: z.string().nullish(),\n bodyBackgroundColor: z.string().nullish(),\n hoverBodyBackgroundColor: z.string().nullish(),\n hoverBodyInlineBackgroundColor: z.string().nullish(),\n headerFontSize: z.number().nullish(),\n headerFontColor: z.string().nullish(),\n headerBackgroundColor: z.string().nullish(),\n hoverHeaderBackgroundColor: z.string().nullish(),\n hoverHeaderInlineBackgroundColor: z.string().nullish(),\n selectedBorderColor: z.string().nullish(),\n selectedBackgroundColor: z.string().nullish(),\n bodyCellStyle: zBodyCellStyle.nullish(),\n\n theme: zTheme.nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport { zBackgroundColor, zDataset, zDimensions, zTheme, zMeasures, zBodyCellStyle } from '../../properties'\n\nexport const zPivotTable = z.object({\n chartType: z.literal('pivotTable'),\n dataset: zDataset.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasures.nullish(),\n\n backgroundColor: zBackgroundColor.nullish(),\n borderColor: z.string().nullish(),\n bodyFontSize: z.number().nullish(),\n bodyFontColor: z.string().nullish(),\n bodyBackgroundColor: z.string().nullish(),\n hoverBodyBackgroundColor: z.string().nullish(),\n hoverBodyInlineBackgroundColor: z.string().nullish(),\n headerFontSize: z.number().nullish(),\n headerFontColor: z.string().nullish(),\n headerBackgroundColor: z.string().nullish(),\n hoverHeaderBackgroundColor: z.string().nullish(),\n hoverHeaderInlineBackgroundColor: z.string().nullish(),\n selectedBorderColor: z.string().nullish(),\n selectedBackgroundColor: z.string().nullish(),\n bodyCellStyle: zBodyCellStyle.nullish(),\n\n theme: zTheme.nullish(),\n locale: zLocale.nullish(),\n})\n","import { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zColor,\n zCrosshairLine,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zLegend,\n zLineStyle,\n zMeasureTree,\n zPointStyle,\n zSort,\n zSortLegend,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\n\nimport { z } from 'zod'\n\nexport const zLine = z.object({\n chartType: z.literal('line'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairLine: zCrosshairLine.nullish(),\n sort: zSort.nullish(),\n sortLegend: zSortLegend.nullish(),\n theme: zTheme.nullish(),\n pointStyle: z.array(zPointStyle).or(zPointStyle).nullish(),\n lineStyle: z.array(zLineStyle).or(zLineStyle).nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zBarMaxWidth,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zPolynomialRegressionLine,\n zSort,\n zSortLegend,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\n\nexport const zColumn = z.object({\n chartType: z.literal('column'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n sort: zSort.nullish(),\n sortLegent: zSortLegend.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n stackCornerRadius: zStackCornerRadius.nullish(),\n barMaxWidth: zBarMaxWidth.nullish(),\n theme: zTheme.nullish(),\n barStyle: z.array(zBarStyle).or(zBarStyle).nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n polynomialRegressionLine: z.array(zPolynomialRegressionLine).or(zPolynomialRegressionLine).or(z.boolean()).nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zBarGapInGroup,\n zBarMaxWidth,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\n\nexport const zColumnParallel = z.object({\n chartType: z.literal('columnParallel'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n stackCornerRadius: zStackCornerRadius.nullish(),\n barMaxWidth: zBarMaxWidth.nullish(),\n barGapInGroup: zBarGapInGroup.nullish(),\n theme: zTheme.nullish(),\n barStyle: z.array(zBarStyle).or(zBarStyle).nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n locale: zLocale.nullish(),\n})\n","import { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zBarMaxWidth,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\n\nimport { z } from 'zod'\n\nexport const zColumnPercent = z.object({\n chartType: z.literal('columnPercent'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n stackCornerRadius: zStackCornerRadius.nullish(),\n barMaxWidth: zBarMaxWidth.nullish(),\n theme: zTheme.nullish(),\n barStyle: z.array(zBarStyle).or(zBarStyle).nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n locale: zLocale.nullish(),\n})\n","import { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zBarMaxWidth,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXLinearAxis,\n zYBandAxis,\n} from '../../properties'\n\nimport { z } from 'zod'\n\nexport const zBar = z.object({\n chartType: z.literal('bar'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXLinearAxis.nullish(),\n yAxis: zYBandAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n stackCornerRadius: zStackCornerRadius.nullish(),\n barMaxWidth: zBarMaxWidth.nullish(),\n theme: zTheme.nullish(),\n barStyle: z.array(zBarStyle).or(zBarStyle).nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zBarGapInGroup,\n zBarMaxWidth,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXLinearAxis,\n zYBandAxis,\n} from '../../properties'\n\nexport const zBarParallel = z.object({\n chartType: z.literal('barParallel'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXLinearAxis.nullish(),\n yAxis: zYBandAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n stackCornerRadius: zStackCornerRadius.nullish(),\n barMaxWidth: zBarMaxWidth.nullish(),\n barGapInGroup: zBarGapInGroup.nullish(),\n theme: zTheme.nullish(),\n barStyle: z.array(zBarStyle).or(zBarStyle).nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zBarMaxWidth,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXLinearAxis,\n zYBandAxis,\n} from '../../properties'\n\nexport const zBarPercent = z.object({\n chartType: z.literal('barPercent'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXLinearAxis.nullish(),\n yAxis: zYBandAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n stackCornerRadius: zStackCornerRadius.nullish(),\n barMaxWidth: zBarMaxWidth.nullish(),\n theme: zTheme.nullish(),\n barStyle: z.array(zBarStyle).or(zBarStyle).nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zAreaStyle,\n zBackgroundColor,\n zColor,\n zCrosshairLine,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zLegend,\n zLineStyle,\n zMeasureTree,\n zPointStyle,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\n\nexport const zArea = z.object({\n chartType: z.literal('area'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairLine: zCrosshairLine.nullish(),\n theme: zTheme.nullish(),\n pointStyle: z.array(zPointStyle).or(zPointStyle).nullish(),\n lineStyle: z.array(zLineStyle).or(zLineStyle).nullish(),\n areaStyle: z.array(zAreaStyle).or(zAreaStyle).nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n locale: zLocale.nullish(),\n})\n","import { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zAreaStyle,\n zBackgroundColor,\n zColor,\n zCrosshairLine,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zLegend,\n zLineStyle,\n zMeasureTree,\n zPointStyle,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\n\nimport { z } from 'zod'\n\nexport const zAreaPercent = z.object({\n chartType: z.literal('areaPercent'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairLine: zCrosshairLine.nullish(),\n theme: zTheme.nullish(),\n pointStyle: z.array(zPointStyle).or(zPointStyle).nullish(),\n lineStyle: z.array(zLineStyle).or(zLineStyle).nullish(),\n areaStyle: z.array(zAreaStyle).or(zAreaStyle).nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zColor,\n zCrosshairLine,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zLegend,\n zLinearRegressionLine,\n zLogisticRegressionLine,\n zLowessRegressionLine,\n zMeasureTree,\n zPointStyle,\n zPolynomialRegressionLine,\n zScatterMeasures,\n zTheme,\n zTooltip,\n zXLinearAxis,\n zYLinearAxis,\n} from '../../properties'\n\nexport const zScatter = z.object({\n chartType: z.literal('scatter'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n scatterMeasures: zScatterMeasures.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n size: z.number().or(z.array(z.number())).nullish(),\n sizeRange: z.number().or(z.array(z.number())).nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXLinearAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairLine: zCrosshairLine.nullish(),\n theme: zTheme.nullish(),\n pointStyle: z.array(zPointStyle).or(zPointStyle).nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n linearRegressionLine: z.array(zLinearRegressionLine).or(zLinearRegressionLine).or(z.boolean()).nullish(),\n lowessRegressionLine: z.array(zLowessRegressionLine).or(zLowessRegressionLine).or(z.boolean()).nullish(),\n polynomialRegressionLine: z.array(zPolynomialRegressionLine).or(zPolynomialRegressionLine).or(z.boolean()).nullish(),\n logisticRegressionLine: z.array(zLogisticRegressionLine).or(zLogisticRegressionLine).or(z.boolean()).nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from 'src/types/i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zAreaStyle,\n zBackgroundColor,\n zBarGapInGroup,\n zBarMaxWidth,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zDualChartType,\n zDualMeasures,\n zLabel,\n zLegend,\n zLineStyle,\n zMeasureTree,\n zPointStyle,\n zSort,\n zSortLegend,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from 'src/types/properties'\n\nexport const zDualAxis = z.object({\n chartType: z.literal('dualAxis'),\n\n dataset: zDataset.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n dualMeasures: zDualMeasures.nullish(),\n\n dualChartType: z.array(zDualChartType).or(zDualChartType).nullish(),\n alignTicks: z.array(z.boolean()).or(z.boolean()).nullish(),\n\n primaryYAxis: z.array(zYLinearAxis).or(zYLinearAxis).nullish(),\n secondaryYAxis: z.array(zYLinearAxis).or(zYLinearAxis).nullish(),\n xAxis: zXBandAxis.nullish(),\n\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n\n crosshairRect: zCrosshairRect.nullish(),\n sort: zSort.nullish(),\n sortLegend: zSortLegend.nullish(),\n theme: zTheme.nullish(),\n barMaxWidth: zBarMaxWidth.nullish(),\n barGapInGroup: zBarGapInGroup.nullish(),\n\n barStyle: z.array(zBarStyle).or(zBarStyle).nullish(),\n pointStyle: z.array(zPointStyle).or(zPointStyle).nullish(),\n lineStyle: z.array(zLineStyle).or(zLineStyle).nullish(),\n areaStyle: z.array(zAreaStyle).or(zAreaStyle).nullish(),\n\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zEcdfRegressionLine,\n zEncoding,\n zKdeRegressionLine,\n zLabel,\n zLegend,\n zMeasureTree,\n zTheme,\n zTooltip,\n zXLinearAxis,\n zYLinearAxis,\n} from '../../properties'\n\nexport const zHistogram = z.object({\n chartType: z.literal('histogram'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXLinearAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n binCount: z.number().positive().nullish(),\n binStep: z.number().positive().nullish(),\n binValueType: z.literal('count').or(z.literal('percentage')).nullish(),\n theme: zTheme.nullish(),\n barStyle: z.array(zBarStyle).or(zBarStyle).nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n ecdfRegressionLine: z.array(zEcdfRegressionLine).or(zEcdfRegressionLine).nullish(),\n kdeRegressionLine: z.array(zKdeRegressionLine).or(zKdeRegressionLine).nullish(),\n locale: zLocale.nullish(),\n})\n\nexport type Histogram = z.infer<typeof zHistogram>\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\n\nimport {\n zBackgroundColor,\n zColor,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zTheme,\n zTooltip,\n} from '../../properties'\n\nexport const zRose = z.object({\n chartType: z.literal('rose'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n theme: zTheme.nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zBackgroundColor,\n zColor,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zTheme,\n zTooltip,\n} from '../../properties'\n\nexport const zRoseParallel = z.object({\n chartType: z.literal('roseParallel'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n theme: zTheme.nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zBackgroundColor,\n zColor,\n zDataset,\n zDimensions,\n zEncoding,\n zLegend,\n zMeasureTree,\n zPieLabel,\n zTheme,\n zTooltip,\n} from '../../properties'\n\nexport const zPie = z.object({\n chartType: z.literal('pie'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zPieLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n theme: zTheme.nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\n\nimport {\n zBackgroundColor,\n zColor,\n zDataset,\n zDimensions,\n zEncoding,\n zLegend,\n zMeasureTree,\n zPieLabel,\n zTheme,\n zTooltip,\n} from '../../properties'\n\nexport const zDonut = z.object({\n chartType: z.literal('donut'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zPieLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n theme: zTheme.nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\n\nimport {\n zBackgroundColor,\n zColor,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zTheme,\n zTooltip,\n} from '../../properties'\n\nexport const zRadar = z.object({\n chartType: z.literal('radar'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n theme: zTheme.nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zBackgroundColor,\n zColor,\n zColorLegend,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zMeasureTree,\n zTheme,\n zTooltip,\n} from '../../properties'\n\nexport const zFunnel = z.object({\n chartType: z.literal('funnel'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zColorLegend.nullish(),\n tooltip: zTooltip.nullish(),\n theme: zTheme.nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\n\nimport {\n zBackgroundColor,\n zColor,\n zColorLegend,\n zDataset,\n zDimensions,\n zLabel,\n zMeasureTree,\n zTheme,\n zTooltip,\n} from '../../properties'\n\nexport const zHeatmap = z.object({\n chartType: z.literal('heatmap'),\n dataset: zDataset.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zColorLegend.nullish(),\n tooltip: zTooltip.nullish(),\n theme: zTheme.nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zSort,\n zSortLegend,\n zTheme,\n zTooltip,\n zWhiskersConfig,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\n\nexport const zBoxplot = z.object({\n chartType: z.literal('boxPlot'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n sort: zSort.nullish(),\n sortLegent: zSortLegend.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n theme: zTheme.nullish(),\n whiskers: zWhiskersConfig.nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\n\nimport { zBar } from './chartType/bar'\nimport { zBarParallel } from './chartType/barParallel'\nimport { zColumn } from './chartType/column'\nimport { zColumnParallel } from './chartType/columnParallel'\nimport { zColumnPercent } from './chartType/columnPercent'\nimport { zLine } from './chartType/line'\nimport { zRose } from './chartType/rose'\nimport { zBarPercent } from './chartType/barPercent'\nimport { zPie } from './chartType/pie'\nimport { zDonut } from './chartType/donut'\nimport { zArea } from './chartType/area'\nimport { zAreaPercent } from './chartType/areaPercent'\nimport {\n zBoxplot,\n zDualAxis,\n zFunnel,\n zHeatmap,\n zHistogram,\n zPivotTable,\n zRadar,\n zRoseParallel,\n zScatter,\n zTable,\n} from './chartType'\n\nexport const zVSeed = z.discriminatedUnion('chartType', [\n zTable,\n zPivotTable,\n // cartesian\n zLine,\n zColumn,\n zColumnParallel,\n zColumnPercent,\n zBar,\n zBarParallel,\n zBarPercent,\n zArea,\n zAreaPercent,\n zScatter,\n zDualAxis,\n // polar\n zPie,\n zDonut,\n zRose,\n zRoseParallel,\n zRadar,\n // other\n zFunnel,\n zHeatmap,\n zBoxplot,\n zHistogram,\n])\n","import { z } from 'zod'\nimport { zBodyCellStyle } from './bodyCellStyle'\n\nexport const zCellStyle = z.object({\n bodyCellStyle: zBodyCellStyle.nullish(),\n})\n\nexport type CellStyle = z.infer<typeof zCellStyle>\n","import { z } from 'zod'\nimport { zChartType } from './properties/chartType'\nimport { zDataset } from './properties/dataset'\nimport { zDimensionTree } from './properties/dimensions'\nimport { zMeasureTree } from './properties/measures'\nimport { zEncoding } from './properties/encoding'\nimport { zDatasetReshapeInfo } from './properties/datasetReshapeInfo'\nimport { zTheme, zCustomThemeConfig } from './properties/theme'\nimport { zConfig } from './properties/config'\nimport { zAnalysis, zAnnotation, zRegressionLine, zMarkStyle } from './properties'\nimport { zLocale } from './i18n'\nimport { zCellStyle } from './properties/cellStyle/cellStyle'\n\nexport const zAdvancedVSeed = z.object({\n chartType: zChartType,\n dataset: zDataset,\n datasetReshapeInfo: zDatasetReshapeInfo,\n dimensions: zDimensionTree,\n measures: zMeasureTree,\n encoding: zEncoding,\n config: zConfig,\n analysis: zAnalysis,\n theme: zTheme,\n markStyle: zMarkStyle,\n cellStyle: zCellStyle,\n customTheme: zCustomThemeConfig,\n annotation: zAnnotation,\n locale: zLocale,\n regressionLine: zRegressionLine,\n})\n\nexport type AdvancedVSeed = z.infer<typeof zAdvancedVSeed>\n"],"names":["Object","__webpack_require__","e","Symbol","execPipeline","pipeline","context","initialValue","prev","cur","Intl","translateMap","value","segments","values","text","segment","index","translatedText","isNullish","console","locale","intl","buildAdvanced","builder","start","performance","Date","chartType","Error","Builder","advancedVSeed","end","buildSpec","spec","build","preorderTraverse","tree","callback","childrenKey","stack","node","stop","children","Array","i","child","measureDepth","measures","depth","Math","isMeasureTreeWithChildren","measure","isMeasureTreeWithParentId","normalizeMeasureTree","createEmptyMeasureGroup","currentGroup","measureGroups","item","ANNOTATION_Z_INDEX","LINEAR_AXIS_INNER_OFFSET_TOP","DUAL_AXIS_CHART_COLUMN_Z_INDEX","DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX","DUAL_AXIS_LABEL_Z_INDEX","DEFAULT_PARENT_ID","AXIS_LABEL_SPACE","BAND_AXIS_INNER_OFFSET_IN_PIVOT","ChartTypeEnum","DATUM_HIDE_KEY","isTable","vseed","isPivotTable","isRadar","isAreaPercent","isColumnPercent","isBarPercent","isBarLikeChart","isVTable","isVChart","isPivotChart","isPivot","isCombination","dimensions","dimension","parentIds","unique","getColorItems","datasetReshapeInfo","colorItems","d","colorIdMap","getColorIdMap","advanced","customPipe","themeKey","checkVSeed","dataset","isEmpty","initAdvancedVSeed","isMeasure","isMeasureGroup","isMeasures","defaultMeasures","clonedMeasures","clone","top100dataset","key","undefined","isDimension","isDimensionGroup","findMeasureById","id","result","findFirstMeasure","findAllMeasures","defaultDimensions","clonedDimensions","newDimensions","dim","replaceNullToUndefined","obj","isPlainObject","pipe","mapValues","cellStyle","style","pick","records","tableConfig","config","theme","customTheme","chartConfigTheme","chartConfig","mergedConfig","mergeDeep","_k","mergeArray","chartCustomTheme","arr","themeItem","isString","isNumber","isObjectType","merge","tableAdvancedPipeline","initTable","backgroundColor","dimensionTreeToColumns","columns","treeTreeToColumns","field","groupNode","title","props","createNumFormatter","format","type","ratio","thousandSeparator","prefix","suffix","symbol","fractionDigits","significantDigits","roundingMode","roundingPriority","numFormatterOptions","numFormatter","num","Number","typeSymbol","String","numStr","parts","autoNumFormatter","createFormatter","autoFormatter","createFormatterByMeasure","v","numFormat","autoFormat","formatterFormat","measureTreeToColumns","fieldFormat","formatter","datum","bodyStyle","themeConfig","borderColor","fontColor","fontSize","hoverCellBgColor","hoverInlineColor","headerStyle","themConfig","frameStyle","selectionStyle","selector","vchartDatum","selectorMode","vchartKeys","k","omit","selectors","isValueSelector","isMeasureSelector","op","selectorValueArr","isDimensionSelector","isPartialDatumSelector","tableStyleMap","pickBodyCellStyle","bodyCellStyle","acc","tableBodyCell","bodyCellStyleList","array","col","matchedStyles","originalDatum","tableSpecPipeline","registerTable","ORIGINAL_DATA","Separator","FoldMeasureName","FoldMeasureId","FoldMeasureValue","MeasureId","MeasureName","FoldPrimaryMeasureValue","FoldSecondaryMeasureValue","FoldXMeasureValue","FoldYMeasureValue","FoldXMeasureId","FoldYMeasureId","XEncoding","YEncoding","AngleEncoding","DetailEncoding","ColorEncoding","ColorIdEncoding","Q1MeasureValue","Q3MeasureValue","MinMeasureId","MaxMeasureId","OutliersMeasureId","MedianMeasureId","BinStartMeasureId","BinEndMeasureId","BinCountMeasureId","BinPercentageMeasureId","defaultMeasureId","encodingForPivotTable","vseedMeasures","hasDimensionEncoding","hasMeasureEncoding","encoding","generateDimensionEncoding","generateDefaultDimensionEncoding","generateMeasureEncoding","generateDefaultMeasureEncoding","uniqueDimIds","foldMeasures","options","measureId","measureName","measureValue","colorMeasureId","allowEmptyFold","omitIds","foldInfo","Infinity","ids","j","alias","valueNumber","reshapePivotTable","newDatasets","pivotTableConfig","pivotTableAdvancedPipeline","initPivotTable","pivotColumns","pivotRows","rows","allMeasures","res","m","titleOnDimension","pivotIndicators","hasRow","foldMapValues","row","table","foldMeasureId","rowHeaderStyle","cornerHeaderStyle","hoverCellColor","pivotTableBodyCell","newIndicators","indicators","ind","newInd","indicatorKey","dataValue","cellHeaderPaths","headerPaths","path","dataConfig","aggregationRules","pivotTableSpecPipeline","registerPivotTable","MeaIdDim","encodingAdapter","noEncodingPipeline","hasEncodingPipeline","addColorToEncoding","isMultiMeasure","defaultEncodingForLine","encodingForLine","color","label","tooltip","buildMeasures","generateMeasuresByParentId","basicMeasuresToMeasureTree","measureTree","parent","deleteMeasureTreeByCallback","parents","Map","nodesToProcess","visited","Set","parentList","deleteEncodingForMeasure","encodingKeys","deleteDimensionTreeByCallback","dimensionTree","deleteTooltipAndLabelDimension","pivotAdapter","pivotPipeline","unfoldDimensions","separator","unfoldInfo","x","y","detail","angle","angleDimensions","xDimensions","yDimensions","colorDimensions","detailDimensions","applyEncoding","colorId","getColorAliasItem","dataReshapeByEncoding","foldMeasureName","foldMeasureValue","colorItemAsId","foldedDataset","finalDataset","colorAdapter","ordinalPipe","linearPipe","isLinearColor","measureIdList","getColorMeasureId","reshapeWithEncoding","uniqueBy","pivotReshapeWithEncoding","datasets","measureGroup","groupId","newSubDataset","calcOrder","sortConfig","order","orderBy","sort","a","b","aValue","bValue","sortXBandAxis","sortAxis","xField","axisOrderResult","sortLegend","colorIds","orderRes","itemNameOrId","lineConfig","markStyle","annotation","lineAdvancedPipeline","initLine","baseConfig","colorScheme","colorMapping","createSpecifiedForColorMapping","matchedList","colors","accurateMap","name","colorValue","accurateMatchedList","colorKey","colorObj","fuzzyMatchedList","linearColor","linearColorScheme","datasetXY","analysis","orderMapping","fields","progressive","defaultTitleText","idList","f","xBand","visible","tick","grid","line","labelAutoHide","labelAutoHideGap","labelAutoLimit","labelAutoLimitLength","labelAutoRotate","labelAutoRotateAngleRange","bandAxis","sampling","createLinearFormat","createLinearPercentFormat","percentFormatter","yLinear","zero","nice","inverse","max","min","log","logBase","linearAxis","verticalCrosshairLine","lineColor","labelColor","labelVisible","labelBackgroundColor","crosshair","discreteLegend","legend","enable","position","labelFontColor","labelFontSize","labelFontWeight","maxSize","border","shapeType","orient","colorLegend","colorPointStyleFill","stylePipe","pointStyle","customMap","pointStyles","pointBorderColor","pointBorderStyle","pointBorderWidth","pointColor","pointColorOpacity","pointSize","pointVisible","pointStateDimensionHover","point","pointStateHover","colorLineStyleFill","getCurveType","lineSmooth","getCurveTension","lineStyle","lineStyles","lineColorOpacity","lineWidth","lineVisible","dashSegment","curveType","curveTension","_","dashGap","buildLabel","generateMeasureValue","labelAutoFormat","generateMeasurePercent","sum","vseedDimensions","advancedVSeedDimensions","advancedVSeedMeasures","foldInfoList","wrap","showValue","showValuePercent","showDimension","labelOverlap","labelColorSmartInvert","labelStroke","labelPosition","hasDimLabelEncoding","labelDims","labelMeas","data","entry","dimLabels","meaLabels","statistics","measureValueLabel","measurePercentLabel","getTooltipStyle","tooltipConfig","createMarkContent","createDimensionContent","foldMap","encodingColor","dims","meas","dimContent","colorName","originalData","isSubset","sub","annotationPoint","annotationPointList","isHorizontalBar","defaultStyle","markPoint","selectorPoint","textColor","textFontSize","textFontWeight","textAlign","textBaseline","textBackgroundBorderColor","textBackgroundBorderRadius","textBackgroundBorderWidth","textBackgroundColor","textBackgroundPadding","textBackgroundVisible","offsetX","offsetY","selectedData","dx","dy","annotationVerticalLine","annotationVerticalLineList","positionMap","markLine","xValue","textPosition","generateOneMarkLine","series","regionStart","xAxisHelper","yAxisHelper","xPos","yRange","isArray","xValueArr","newMarkLine","annotationHorizontalLine","annotationHorizontalLineList","yValue","yPos","xRange","yValueArr","annotationArea","annotationAreaList","markArea","areaColor","areaColorOpacity","areaBorderColor","areaBorderRadius","areaBorderWidth","areaLineDash","outerPadding","isBottom","xyList","positionData","yScale","minX","maxX","minY","maxY","xScale","formatGradientStops","stops","firstInvalidateIndex","newStops","splitLine","splitLineConfig","splitValue","colorTheme","colorConfig","ctx","lineSeries","chart","vchart","s","lineMark","lineGraphics","points","seg","pt","scale","splitCoordinate","p","lineStroke","areaFill","VUtilColor","attrs","range","clamper","opt","parentNode","seriesSpec","measureValueKey","initPivot","pivotGridStyle","onlyCombination","transparent","bodyFontColor","headerFontColor","headerBackgroundColor","hoverHeaderBackgroundColor","hoverHeaderInlineBackgroundColor","outlineBorderLineWidth","frameCornerRadius","arg","noYAxis","chartPipeline","allMeasureIds","reshapeInfo","subMeasuresId","invalideMeasuresIds","newDataset","newDatasetReshapeInfo","chartSpec","pivotIndicatorsAsRow","pivotIndicatorsAsCol","datasetPivot","pre","pivotAxisStyle","axisStyle","axis","pivotRowDimensions","rowDimensions","pivotColumnDimensions","columnDimensions","pivotTitle","pivotDiscreteLegend","colorSpecified","legends","pivotColorLegend","legendPosition","pivotLine","lineSpecPipeline","registerLine","defaultEncodingForColumn","encodingForColumn","onlyMeasureId","columnConfig","regressionLine","keys","regressionLineConfig","hasLine","columnAdvancedPipeline","initColumn","stackCornerRadius","barMaxWidth","stackInverse","verticalCrosshairRect","rectColor","colorBarStyleFill","barStyle","showStroke","barStyles","barBorderColor","barBorderStyle","barBorderWidth","barColor","barColorOpacity","barBorderOpacity","barRadius","barVisible","annotationAreaBand","defaultOptions","bandPosition","xBandWidth","startX","endX","width","middleX","yBandWidth","startY","endY","middleY","defaultRegressionLineColor","defaultRegressionLineLabelX","defaultRegressionLineLabelY","columnPolynomialRegressionLine","lineTheme","lineList","lineIndex","lineDash","confidenceIntervalOpacity","confidenceIntervalVisible","childrenMarks","rect","yClamper","fieldX","fieldY","xValues","confidenceInterval","evaluateGrid","regressionPolynomial","xVal","filteredData","N","halfBandWidth","linePoints","lineData","intervalData","column","pivotColumn","columnSpecPipeline","registerColumn","pieConfig","areaConfig","areaPercentConfig","barConfig","barParallelConfig","barPercentConfig","columnParallelConfig","columnPercentConfig","donutConfig","roseConfig","roseParallelConfig","radarConfig","funnelConfig","heatmapConfig","columnParallelAdvancedPipeline","initColumnParallel","sameDimensionsMode","isDeepEqual","barGapInGroup","columnParallel","pivotColumnParallel","columnParallelSpecPipeline","registerColumnParallel","columnPercentAdvancedPipeline","percent","columnPercent","pivotColumnPercent","columnPercentSpecPipeline","registerColumnPercent","defaultEncodingForBar","encodingForBar","sortYBandAxis","yField","barAdvancedPipeline","initBar","datasetYX","xLinear","yBand","horizontalCrosshairRect","bar","pivotBar","barSpecPipeline","registerBar","barParallelAdvancedPipeline","initBarParallel","barParallel","pivotBarParallel","barParallelSpecPipeline","registerBarParallel","barPercentAdvancedPipeline","barPercent","pivotBarPercent","barPercentSpecPipeline","registerBarPercent","areaAdvancedPipeline","initArea","colorAreaStyleFill","areaStyle","areaStyles","group","areaGroups","groupBy","areaVisible","area","pivotArea","areaSpecPipeline","registerArea","areaPercentAdvancedPipeline","areaPercent","pivotAreaPercent","areaPercentSpecPipeline","registerAreaPercent","defaultEncodingForScatter","encodingForScatter","dimensionsWithoutMeasureId","buildMeasuresForScatter","scatterMeasures","basicMeasuresToScatterMeasures","scatterMeasuresToMeasureTree","basicMeasures","yMeasures","xMeasures","isYAxis","isXAxis","groupChildren","arrPrimaryMeasures","arrSecondaryMeasures","scatterChart","Boolean","isX","isY","scatterConfig","reshapeWithScatterEncoding","unfoldInfoList","pivotReshapeWithScatterEncoding","datasetList","scatterAdvancedPipeline","initScatter","datasetScatter","scatterSize","size","labelScatter","tooltipScatter","meaContent","horizontalCrosshairLine","generateRegressionLinePipe","regressionFunction","getOptions","colorAttrOptions","groups","groupData","mainColor","ld","areaPoints","linearRegressionLine","regressionLinear","lowessRegressionLine","regressionLowess","polynomialRegressionLine","logisticRegressionLine","regressionLogistic","scatter","pivotScatter","scatterSpecPipeline","registerScatter","defaultEncodingForDualAxis","encodingForDualAxis","buildMeasuresForDualAxis","dualMeasures","basicMeasuresToDualMeasures","dualMeasuresToMeasureTree","primaryMeasures","secondaryMeasures","isPrimaryYAxis","isSecondaryYAxis","dualChart","isPrimary","isSecondary","reshapeWithDualEncoding","pivotReshapeWithDualEncoding","dualAxisConfig","dualAxisAdvancedPipeline","args","seriesDualAxis","createDualContext","initDualAxisPrimary","initDualAxisSecondary","dualChartTypePrimary","primary","secondary","bothColumn","columnSpec","dualChartTypeSecondary","datasetPrimary","datasetSecondary","labelPrimary","labelSecondary","tooltipPrimary","tooltipSecondary","yLinearPrimary","reshapeInfoId","primaryYAxis","yAxisConfig","alignTicks","alignTicksConfig","isEmptySecondary","seriesIds","seriesId","yLinearSecondary","secondaryYAxis","onlySecondary","sync","linearColorForDualAxis","dualAxis","pivotDualAxis","dualAxisSpecPipeline","registerDualAxis","defaultEncodingForPie","encodingForPie","pieAdvancedPipeline","initPie","colorPieStyleFill","pieStyle","labelPie","pivotHideIndicatorName","addRegionPadding","pie","pivotPie","pieSpecPipeline","registerPie","donutAdvancedPipeline","initDonut","donut","pivotDonut","donutSpecPipeline","registerDonut","defaultEncodingForRose","encodingForRose","roseAdvancedPipeline","initRose","hasNegativeValue","radiusAxis","colorRoseStyleFill","roseStyle","rose","pivotRose","roseSpecPipeline","registerRose","roseParallelAdvancedPipeline","initRoseParallel","roseParallel","pivotRoseParallel","roseParallelSpecPipeline","registerRoseParallel","defaultEncodingForRadar","encodingForRadar","radarAdvancedPipeline","initRadar","radarAngleAxis","radarRadiusAxis","radar","pivotRadar","radarSpecPipeline","registerRadar","defaultEncodingForFunnel","encodingForFunnel","funnelAdvancedPipeline","initFunnel","colorFunnelStyleFill","funnelStyle","funnelTransformStyle","funnel","pivotFunnel","funnelSpecPipeline","registerFunnel","defaultEncodingForHeatmap","encodingForHeatmap","colorDims","heatmapAdvancedPipeline","heatmapColorLegend","val","colorCellStyleFill","cell","tooltipHeatmap","initHeatmap","heatmap","pivotHeatmap","heatmapSpecPipeline","registerHeatmap","boxplotConfig","defaultEncodingForBoxplot","encodingForBoxplot","c","reshapeWithBoxplotEncoding","uniqDims","whiskers","boxPlotData","boxplot","pivotReshapeWithBoxplotEncoding","rowColumnFields","subMeasures","boxplotAdvancedPipeline","initBoxplot","datasetBoxplot","boxPlotMeasureKeys","VCHART_OUTLIER_KEY","tooltipBoxplot","valueMeasure","defaultFormatter","tooltipItems","outerlierMeasure","mea","pivotBoxplot","boxplotSpecPipeline","registerBoxplot","histogramConfig","hasColorEncoding","histogramXAxisConfig","flattenDatasert","minValue","maxValue","defaultEncodingForHistogram","encodingForHistogram","reshapeWithHistogramEncoding","binCount","binStep","binValueType","valueField","binData","bin","pivotReshapeWithHistogramEncoding","histogramAdvancedPipeline","initHistogram","datasetHistogram","tooltipHistogram","kdeRegressionLine","kdeLine","region","scaleY","viewData","simpleData","kde","scaleR","ecdfRegressionLine","ecdfLine","ecdf","y0","y1","histogram","pivotHistogram","histogramSpecPipeline","registerHistogram","getDarkCrosshairLine","getDarkCrosshairRect","getLightCrosshairLine","getLightCrosshairRect","getLightColorScheme","getDarkColorScheme","getLightLinearColorScheme","getDarkLinearColorScheme","getLightColor","getDarkColor","getDefaultLabel","getDarkLabel","getLightLabel","getDefaultLegend","getDefaultTableConfig","getLightTableConfig","getDarkTableConfig","pickPivotChartGridConfig","getLightPivotChartGridConfig","getDarkPivotChartGridConfig","getDefaultTooltip","getLightTooltip","getDarkTooltip","getLightLinearAxis","getLightBandAxis","getDarkLinearAxis","getDarkBandAxis","getDefaultAnnotationPoint","getLightAnnotationPoint","getDefaultAnnotationLine","getLightAnnotationHorizontalLine","getLightAnnotationVerticalLine","getDefaultAnnotationArea","getLightAnnotationArea","getLightAnnotation","getDarkAnnotationPoint","getDarkAnnotationHorizontalLine","getDarkAnnotationVerticalLine","getDarkAnnotationArea","getDarkAnnotation","getLightFunnelTransformTheme","getDarkFunnelTransformTheme","getLightHeatmapCellTheme","getDarkHeatmapCellTheme","getDefaultRegressionLine","getLightRegressionLine","getDarkRegressionLine","lightTheme","barBandAxis","crosshairLine","crosshairRect","darkTheme","registerCustomTheme","registerLightTheme","registerDarkTheme","registerAll","updateAdvanced","advancedPipe","updateSpec","specPipe","zChartType","z","zDualChartType","zDatum","zDataset","zDimension","zDimensionGroup","zDimensions","zDimensionTree","zNumFormat","zMeasure","zMeasureGroup","zMeasures","zMeasureTree","zDualMeasure","zDualMeasures","zScatterMeasure","zScatterMeasures","zFoldInfo","zUnfoldInfo","zDatasetReshapeInfo","zEncoding","EncodingEnum","zDimensionEncoding","DimensionEncodingEnum","zMeasureEncoding","MeasureEncodingEnum","zBackgroundColor","zTableConfig","zXBandAxis","zYBandAxis","zXLinearAxis","zYLinearAxis","zCrosshairLine","zCrosshairRect","zColor","zLinearColor","zSelector","zSelectors","zLabel","zLegend","zColorLegend","zTooltip","zAnnotationPoint","zAnnotationHorizontalLine","zAnnotationArea","zAnnotationPointConfig","zAnnotationHorizontalLineConfig","zAnnotationVerticalLineConfig","zAnnotationAreaConfig","zAnnotationConfig","zPivotChartGridConfig","zLineConfig","zStackCornerRadius","zBarMaxWidth","zBarGapInGroup","zEcdfRegressionLine","zKdeRegressionLine","zLinearRegressionLine","zLogisticRegressionLine","zLowessRegressionLine","zPolynomialRegressionLine","zRegressionLine","zColumnParallelConfig","zColumnConfig","zColumnPercentConfig","zBarConfig","zBarParallelConfig","zBarPercentConfig","zAreaConfig","zAreaPercentConfig","zScatterConfig","zDualAxisConfig","zPieLabel","zPieConfig","zDonutConfig","zRadarConfig","zRoseConfig","zRoseParallelConfig","zFunnelTransform","zFunnelConfig","zHeatmapCell","zHeatmapConfig","zPivotTableConfig","zWhiskersConfig","zBoxplotConfig","zHistogramConfig","zConfig","zCustomThemeConfig","zCustomTheme","zTheme","zBarStyle","zPointStyle","zLineStyle","zAreaStyle","zMarkStyle","zAnnotationVerticalLine","zAnnotation","zSort","zSortLegend","zAnalysis","zBodyCellStyle","zLocale","zTable","zPivotTable","zLine","zColumn","zColumnParallel","zColumnPercent","zBar","zBarParallel","zBarPercent","zArea","zAreaPercent","zScatter","zDualAxis","zHistogram","zRose","zRoseParallel","zPie","zDonut","zRadar","zFunnel","zHeatmap","zBoxplot","zVSeed","zCellStyle","zAdvancedVSeed"],"mappings":"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"}