@visactor/vseed 0.4.22 → 0.4.24

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 (623) hide show
  1. package/dist/cjs/index.cjs +2 -2
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/esm/builder/builder/advanced/colorItems.js.map +1 -1
  4. package/dist/esm/builder/builder/build.js.map +1 -1
  5. package/dist/esm/builder/builder/buildAdvanced.js +2 -2
  6. package/dist/esm/builder/builder/buildAdvanced.js.map +1 -1
  7. package/dist/esm/builder/builder/buildSpec.js +2 -2
  8. package/dist/esm/builder/builder/buildSpec.js.map +1 -1
  9. package/dist/esm/builder/builder/builder.js.map +1 -1
  10. package/dist/esm/builder/builder/index.js +1 -2
  11. package/dist/esm/builder/builder/prepare.js.map +1 -1
  12. package/dist/esm/builder/register/all.js.map +1 -1
  13. package/dist/esm/builder/register/chartType/area.js.map +1 -1
  14. package/dist/esm/builder/register/chartType/areaPercent.js.map +1 -1
  15. package/dist/esm/builder/register/chartType/bar.js.map +1 -1
  16. package/dist/esm/builder/register/chartType/barParallel.js.map +1 -1
  17. package/dist/esm/builder/register/chartType/barPercent.js.map +1 -1
  18. package/dist/esm/builder/register/chartType/boxplot.js.map +1 -1
  19. package/dist/esm/builder/register/chartType/circlePacking.js.map +1 -1
  20. package/dist/esm/builder/register/chartType/column.js.map +1 -1
  21. package/dist/esm/builder/register/chartType/columnParallel.js.map +1 -1
  22. package/dist/esm/builder/register/chartType/columnPercent.js.map +1 -1
  23. package/dist/esm/builder/register/chartType/donut.js.map +1 -1
  24. package/dist/esm/builder/register/chartType/dualAxis.js.map +1 -1
  25. package/dist/esm/builder/register/chartType/funnel.js.map +1 -1
  26. package/dist/esm/builder/register/chartType/heatmap.js.map +1 -1
  27. package/dist/esm/builder/register/chartType/histogram.js.map +1 -1
  28. package/dist/esm/builder/register/chartType/index.js +31 -32
  29. package/dist/esm/builder/register/chartType/line.js.map +1 -1
  30. package/dist/esm/builder/register/chartType/pie.js.map +1 -1
  31. package/dist/esm/builder/register/chartType/pivotTable.js.map +1 -1
  32. package/dist/esm/builder/register/chartType/raceBar.js.map +1 -1
  33. package/dist/esm/builder/register/chartType/raceColumn.js.map +1 -1
  34. package/dist/esm/builder/register/chartType/raceDonut.js.map +1 -1
  35. package/dist/esm/builder/register/chartType/raceLine.js.map +1 -1
  36. package/dist/esm/builder/register/chartType/racePie.js.map +1 -1
  37. package/dist/esm/builder/register/chartType/raceScatter.js.map +1 -1
  38. package/dist/esm/builder/register/chartType/radar.js.map +1 -1
  39. package/dist/esm/builder/register/chartType/rose.js.map +1 -1
  40. package/dist/esm/builder/register/chartType/roseParallel.js.map +1 -1
  41. package/dist/esm/builder/register/chartType/scatter.js.map +1 -1
  42. package/dist/esm/builder/register/chartType/sunburst.js.map +1 -1
  43. package/dist/esm/builder/register/chartType/table.js.map +1 -1
  44. package/dist/esm/builder/register/chartType/treeMap.js.map +1 -1
  45. package/dist/esm/builder/register/custom.js.map +1 -1
  46. package/dist/esm/builder/register/index.js +3 -4
  47. package/dist/esm/builder/register/theme/custom.js.map +1 -1
  48. package/dist/esm/builder/register/theme/dark.js.map +1 -1
  49. package/dist/esm/builder/register/theme/index.js +3 -4
  50. package/dist/esm/builder/register/theme/light.js.map +1 -1
  51. package/dist/esm/dataReshape/constant.js.map +1 -1
  52. package/dist/esm/dataReshape/dataReshapeByEncoding.js.map +1 -1
  53. package/dist/esm/dataReshape/foldMeasures.js.map +1 -1
  54. package/dist/esm/dataReshape/index.js +3 -4
  55. package/dist/esm/dataReshape/unfoldDimensions.js.map +1 -1
  56. package/dist/esm/dataSelector/selector.js +1 -1
  57. package/dist/esm/dataSelector/selector.js.map +1 -1
  58. package/dist/esm/i18n/i18n.js.map +1 -1
  59. package/dist/esm/i18n/i18nData.js.map +1 -1
  60. package/dist/esm/i18n/index.js.map +1 -1
  61. package/dist/esm/index.js +5 -6
  62. package/dist/esm/pipeline/advanced/chart/pipeline/area.js.map +1 -1
  63. package/dist/esm/pipeline/advanced/chart/pipeline/areaPercent.js.map +1 -1
  64. package/dist/esm/pipeline/advanced/chart/pipeline/bar.js.map +1 -1
  65. package/dist/esm/pipeline/advanced/chart/pipeline/barParallel.js.map +1 -1
  66. package/dist/esm/pipeline/advanced/chart/pipeline/barPercent.js.map +1 -1
  67. package/dist/esm/pipeline/advanced/chart/pipeline/boxplot.js.map +1 -1
  68. package/dist/esm/pipeline/advanced/chart/pipeline/circlePacking.js.map +1 -1
  69. package/dist/esm/pipeline/advanced/chart/pipeline/column.js.map +1 -1
  70. package/dist/esm/pipeline/advanced/chart/pipeline/columnParallel.js.map +1 -1
  71. package/dist/esm/pipeline/advanced/chart/pipeline/columnPercent.js.map +1 -1
  72. package/dist/esm/pipeline/advanced/chart/pipeline/donut.js.map +1 -1
  73. package/dist/esm/pipeline/advanced/chart/pipeline/dualAxis.js.map +1 -1
  74. package/dist/esm/pipeline/advanced/chart/pipeline/funnel.js.map +1 -1
  75. package/dist/esm/pipeline/advanced/chart/pipeline/heatmap.js.map +1 -1
  76. package/dist/esm/pipeline/advanced/chart/pipeline/histogram.js.map +1 -1
  77. package/dist/esm/pipeline/advanced/chart/pipeline/index.js +29 -30
  78. package/dist/esm/pipeline/advanced/chart/pipeline/line.js.map +1 -1
  79. package/dist/esm/pipeline/advanced/chart/pipeline/pie.js.map +1 -1
  80. package/dist/esm/pipeline/advanced/chart/pipeline/raceBar.js.map +1 -1
  81. package/dist/esm/pipeline/advanced/chart/pipeline/raceColumn.js.map +1 -1
  82. package/dist/esm/pipeline/advanced/chart/pipeline/raceDonut.js.map +1 -1
  83. package/dist/esm/pipeline/advanced/chart/pipeline/raceLine.js.map +1 -1
  84. package/dist/esm/pipeline/advanced/chart/pipeline/racePie.js.map +1 -1
  85. package/dist/esm/pipeline/advanced/chart/pipeline/raceScatter.js.map +1 -1
  86. package/dist/esm/pipeline/advanced/chart/pipeline/radar.js.map +1 -1
  87. package/dist/esm/pipeline/advanced/chart/pipeline/rose.js.map +1 -1
  88. package/dist/esm/pipeline/advanced/chart/pipeline/roseParallel.js.map +1 -1
  89. package/dist/esm/pipeline/advanced/chart/pipeline/scatter.js.map +1 -1
  90. package/dist/esm/pipeline/advanced/chart/pipeline/sunburst.js.map +1 -1
  91. package/dist/esm/pipeline/advanced/chart/pipeline/treeMap.js.map +1 -1
  92. package/dist/esm/pipeline/advanced/chart/pipes/analysis/common.js.map +1 -1
  93. package/dist/esm/pipeline/advanced/chart/pipes/analysis/index.js +3 -4
  94. package/dist/esm/pipeline/advanced/chart/pipes/analysis/sortLegend.js.map +1 -1
  95. package/dist/esm/pipeline/advanced/chart/pipes/analysis/sortXBand.js.map +1 -1
  96. package/dist/esm/pipeline/advanced/chart/pipes/analysis/sortYBand.js.map +1 -1
  97. package/dist/esm/pipeline/advanced/chart/pipes/annotation/annotation.js.map +1 -1
  98. package/dist/esm/pipeline/advanced/chart/pipes/annotation/index.js +1 -2
  99. package/dist/esm/pipeline/advanced/chart/pipes/config/boxplot.js.map +1 -1
  100. package/dist/esm/pipeline/advanced/chart/pipes/config/circlePacking.js.map +1 -1
  101. package/dist/esm/pipeline/advanced/chart/pipes/config/column.js.map +1 -1
  102. package/dist/esm/pipeline/advanced/chart/pipes/config/dualAxis.js.map +1 -1
  103. package/dist/esm/pipeline/advanced/chart/pipes/config/heatmap.js.map +1 -1
  104. package/dist/esm/pipeline/advanced/chart/pipes/config/histogram.js.map +1 -1
  105. package/dist/esm/pipeline/advanced/chart/pipes/config/index.js +9 -9
  106. package/dist/esm/pipeline/advanced/chart/pipes/config/index.js.map +1 -1
  107. package/dist/esm/pipeline/advanced/chart/pipes/config/line.js.map +1 -1
  108. package/dist/esm/pipeline/advanced/chart/pipes/config/pie.js.map +1 -1
  109. package/dist/esm/pipeline/advanced/chart/pipes/config/scatter.js.map +1 -1
  110. package/dist/esm/pipeline/advanced/chart/pipes/config/sunburst.js.map +1 -1
  111. package/dist/esm/pipeline/advanced/chart/pipes/config/treeMap.js.map +1 -1
  112. package/dist/esm/pipeline/advanced/chart/pipes/default/defaultDimensions.js.map +1 -1
  113. package/dist/esm/pipeline/advanced/chart/pipes/default/defaultMeasureId.js.map +1 -1
  114. package/dist/esm/pipeline/advanced/chart/pipes/default/defaultMeasures.js.map +1 -1
  115. package/dist/esm/pipeline/advanced/chart/pipes/default/index.js +3 -4
  116. package/dist/esm/pipeline/advanced/chart/pipes/dimensions/addPivotDimensionsForScatter.js.map +1 -1
  117. package/dist/esm/pipeline/advanced/chart/pipes/dimensions/pickDimensionsForReshape.js.map +1 -1
  118. package/dist/esm/pipeline/advanced/chart/pipes/encoding/adapter/encodingAdapter.js.map +1 -1
  119. package/dist/esm/pipeline/advanced/chart/pipes/encoding/adapter/index.js +1 -2
  120. package/dist/esm/pipeline/advanced/chart/pipes/encoding/bar.js.map +1 -1
  121. package/dist/esm/pipeline/advanced/chart/pipes/encoding/boxplot.js.map +1 -1
  122. package/dist/esm/pipeline/advanced/chart/pipes/encoding/color/addColorToEncoding.js.map +1 -1
  123. package/dist/esm/pipeline/advanced/chart/pipes/encoding/color/index.js +1 -2
  124. package/dist/esm/pipeline/advanced/chart/pipes/encoding/column.js.map +1 -1
  125. package/dist/esm/pipeline/advanced/chart/pipes/encoding/dualAxis.js.map +1 -1
  126. package/dist/esm/pipeline/advanced/chart/pipes/encoding/funnel.js.map +1 -1
  127. package/dist/esm/pipeline/advanced/chart/pipes/encoding/heatmap.js.map +1 -1
  128. package/dist/esm/pipeline/advanced/chart/pipes/encoding/hierarchy.js.map +1 -1
  129. package/dist/esm/pipeline/advanced/chart/pipes/encoding/histogram.js.map +1 -1
  130. package/dist/esm/pipeline/advanced/chart/pipes/encoding/index.js +20 -21
  131. package/dist/esm/pipeline/advanced/chart/pipes/encoding/line.js.map +1 -1
  132. package/dist/esm/pipeline/advanced/chart/pipes/encoding/pie.js.map +1 -1
  133. package/dist/esm/pipeline/advanced/chart/pipes/encoding/raceBar.js.map +1 -1
  134. package/dist/esm/pipeline/advanced/chart/pipes/encoding/raceColumn.js.map +1 -1
  135. package/dist/esm/pipeline/advanced/chart/pipes/encoding/raceDonut.js.map +1 -1
  136. package/dist/esm/pipeline/advanced/chart/pipes/encoding/raceLine.js.map +1 -1
  137. package/dist/esm/pipeline/advanced/chart/pipes/encoding/racePie.js.map +1 -1
  138. package/dist/esm/pipeline/advanced/chart/pipes/encoding/raceScatter.js.map +1 -1
  139. package/dist/esm/pipeline/advanced/chart/pipes/encoding/radar.js.map +1 -1
  140. package/dist/esm/pipeline/advanced/chart/pipes/encoding/rose.js.map +1 -1
  141. package/dist/esm/pipeline/advanced/chart/pipes/encoding/scatter.js.map +1 -1
  142. package/dist/esm/pipeline/advanced/chart/pipes/init/index.js +1 -2
  143. package/dist/esm/pipeline/advanced/chart/pipes/init/initAdvancedVSeed.js.map +1 -1
  144. package/dist/esm/pipeline/advanced/chart/pipes/markStyle/index.js +1 -2
  145. package/dist/esm/pipeline/advanced/chart/pipes/markStyle/markStyle.js.map +1 -1
  146. package/dist/esm/pipeline/advanced/chart/pipes/measures/buildMeasures.js.map +1 -1
  147. package/dist/esm/pipeline/advanced/chart/pipes/measures/buildMeasuresForDualAxis.js.map +1 -1
  148. package/dist/esm/pipeline/advanced/chart/pipes/measures/buildMeasuresForScatter.js.map +1 -1
  149. package/dist/esm/pipeline/advanced/chart/pipes/measures/index.js +3 -4
  150. package/dist/esm/pipeline/advanced/chart/pipes/measures/utils.js.map +1 -1
  151. package/dist/esm/pipeline/advanced/chart/pipes/page/page.js.map +1 -1
  152. package/dist/esm/pipeline/advanced/chart/pipes/pivot/index.js +1 -2
  153. package/dist/esm/pipeline/advanced/chart/pipes/pivot/pivotAdapter.js.map +1 -1
  154. package/dist/esm/pipeline/advanced/chart/pipes/regressionLine/index.js +1 -2
  155. package/dist/esm/pipeline/advanced/chart/pipes/regressionLine/regressionLine.js.map +1 -1
  156. package/dist/esm/pipeline/advanced/chart/pipes/reshape/index.js +10 -11
  157. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.js.map +1 -1
  158. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.js.map +1 -1
  159. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithEncoding.js.map +1 -1
  160. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithHistogramEncoding.js.map +1 -1
  161. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithScatterEncoding.js.map +1 -1
  162. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithBoxplotEncoding.js.map +1 -1
  163. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.js.map +1 -1
  164. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithEncoding.js.map +1 -1
  165. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithHistogramEncoding.js.map +1 -1
  166. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithScatterEncoding.js.map +1 -1
  167. package/dist/esm/pipeline/advanced/chart/pipes/theme/index.js +1 -2
  168. package/dist/esm/pipeline/advanced/chart/pipes/theme/theme.js.map +1 -1
  169. package/dist/esm/pipeline/advanced/table/pipeline/index.js +2 -3
  170. package/dist/esm/pipeline/advanced/table/pipeline/pivotTable.js.map +1 -1
  171. package/dist/esm/pipeline/advanced/table/pipeline/table.js.map +1 -1
  172. package/dist/esm/pipeline/advanced/table/pipes/cellStyle/cellStyle.js.map +1 -1
  173. package/dist/esm/pipeline/advanced/table/pipes/cellStyle/index.js +1 -2
  174. package/dist/esm/pipeline/advanced/table/pipes/config/index.js +2 -3
  175. package/dist/esm/pipeline/advanced/table/pipes/config/pivotTableConfig.js.map +1 -1
  176. package/dist/esm/pipeline/advanced/table/pipes/config/tableConfig.js.map +1 -1
  177. package/dist/esm/pipeline/advanced/table/pipes/default/defaultDimensions.js.map +1 -1
  178. package/dist/esm/pipeline/advanced/table/pipes/default/defaultMeasures.js.map +1 -1
  179. package/dist/esm/pipeline/advanced/table/pipes/default/index.js +2 -3
  180. package/dist/esm/pipeline/advanced/table/pipes/encoding/index.js +1 -2
  181. package/dist/esm/pipeline/advanced/table/pipes/encoding/pivotTable.js.map +1 -1
  182. package/dist/esm/pipeline/advanced/table/pipes/init/initAdvancedVSeed.js.map +1 -1
  183. package/dist/esm/pipeline/advanced/table/pipes/page/page.js.map +1 -1
  184. package/dist/esm/pipeline/advanced/table/pipes/records/records.js.map +1 -1
  185. package/dist/esm/pipeline/spec/chart/pipeline/area.js.map +1 -1
  186. package/dist/esm/pipeline/spec/chart/pipeline/areaPercent.js.map +1 -1
  187. package/dist/esm/pipeline/spec/chart/pipeline/bar.js.map +1 -1
  188. package/dist/esm/pipeline/spec/chart/pipeline/barParallel.js.map +1 -1
  189. package/dist/esm/pipeline/spec/chart/pipeline/barPercent.js.map +1 -1
  190. package/dist/esm/pipeline/spec/chart/pipeline/boxplot.js.map +1 -1
  191. package/dist/esm/pipeline/spec/chart/pipeline/circlePacking.js.map +1 -1
  192. package/dist/esm/pipeline/spec/chart/pipeline/column.js.map +1 -1
  193. package/dist/esm/pipeline/spec/chart/pipeline/columnParallel.js.map +1 -1
  194. package/dist/esm/pipeline/spec/chart/pipeline/columnPercent.js.map +1 -1
  195. package/dist/esm/pipeline/spec/chart/pipeline/donut.js.map +1 -1
  196. package/dist/esm/pipeline/spec/chart/pipeline/dualAxis.js.map +1 -1
  197. package/dist/esm/pipeline/spec/chart/pipeline/funnel.js.map +1 -1
  198. package/dist/esm/pipeline/spec/chart/pipeline/heatmap.js.map +1 -1
  199. package/dist/esm/pipeline/spec/chart/pipeline/histogram.js.map +1 -1
  200. package/dist/esm/pipeline/spec/chart/pipeline/index.js +29 -30
  201. package/dist/esm/pipeline/spec/chart/pipeline/line.js.map +1 -1
  202. package/dist/esm/pipeline/spec/chart/pipeline/pie.js.map +1 -1
  203. package/dist/esm/pipeline/spec/chart/pipeline/raceBar.js.map +1 -1
  204. package/dist/esm/pipeline/spec/chart/pipeline/raceColumn.js.map +1 -1
  205. package/dist/esm/pipeline/spec/chart/pipeline/raceDonut.js.map +1 -1
  206. package/dist/esm/pipeline/spec/chart/pipeline/raceLine.js.map +1 -1
  207. package/dist/esm/pipeline/spec/chart/pipeline/racePie.js.map +1 -1
  208. package/dist/esm/pipeline/spec/chart/pipeline/raceScatter.js.map +1 -1
  209. package/dist/esm/pipeline/spec/chart/pipeline/radar.js.map +1 -1
  210. package/dist/esm/pipeline/spec/chart/pipeline/rose.js.map +1 -1
  211. package/dist/esm/pipeline/spec/chart/pipeline/roseParallel.js.map +1 -1
  212. package/dist/esm/pipeline/spec/chart/pipeline/scatter.js.map +1 -1
  213. package/dist/esm/pipeline/spec/chart/pipeline/sunburst.js.map +1 -1
  214. package/dist/esm/pipeline/spec/chart/pipeline/treeMap.js.map +1 -1
  215. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationArea.js.map +1 -1
  216. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationAreaBand.js.map +1 -1
  217. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationHorizontalLine.js.map +1 -1
  218. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationPoint.js.map +1 -1
  219. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationPointCommon.js.map +1 -1
  220. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationPointOfDualAxis.js.map +1 -1
  221. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationPointOfHistogram.js.map +1 -1
  222. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationVerticalLine.js.map +1 -1
  223. package/dist/esm/pipeline/spec/chart/pipes/annotation/index.js +8 -9
  224. package/dist/esm/pipeline/spec/chart/pipes/annotation/splitLine.js.map +1 -1
  225. package/dist/esm/pipeline/spec/chart/pipes/annotation/utils.js.map +1 -1
  226. package/dist/esm/pipeline/spec/chart/pipes/axes/bandAxisStyle.js.map +1 -1
  227. package/dist/esm/pipeline/spec/chart/pipes/axes/format/linearFormat.js.map +1 -1
  228. package/dist/esm/pipeline/spec/chart/pipes/axes/heatmapBandAxis.js.map +1 -1
  229. package/dist/esm/pipeline/spec/chart/pipes/axes/histogramXLinear.js.map +1 -1
  230. package/dist/esm/pipeline/spec/chart/pipes/axes/index.js +11 -12
  231. package/dist/esm/pipeline/spec/chart/pipes/axes/linearAxisStyle.js.map +1 -1
  232. package/dist/esm/pipeline/spec/chart/pipes/axes/radarAngle.js.map +1 -1
  233. package/dist/esm/pipeline/spec/chart/pipes/axes/radarRadius.js.map +1 -1
  234. package/dist/esm/pipeline/spec/chart/pipes/axes/radius.js.map +1 -1
  235. package/dist/esm/pipeline/spec/chart/pipes/axes/title/defaultTitleText.js.map +1 -1
  236. package/dist/esm/pipeline/spec/chart/pipes/axes/xBand.js.map +1 -1
  237. package/dist/esm/pipeline/spec/chart/pipes/axes/xLinear.js.map +1 -1
  238. package/dist/esm/pipeline/spec/chart/pipes/axes/yBand.js.map +1 -1
  239. package/dist/esm/pipeline/spec/chart/pipes/axes/yLinear.js.map +1 -1
  240. package/dist/esm/pipeline/spec/chart/pipes/axes/yLinearPrimary.js.map +1 -1
  241. package/dist/esm/pipeline/spec/chart/pipes/axes/yLinearSecondary.js.map +1 -1
  242. package/dist/esm/pipeline/spec/chart/pipes/backgroundColor/background.js.map +1 -1
  243. package/dist/esm/pipeline/spec/chart/pipes/backgroundColor/index.js +1 -2
  244. package/dist/esm/pipeline/spec/chart/pipes/barWidth/barGapInGroup.js.map +1 -1
  245. package/dist/esm/pipeline/spec/chart/pipes/barWidth/barMaxWidth.js.map +1 -1
  246. package/dist/esm/pipeline/spec/chart/pipes/boxWidth/boxGapInGroup.js.map +1 -1
  247. package/dist/esm/pipeline/spec/chart/pipes/boxWidth/boxMaxWidth.js.map +1 -1
  248. package/dist/esm/pipeline/spec/chart/pipes/brush/brush.js.map +1 -1
  249. package/dist/esm/pipeline/spec/chart/pipes/color/color.js.map +1 -1
  250. package/dist/esm/pipeline/spec/chart/pipes/color/colorAdapter.js.map +1 -1
  251. package/dist/esm/pipeline/spec/chart/pipes/color/colorAreaStyleFill.js.map +1 -1
  252. package/dist/esm/pipeline/spec/chart/pipes/color/colorBarStyleFill.js.map +1 -1
  253. package/dist/esm/pipeline/spec/chart/pipes/color/colorBoxPlotStyleFill.js.map +1 -1
  254. package/dist/esm/pipeline/spec/chart/pipes/color/colorFunnelStyleFill.js.map +1 -1
  255. package/dist/esm/pipeline/spec/chart/pipes/color/colorLineStyleFill.js.map +1 -1
  256. package/dist/esm/pipeline/spec/chart/pipes/color/colorPieStyleFill.js.map +1 -1
  257. package/dist/esm/pipeline/spec/chart/pipes/color/colorPointStyleFill.js.map +1 -1
  258. package/dist/esm/pipeline/spec/chart/pipes/color/colorRoseStyleFill.js.map +1 -1
  259. package/dist/esm/pipeline/spec/chart/pipes/color/index.js +12 -13
  260. package/dist/esm/pipeline/spec/chart/pipes/color/linearColor.js.map +1 -1
  261. package/dist/esm/pipeline/spec/chart/pipes/color/linearColorForDualAxis.js.map +1 -1
  262. package/dist/esm/pipeline/spec/chart/pipes/crosshair/histogramCrosshair.js.map +1 -1
  263. package/dist/esm/pipeline/spec/chart/pipes/crosshair/horizontalCrosshairLine.js.map +1 -1
  264. package/dist/esm/pipeline/spec/chart/pipes/crosshair/horizontalCrosshairRect.js.map +1 -1
  265. package/dist/esm/pipeline/spec/chart/pipes/crosshair/index.js +5 -6
  266. package/dist/esm/pipeline/spec/chart/pipes/crosshair/verticalCrosshairLine.js.map +1 -1
  267. package/dist/esm/pipeline/spec/chart/pipes/crosshair/verticalCrosshairRect.js.map +1 -1
  268. package/dist/esm/pipeline/spec/chart/pipes/dataset/datasetBoxplot.js.map +1 -1
  269. package/dist/esm/pipeline/spec/chart/pipes/dataset/datasetDualAxis.js.map +1 -1
  270. package/dist/esm/pipeline/spec/chart/pipes/dataset/datasetHierarchy.js.map +1 -1
  271. package/dist/esm/pipeline/spec/chart/pipes/dataset/datasetHistogram.js.map +1 -1
  272. package/dist/esm/pipeline/spec/chart/pipes/dataset/datasetPivot.js.map +1 -1
  273. package/dist/esm/pipeline/spec/chart/pipes/dataset/datasetPivotHierarchy.js.map +1 -1
  274. package/dist/esm/pipeline/spec/chart/pipes/dataset/datasetScatter.js.map +1 -1
  275. package/dist/esm/pipeline/spec/chart/pipes/dataset/datasetXY.js.map +1 -1
  276. package/dist/esm/pipeline/spec/chart/pipes/dataset/datasetYX.js.map +1 -1
  277. package/dist/esm/pipeline/spec/chart/pipes/dataset/index.js +10 -11
  278. package/dist/esm/pipeline/spec/chart/pipes/dataset/progressive.js.map +1 -1
  279. package/dist/esm/pipeline/spec/chart/pipes/dual/adjustXField.js.map +1 -1
  280. package/dist/esm/pipeline/spec/chart/pipes/dual/dualChartType.js.map +1 -1
  281. package/dist/esm/pipeline/spec/chart/pipes/dual/index.js +2 -3
  282. package/dist/esm/pipeline/spec/chart/pipes/hierarchy/drill.js.map +1 -1
  283. package/dist/esm/pipeline/spec/chart/pipes/hierarchy/index.js +1 -2
  284. package/dist/esm/pipeline/spec/chart/pipes/init/area.js.map +1 -1
  285. package/dist/esm/pipeline/spec/chart/pipes/init/bar.js.map +1 -1
  286. package/dist/esm/pipeline/spec/chart/pipes/init/barParallel.js.map +1 -1
  287. package/dist/esm/pipeline/spec/chart/pipes/init/boxplot.js.map +1 -1
  288. package/dist/esm/pipeline/spec/chart/pipes/init/circlePacking.js.map +1 -1
  289. package/dist/esm/pipeline/spec/chart/pipes/init/column.js.map +1 -1
  290. package/dist/esm/pipeline/spec/chart/pipes/init/columnParallel.js.map +1 -1
  291. package/dist/esm/pipeline/spec/chart/pipes/init/donut.js.map +1 -1
  292. package/dist/esm/pipeline/spec/chart/pipes/init/dualAxis.js.map +1 -1
  293. package/dist/esm/pipeline/spec/chart/pipes/init/funnel.js.map +1 -1
  294. package/dist/esm/pipeline/spec/chart/pipes/init/heatmap.js.map +1 -1
  295. package/dist/esm/pipeline/spec/chart/pipes/init/histogram.js.map +1 -1
  296. package/dist/esm/pipeline/spec/chart/pipes/init/index.js +20 -21
  297. package/dist/esm/pipeline/spec/chart/pipes/init/line.js.map +1 -1
  298. package/dist/esm/pipeline/spec/chart/pipes/init/pie.js.map +1 -1
  299. package/dist/esm/pipeline/spec/chart/pipes/init/pivot.js.map +1 -1
  300. package/dist/esm/pipeline/spec/chart/pipes/init/radar.js.map +1 -1
  301. package/dist/esm/pipeline/spec/chart/pipes/init/rose.js.map +1 -1
  302. package/dist/esm/pipeline/spec/chart/pipes/init/roseParallel.js.map +1 -1
  303. package/dist/esm/pipeline/spec/chart/pipes/init/scatter.js.map +1 -1
  304. package/dist/esm/pipeline/spec/chart/pipes/init/sunburst.js.map +1 -1
  305. package/dist/esm/pipeline/spec/chart/pipes/init/treeMap.js.map +1 -1
  306. package/dist/esm/pipeline/spec/chart/pipes/label/index.js +9 -10
  307. package/dist/esm/pipeline/spec/chart/pipes/label/label.js.map +1 -1
  308. package/dist/esm/pipeline/spec/chart/pipes/label/labelBoxPlot.js.map +1 -1
  309. package/dist/esm/pipeline/spec/chart/pipes/label/labelCirclePacking.js.map +1 -1
  310. package/dist/esm/pipeline/spec/chart/pipes/label/labelDualAxis.js.map +1 -1
  311. package/dist/esm/pipeline/spec/chart/pipes/label/labelPie.js.map +1 -1
  312. package/dist/esm/pipeline/spec/chart/pipes/label/labelScatter.js.map +1 -1
  313. package/dist/esm/pipeline/spec/chart/pipes/label/labelSunburst.js.map +1 -1
  314. package/dist/esm/pipeline/spec/chart/pipes/label/labelTreeMapGroup.js.map +1 -1
  315. package/dist/esm/pipeline/spec/chart/pipes/label/labelTreeMapLeaf.js.map +1 -1
  316. package/dist/esm/pipeline/spec/chart/pipes/legend/boxLegend.js.map +1 -1
  317. package/dist/esm/pipeline/spec/chart/pipes/legend/colorLegend.js.map +1 -1
  318. package/dist/esm/pipeline/spec/chart/pipes/legend/discreteLegend.js.map +1 -1
  319. package/dist/esm/pipeline/spec/chart/pipes/legend/heatmapColorLegend.js.map +1 -1
  320. package/dist/esm/pipeline/spec/chart/pipes/legend/index.js +5 -6
  321. package/dist/esm/pipeline/spec/chart/pipes/legend/pivotColorLegend.js.map +1 -1
  322. package/dist/esm/pipeline/spec/chart/pipes/legend/pivotDiscreteLegend.js.map +1 -1
  323. package/dist/esm/pipeline/spec/chart/pipes/markStyle/areaStyle.js.map +1 -1
  324. package/dist/esm/pipeline/spec/chart/pipes/markStyle/barStyle.js.map +1 -1
  325. package/dist/esm/pipeline/spec/chart/pipes/markStyle/boxPlotStyle.js.map +1 -1
  326. package/dist/esm/pipeline/spec/chart/pipes/markStyle/cellStyle.js.map +1 -1
  327. package/dist/esm/pipeline/spec/chart/pipes/markStyle/curve/curve.js.map +1 -1
  328. package/dist/esm/pipeline/spec/chart/pipes/markStyle/curve/index.js +1 -2
  329. package/dist/esm/pipeline/spec/chart/pipes/markStyle/funnelStyle.js.map +1 -1
  330. package/dist/esm/pipeline/spec/chart/pipes/markStyle/funnelTransformStyle.js.map +1 -1
  331. package/dist/esm/pipeline/spec/chart/pipes/markStyle/index.js +11 -12
  332. package/dist/esm/pipeline/spec/chart/pipes/markStyle/lineStyle.js.map +1 -1
  333. package/dist/esm/pipeline/spec/chart/pipes/markStyle/outlierStyle.js.map +1 -1
  334. package/dist/esm/pipeline/spec/chart/pipes/markStyle/pieStyle.js.map +1 -1
  335. package/dist/esm/pipeline/spec/chart/pipes/markStyle/pointState.js.map +1 -1
  336. package/dist/esm/pipeline/spec/chart/pipes/markStyle/pointStyle.js.map +1 -1
  337. package/dist/esm/pipeline/spec/chart/pipes/markStyle/roseStyle.js.map +1 -1
  338. package/dist/esm/pipeline/spec/chart/pipes/percent/index.js +1 -2
  339. package/dist/esm/pipeline/spec/chart/pipes/percent/percent.js.map +1 -1
  340. package/dist/esm/pipeline/spec/chart/pipes/pipeFilter/areaStyleFilter.js.map +1 -1
  341. package/dist/esm/pipeline/spec/chart/pipes/pipeFilter/barStyleFilter.js.map +1 -1
  342. package/dist/esm/pipeline/spec/chart/pipes/pipeFilter/lineStyleFilter.js.map +1 -1
  343. package/dist/esm/pipeline/spec/chart/pipes/pipeFilter/pointStyleFilter.js.map +1 -1
  344. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/dimensionLinkage.js.map +1 -1
  345. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/heatmapColorDomain.js.map +1 -1
  346. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/index.js +10 -11
  347. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotAdapter.js.map +1 -1
  348. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotAxisStyle.js.map +1 -1
  349. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotColumnDimensions.js.map +1 -1
  350. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotGridStyle.js.map +1 -1
  351. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotHideIndicatorName.js.map +1 -1
  352. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotIndicators.js.map +1 -1
  353. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotRowDimensions.js.map +1 -1
  354. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotTitle.js.map +1 -1
  355. package/dist/esm/pipeline/spec/chart/pipes/player/isPlayer.js.map +1 -1
  356. package/dist/esm/pipeline/spec/chart/pipes/player/playerBar.js.map +1 -1
  357. package/dist/esm/pipeline/spec/chart/pipes/player/playerColumn.js.map +1 -1
  358. package/dist/esm/pipeline/spec/chart/pipes/player/playerLine.js.map +1 -1
  359. package/dist/esm/pipeline/spec/chart/pipes/player/playerPie.js.map +1 -1
  360. package/dist/esm/pipeline/spec/chart/pipes/player/playerScatter.js.map +1 -1
  361. package/dist/esm/pipeline/spec/chart/pipes/region/addRegionPadding.js.map +1 -1
  362. package/dist/esm/pipeline/spec/chart/pipes/regressionLine/columnRegressionLine.js.map +1 -1
  363. package/dist/esm/pipeline/spec/chart/pipes/regressionLine/common.js.map +1 -1
  364. package/dist/esm/pipeline/spec/chart/pipes/regressionLine/ecdfRegressionLine.js.map +1 -1
  365. package/dist/esm/pipeline/spec/chart/pipes/regressionLine/kdeRegressionLine.js.map +1 -1
  366. package/dist/esm/pipeline/spec/chart/pipes/regressionLine/linearRegressionLine.js.map +1 -1
  367. package/dist/esm/pipeline/spec/chart/pipes/series/index.js +1 -2
  368. package/dist/esm/pipeline/spec/chart/pipes/series/series.js.map +1 -1
  369. package/dist/esm/pipeline/spec/chart/pipes/size/index.js +1 -2
  370. package/dist/esm/pipeline/spec/chart/pipes/size/scatterSize.js.map +1 -1
  371. package/dist/esm/pipeline/spec/chart/pipes/stack/index.js +2 -3
  372. package/dist/esm/pipeline/spec/chart/pipes/stack/stack.js.map +1 -1
  373. package/dist/esm/pipeline/spec/chart/pipes/stack/stackCornerRadius.js.map +1 -1
  374. package/dist/esm/pipeline/spec/chart/pipes/theme/fontFamily.js.map +1 -1
  375. package/dist/esm/pipeline/spec/chart/pipes/theme/index.js +1 -2
  376. package/dist/esm/pipeline/spec/chart/pipes/tooltip/index.js +7 -8
  377. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.js.map +1 -1
  378. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipBoxplot.js.map +1 -1
  379. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js.map +1 -1
  380. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipElement.js.map +1 -1
  381. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.js.map +1 -1
  382. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHierarchy.js.map +1 -1
  383. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHistogram.js.map +1 -1
  384. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipScatter.js.map +1 -1
  385. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipStyle.js.map +1 -1
  386. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipTreeMap.js.map +1 -1
  387. package/dist/esm/pipeline/spec/chart/utils/condition.js.map +1 -1
  388. package/dist/esm/pipeline/spec/chart/utils/histogram.js.map +1 -1
  389. package/dist/esm/pipeline/spec/table/pipeline/index.js +2 -3
  390. package/dist/esm/pipeline/spec/table/pipeline/pivotTable.js.map +1 -1
  391. package/dist/esm/pipeline/spec/table/pipeline/table.js.map +1 -1
  392. package/dist/esm/pipeline/spec/table/pipes/cellStyle/common.js.map +1 -1
  393. package/dist/esm/pipeline/spec/table/pipes/cellStyle/pivot.js.map +1 -1
  394. package/dist/esm/pipeline/spec/table/pipes/cellStyle/table.js.map +1 -1
  395. package/dist/esm/pipeline/spec/table/pipes/columns/columnsAggregation.js.map +1 -1
  396. package/dist/esm/pipeline/spec/table/pipes/columns/dimensionsToColumns.js.map +1 -1
  397. package/dist/esm/pipeline/spec/table/pipes/columns/measuresToColumns.js.map +1 -1
  398. package/dist/esm/pipeline/spec/table/pipes/columns/pivotColumns.js.map +1 -1
  399. package/dist/esm/pipeline/spec/table/pipes/columns/utils.js.map +1 -1
  400. package/dist/esm/pipeline/spec/table/pipes/corner/index.js +1 -2
  401. package/dist/esm/pipeline/spec/table/pipes/corner/titleOnDimension.js.map +1 -1
  402. package/dist/esm/pipeline/spec/table/pipes/indicators/index.js +2 -3
  403. package/dist/esm/pipeline/spec/table/pipes/indicators/pivotDataConfig.js.map +1 -1
  404. package/dist/esm/pipeline/spec/table/pipes/indicators/pivotIndicators.js.map +1 -1
  405. package/dist/esm/pipeline/spec/table/pipes/init/index.js +2 -3
  406. package/dist/esm/pipeline/spec/table/pipes/init/pivotTable.js +1 -1
  407. package/dist/esm/pipeline/spec/table/pipes/init/pivotTable.js.map +1 -1
  408. package/dist/esm/pipeline/spec/table/pipes/init/table.js +1 -1
  409. package/dist/esm/pipeline/spec/table/pipes/init/table.js.map +1 -1
  410. package/dist/esm/pipeline/spec/table/pipes/rows/index.js +1 -2
  411. package/dist/esm/pipeline/spec/table/pipes/rows/pivotRows.js.map +1 -1
  412. package/dist/esm/pipeline/spec/table/pipes/theme/bodyStyle.js.map +1 -1
  413. package/dist/esm/pipeline/spec/table/pipes/theme/bottomFrozenStyle.js.map +1 -1
  414. package/dist/esm/pipeline/spec/table/pipes/theme/cornerHeaderStyle.js.map +1 -1
  415. package/dist/esm/pipeline/spec/table/pipes/theme/frameStyle.js.map +1 -1
  416. package/dist/esm/pipeline/spec/table/pipes/theme/headerStyle.js.map +1 -1
  417. package/dist/esm/pipeline/spec/table/pipes/theme/rowHeaderStyle.js.map +1 -1
  418. package/dist/esm/pipeline/spec/table/pipes/theme/scrollStyle.js.map +1 -1
  419. package/dist/esm/pipeline/spec/table/pipes/theme/selectionStyle.js.map +1 -1
  420. package/dist/esm/pipeline/utils/boxplot.js.map +1 -1
  421. package/dist/esm/pipeline/utils/chatType.js.map +1 -1
  422. package/dist/esm/pipeline/utils/constant.js.map +1 -1
  423. package/dist/esm/pipeline/utils/dimensions/delete.js.map +1 -1
  424. package/dist/esm/pipeline/utils/dimensions/typeGuard.js.map +1 -1
  425. package/dist/esm/pipeline/utils/format/createFormatter.js.map +1 -1
  426. package/dist/esm/pipeline/utils/format/createFormatterByDimension.js.map +1 -1
  427. package/dist/esm/pipeline/utils/format/createFormatterByMeasure.js.map +1 -1
  428. package/dist/esm/pipeline/utils/format/createNumFormatter.js.map +1 -1
  429. package/dist/esm/pipeline/utils/format/createTimeFormatter.js.map +1 -1
  430. package/dist/esm/pipeline/utils/measures/delete.js.map +1 -1
  431. package/dist/esm/pipeline/utils/measures/depth.js.map +1 -1
  432. package/dist/esm/pipeline/utils/measures/find.js.map +1 -1
  433. package/dist/esm/pipeline/utils/measures/typeGuard.js.map +1 -1
  434. package/dist/esm/pipeline/utils/pipeline.js.map +1 -1
  435. package/dist/esm/pipeline/utils/replaceNullToUndefined.js.map +1 -1
  436. package/dist/esm/pipeline/utils/sandbox/builtin-utils.js.map +1 -1
  437. package/dist/esm/pipeline/utils/sandbox/execute.js +1 -1
  438. package/dist/esm/pipeline/utils/sandbox/execute.js.map +1 -1
  439. package/dist/esm/pipeline/utils/sandbox/index.js +2 -3
  440. package/dist/esm/pipeline/utils/tree/traverse.js.map +1 -1
  441. package/dist/esm/pipeline/utils/valid/checkVSeed.js.map +1 -1
  442. package/dist/esm/pipeline/utils/valid/index.js +1 -2
  443. package/dist/esm/theme/common/annotaion.js +2 -1
  444. package/dist/esm/theme/common/annotaion.js.map +1 -1
  445. package/dist/esm/theme/common/axes.js.map +1 -1
  446. package/dist/esm/theme/common/boxPlot.js.map +1 -1
  447. package/dist/esm/theme/common/brush.js.map +1 -1
  448. package/dist/esm/theme/common/color.js.map +1 -1
  449. package/dist/esm/theme/common/crosshair.js.map +1 -1
  450. package/dist/esm/theme/common/funnelTransform.js.map +1 -1
  451. package/dist/esm/theme/common/heatmapCell.js.map +1 -1
  452. package/dist/esm/theme/common/label.js.map +1 -1
  453. package/dist/esm/theme/common/legend.js.map +1 -1
  454. package/dist/esm/theme/common/player.js.map +1 -1
  455. package/dist/esm/theme/common/regressionLine.js.map +1 -1
  456. package/dist/esm/theme/common/table.js.map +1 -1
  457. package/dist/esm/theme/common/tooltip.js.map +1 -1
  458. package/dist/esm/theme/dark/area.js.map +1 -1
  459. package/dist/esm/theme/dark/bar.js.map +1 -1
  460. package/dist/esm/theme/dark/boxPlot.js.map +1 -1
  461. package/dist/esm/theme/dark/column.js.map +1 -1
  462. package/dist/esm/theme/dark/dark.js.map +1 -1
  463. package/dist/esm/theme/dark/dualAxis.js.map +1 -1
  464. package/dist/esm/theme/dark/funnel.js.map +1 -1
  465. package/dist/esm/theme/dark/heatmap.js.map +1 -1
  466. package/dist/esm/theme/dark/hierarchy.js.map +1 -1
  467. package/dist/esm/theme/dark/histogram.js.map +1 -1
  468. package/dist/esm/theme/dark/index.js +1 -2
  469. package/dist/esm/theme/dark/line.js.map +1 -1
  470. package/dist/esm/theme/dark/pie.js.map +1 -1
  471. package/dist/esm/theme/dark/race.js.map +1 -1
  472. package/dist/esm/theme/dark/raceLine.js.map +1 -1
  473. package/dist/esm/theme/dark/racePie.js.map +1 -1
  474. package/dist/esm/theme/dark/radar.js.map +1 -1
  475. package/dist/esm/theme/dark/rose.js.map +1 -1
  476. package/dist/esm/theme/dark/scatter.js.map +1 -1
  477. package/dist/esm/theme/index.js +3 -4
  478. package/dist/esm/theme/light/area.js.map +1 -1
  479. package/dist/esm/theme/light/bar.js.map +1 -1
  480. package/dist/esm/theme/light/boxPlot.js.map +1 -1
  481. package/dist/esm/theme/light/column.js.map +1 -1
  482. package/dist/esm/theme/light/dualAxis.js.map +1 -1
  483. package/dist/esm/theme/light/funnel.js.map +1 -1
  484. package/dist/esm/theme/light/heatmap.js.map +1 -1
  485. package/dist/esm/theme/light/hierarchy.js.map +1 -1
  486. package/dist/esm/theme/light/histogram.js.map +1 -1
  487. package/dist/esm/theme/light/index.js +1 -2
  488. package/dist/esm/theme/light/light.js.map +1 -1
  489. package/dist/esm/theme/light/line.js.map +1 -1
  490. package/dist/esm/theme/light/pie.js.map +1 -1
  491. package/dist/esm/theme/light/race.js.map +1 -1
  492. package/dist/esm/theme/light/raceLine.js.map +1 -1
  493. package/dist/esm/theme/light/racePie.js.map +1 -1
  494. package/dist/esm/theme/light/radar.js.map +1 -1
  495. package/dist/esm/theme/light/rose.js.map +1 -1
  496. package/dist/esm/theme/light/scatter.js.map +1 -1
  497. package/dist/esm/theme/tokenTheme.js.map +1 -1
  498. package/dist/esm/types/advancedVSeed.js.map +1 -1
  499. package/dist/esm/types/builder/builder.js.map +1 -1
  500. package/dist/esm/types/chartType/area/index.js +1 -2
  501. package/dist/esm/types/chartType/area/zArea.js.map +1 -1
  502. package/dist/esm/types/chartType/areaPercent/index.js +1 -2
  503. package/dist/esm/types/chartType/areaPercent/zAreaPercent.js.map +1 -1
  504. package/dist/esm/types/chartType/bar/zBar.js.map +1 -1
  505. package/dist/esm/types/chartType/barParallel/zBarParallel.js.map +1 -1
  506. package/dist/esm/types/chartType/barPercent/zBarPercent.js.map +1 -1
  507. package/dist/esm/types/chartType/boxPlot/zBoxPlot.js.map +1 -1
  508. package/dist/esm/types/chartType/circlePacking/zCirclePacking.js.map +1 -1
  509. package/dist/esm/types/chartType/column/zColumn.js.map +1 -1
  510. package/dist/esm/types/chartType/columnParallel/zColumnParallel.js.map +1 -1
  511. package/dist/esm/types/chartType/columnPercent/zColumnPercent.js.map +1 -1
  512. package/dist/esm/types/chartType/donut/zDonut.js.map +1 -1
  513. package/dist/esm/types/chartType/dualAxis/index.js +1 -2
  514. package/dist/esm/types/chartType/dualAxis/zDualAxis.js.map +1 -1
  515. package/dist/esm/types/chartType/funnel/zFunnel.js.map +1 -1
  516. package/dist/esm/types/chartType/heatmap/zHeatmap.js.map +1 -1
  517. package/dist/esm/types/chartType/histogram/zHistogram.js.map +1 -1
  518. package/dist/esm/types/chartType/line/zLine.js.map +1 -1
  519. package/dist/esm/types/chartType/pie/zPie.js.map +1 -1
  520. package/dist/esm/types/chartType/pivotTable/zPivotTable.js.map +1 -1
  521. package/dist/esm/types/chartType/raceBar/zRaceBar.js.map +1 -1
  522. package/dist/esm/types/chartType/raceColumn/zRaceColumn.js.map +1 -1
  523. package/dist/esm/types/chartType/raceDonut/zRaceDonut.js.map +1 -1
  524. package/dist/esm/types/chartType/raceLine/zRaceLine.js.map +1 -1
  525. package/dist/esm/types/chartType/racePie/zRacePie.js.map +1 -1
  526. package/dist/esm/types/chartType/raceScatter/zRaceScatter.js.map +1 -1
  527. package/dist/esm/types/chartType/radar/zRadar.js.map +1 -1
  528. package/dist/esm/types/chartType/rose/zRose.js.map +1 -1
  529. package/dist/esm/types/chartType/roseParallel/zRoseParallel.js.map +1 -1
  530. package/dist/esm/types/chartType/scatter/zScatter.js.map +1 -1
  531. package/dist/esm/types/chartType/sunburst/zSunburst.js.map +1 -1
  532. package/dist/esm/types/chartType/table/zTable.js.map +1 -1
  533. package/dist/esm/types/chartType/treeMap/zTreeMap.js.map +1 -1
  534. package/dist/esm/types/dataSelector/selector.js.map +1 -1
  535. package/dist/esm/types/i18n/i18n.js.map +1 -1
  536. package/dist/esm/types/properties/aggregation/index.js +1 -2
  537. package/dist/esm/types/properties/aggregation/zAggregation.js.map +1 -1
  538. package/dist/esm/types/properties/analysis/analysis.js.map +1 -1
  539. package/dist/esm/types/properties/analysis/sort.js.map +1 -1
  540. package/dist/esm/types/properties/analysis/sortLegend.js.map +1 -1
  541. package/dist/esm/types/properties/annotation/annotation.js.map +1 -1
  542. package/dist/esm/types/properties/annotation/zAnnotationArea.js.map +1 -1
  543. package/dist/esm/types/properties/annotation/zAnnotationHorizontalLine.js.map +1 -1
  544. package/dist/esm/types/properties/annotation/zAnnotationPoint.js.map +1 -1
  545. package/dist/esm/types/properties/annotation/zAnnotationVerticalLine.js.map +1 -1
  546. package/dist/esm/types/properties/brush/index.js +1 -2
  547. package/dist/esm/types/properties/brush/zBrush.js.map +1 -1
  548. package/dist/esm/types/properties/cellStyle/bodyCellStyle.js.map +1 -1
  549. package/dist/esm/types/properties/cellStyle/cellStyle.js.map +1 -1
  550. package/dist/esm/types/properties/chartType/chartType.js.map +1 -1
  551. package/dist/esm/types/properties/chartType/index.js +1 -2
  552. package/dist/esm/types/properties/config/annotation/zAnnotation.js.map +1 -1
  553. package/dist/esm/types/properties/config/area.js.map +1 -1
  554. package/dist/esm/types/properties/config/axes/zBandAxis.js.map +1 -1
  555. package/dist/esm/types/properties/config/axes/zLinearAxis.js.map +1 -1
  556. package/dist/esm/types/properties/config/backgroundColor/backgroundColor.js.map +1 -1
  557. package/dist/esm/types/properties/config/bar.js.map +1 -1
  558. package/dist/esm/types/properties/config/barWidth/index.js.map +1 -1
  559. package/dist/esm/types/properties/config/boxWidth/zBoxWidth.js.map +1 -1
  560. package/dist/esm/types/properties/config/boxplot.js.map +1 -1
  561. package/dist/esm/types/properties/config/circlePacking.js.map +1 -1
  562. package/dist/esm/types/properties/config/color/color.js.map +1 -1
  563. package/dist/esm/types/properties/config/column.js.map +1 -1
  564. package/dist/esm/types/properties/config/config.js.map +1 -1
  565. package/dist/esm/types/properties/config/crosshair/zCrosshair.js.map +1 -1
  566. package/dist/esm/types/properties/config/dimensionLinkage/dimensionLinkage.js.map +1 -1
  567. package/dist/esm/types/properties/config/dualAxis.js.map +1 -1
  568. package/dist/esm/types/properties/config/funnel.js.map +1 -1
  569. package/dist/esm/types/properties/config/funnelTransform/zFunnelTransform.js.map +1 -1
  570. package/dist/esm/types/properties/config/heatmap/zHeatmap.js.map +1 -1
  571. package/dist/esm/types/properties/config/heatmap.js.map +1 -1
  572. package/dist/esm/types/properties/config/histogram.js.map +1 -1
  573. package/dist/esm/types/properties/config/label/zLabel.js.map +1 -1
  574. package/dist/esm/types/properties/config/label/zPieLabel.js.map +1 -1
  575. package/dist/esm/types/properties/config/legend/legend.js.map +1 -1
  576. package/dist/esm/types/properties/config/line.js.map +1 -1
  577. package/dist/esm/types/properties/config/pie.js.map +1 -1
  578. package/dist/esm/types/properties/config/pivotGrid/index.js +1 -2
  579. package/dist/esm/types/properties/config/pivotGrid/pivotGrid.js.map +1 -1
  580. package/dist/esm/types/properties/config/pivotTable.js.map +1 -1
  581. package/dist/esm/types/properties/config/player/index.js +1 -2
  582. package/dist/esm/types/properties/config/player/zPlayer.js.map +1 -1
  583. package/dist/esm/types/properties/config/race.js.map +1 -1
  584. package/dist/esm/types/properties/config/rose.js.map +1 -1
  585. package/dist/esm/types/properties/config/scatter.js.map +1 -1
  586. package/dist/esm/types/properties/config/stackCornerRadius/stackCornerRadius.js.map +1 -1
  587. package/dist/esm/types/properties/config/sunburst.js.map +1 -1
  588. package/dist/esm/types/properties/config/table.js.map +1 -1
  589. package/dist/esm/types/properties/config/tooltip/tooltip.js.map +1 -1
  590. package/dist/esm/types/properties/config/treeMap.js.map +1 -1
  591. package/dist/esm/types/properties/config/whiskers/index.js.map +1 -1
  592. package/dist/esm/types/properties/dataset/dataset.js.map +1 -1
  593. package/dist/esm/types/properties/dataset/index.js +1 -2
  594. package/dist/esm/types/properties/datasetReshapeInfo/index.js +1 -2
  595. package/dist/esm/types/properties/datasetReshapeInfo/zDatasetReshapeInfo.js.map +1 -1
  596. package/dist/esm/types/properties/dimensions/zDimensions.js.map +1 -1
  597. package/dist/esm/types/properties/encoding/index.js +3 -4
  598. package/dist/esm/types/properties/encoding/zDimensionEncoding.js.map +1 -1
  599. package/dist/esm/types/properties/encoding/zEncoding.js.map +1 -1
  600. package/dist/esm/types/properties/encoding/zMeasureEncoding.js.map +1 -1
  601. package/dist/esm/types/properties/format/numFormat.js.map +1 -1
  602. package/dist/esm/types/properties/format/timeFormat.js.map +1 -1
  603. package/dist/esm/types/properties/markStyle/barStyle.js.map +1 -1
  604. package/dist/esm/types/properties/markStyle/boxPlotStyle.js.map +1 -1
  605. package/dist/esm/types/properties/markStyle/lineStyle.js.map +1 -1
  606. package/dist/esm/types/properties/markStyle/markStyle.js.map +1 -1
  607. package/dist/esm/types/properties/markStyle/outlierStyle.js.map +1 -1
  608. package/dist/esm/types/properties/markStyle/pointStyle.js.map +1 -1
  609. package/dist/esm/types/properties/markStyle/zAreaStyle.js.map +1 -1
  610. package/dist/esm/types/properties/measures/zDualMeasures.js.map +1 -1
  611. package/dist/esm/types/properties/measures/zMeasures.js.map +1 -1
  612. package/dist/esm/types/properties/page/index.js +1 -2
  613. package/dist/esm/types/properties/page/zPage.js.map +1 -1
  614. package/dist/esm/types/properties/regressionLine/zRegressionLine.js.map +1 -1
  615. package/dist/esm/types/properties/theme/customTheme.js.map +1 -1
  616. package/dist/esm/types/properties/theme/index.js +2 -3
  617. package/dist/esm/types/properties/theme/theme.js.map +1 -1
  618. package/dist/esm/types/properties/totals/index.js +1 -2
  619. package/dist/esm/types/properties/totals/zTotals.js.map +1 -1
  620. package/dist/esm/types/zVseed.js.map +1 -1
  621. package/dist/umd/index.js +357 -357
  622. package/dist/umd/index.js.map +1 -1
  623. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/player/playerColumn.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/player/playerColumn.ts"],"sourcesContent":["import type { IPlayerSpec, ISpec } from '@visactor/vchart'\nimport { groupBy, uniqueBy } from 'remeda'\nimport type { Player, VChartSpecPipe } from 'src/types'\nimport { datasetXY } from '../dataset'\n\nexport const playerColumn: VChartSpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { dimensions = [], datasetReshapeInfo, chartType, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { fontFamily?: string; player: Player }\n const result = datasetXY(spec, context)\n\n if (!baseConfig || !baseConfig.player) {\n return result\n }\n const { player } = baseConfig\n const fontFamily = player.fontFamily || baseConfig.fontFamily\n const textSize = player.fontSize ?? 36\n\n const id = datasetReshapeInfo[0].id\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n const { encodingPlayer, encodingX } = unfoldInfo\n const { measureValue } = foldInfo\n const {\n maxCount,\n autoPlay = true,\n interval = 1000,\n loop = false,\n position,\n railColor,\n trackColor,\n sliderHandleColor,\n sliderHandleBorderColor,\n startButtonColor,\n pauseButtonColor,\n backwardButtonColor,\n forwardButtonColor,\n } = player\n\n const dataGroups = groupBy(advancedVSeed.dataset, (item) => item[encodingPlayer])\n if (result.data && 'values' in result.data) {\n result.data.values = []\n }\n\n const xValues = uniqueBy(\n advancedVSeed.dataset.map((d) => d[encodingX]),\n (item) => item,\n )\n const specs = Object.values(dataGroups).map((items) => {\n // 如果当前items中不存在xValues中的值, 则填充为0, 保证每组都有同样的xValue, 都有对应的数据\n const filledItems = items.map((item) => ({\n ...item,\n [encodingX]: xValues.find((xValue) => xValue === item[encodingX]) || 0,\n }))\n const sortedItems = filledItems.sort((a, b) => b[measureValue] - a[measureValue])\n return {\n data: {\n id: id,\n values: maxCount === false ? sortedItems : sortedItems.slice(0, maxCount as number),\n },\n }\n })\n\n const duration = interval\n const exchangeDuration = interval * 0.6\n\n const dataKey = dimensions.filter((d) => !encoding.player?.includes(d.id)).map((d) => d.id)\n\n const padding = 12\n return {\n ...result,\n dataKey,\n stackCornerRadius: undefined,\n animationUpdate: {\n bar: [\n {\n type: 'update',\n options: { excludeChannels: ['x'] },\n easing: 'linear',\n duration,\n },\n {\n channel: ['x'],\n easing: 'circInOut',\n duration: exchangeDuration,\n },\n ],\n point: [\n {\n type: 'update',\n easing: 'linear',\n duration,\n },\n ],\n line: [\n {\n type: 'update',\n easing: 'linear',\n duration,\n },\n ],\n axis: {\n duration: exchangeDuration,\n easing: 'circInOut',\n },\n },\n animationEnter: {\n bar: [\n {\n type: 'moveIn',\n duration: exchangeDuration,\n easing: 'circInOut',\n options: {\n direction: 'x',\n orient: 'negative',\n },\n },\n ],\n },\n animationExit: {\n bar: [\n {\n type: 'moveOut',\n options: {\n direction: 'y',\n orient: 'negative',\n },\n duration: exchangeDuration,\n },\n {\n type: 'moveOut',\n options: {\n direction: 'x',\n orient: 'negative',\n },\n duration: exchangeDuration,\n },\n {\n type: 'fadeOut',\n duration: exchangeDuration,\n },\n ],\n },\n customMark: [\n {\n type: 'text',\n dataId: 'year',\n style: {\n textBaseline: 'bottom',\n fontSize: textSize,\n textAlign: 'right',\n fontFamily,\n text: (datum: any) => datum[encodingPlayer],\n x: (_datum: any, ctx: any) => {\n return ctx.vchart.getChart().getCanvasRect()?.width - padding\n },\n y: (_datum: any, _ctx: any) => {\n return textSize + padding\n },\n fill: 'rgb(100, 100, 100)',\n fillOpacity: 0.25,\n },\n },\n ],\n player: {\n visible: true,\n auto: autoPlay,\n interval: interval,\n loop: loop,\n alternate: false,\n position: 'middle',\n orient: position,\n type: 'discrete',\n specs,\n controller: {\n visible: true,\n start: { visible: true, order: 0, style: { fill: startButtonColor } },\n pause: { visible: true, order: 1, style: { fill: pauseButtonColor } },\n backward: { visible: true, order: 2, style: { fill: backwardButtonColor } },\n forward: { visible: true, order: 3, position: 'end', style: { fill: forwardButtonColor } },\n },\n slider: {\n visible: true,\n railStyle: {\n visible: true,\n fill: railColor,\n [position === 'top' || position === 'bottom' ? 'height' : 'width']: 2,\n },\n trackStyle: {\n visible: true,\n fill: trackColor,\n [position === 'top' || position === 'bottom' ? 'height' : 'width']: 2,\n },\n handlerStyle: {\n visible: true,\n lineWidth: 2,\n stroke: sliderHandleBorderColor,\n fill: sliderHandleColor,\n size: 9,\n },\n },\n } as IPlayerSpec,\n } as unknown as ISpec\n}\n"],"names":["playerColumn","spec","context","advancedVSeed","dimensions","datasetReshapeInfo","chartType","encoding","baseConfig","result","datasetXY","player","fontFamily","textSize","id","unfoldInfo","foldInfo","encodingPlayer","encodingX","measureValue","maxCount","autoPlay","interval","loop","position","railColor","trackColor","sliderHandleColor","sliderHandleBorderColor","startButtonColor","pauseButtonColor","backwardButtonColor","forwardButtonColor","dataGroups","groupBy","item","xValues","uniqueBy","d","specs","Object","items","filledItems","xValue","sortedItems","a","b","duration","exchangeDuration","dataKey","padding","undefined","datum","_datum","ctx","_ctx"],"mappings":"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"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/player/playerColumn.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/player/playerColumn.ts"],"sourcesContent":["import type { IPlayerSpec, ISpec } from '@visactor/vchart'\nimport { groupBy, uniqueBy } from 'remeda'\nimport type { Player, VChartSpecPipe } from 'src/types'\nimport { datasetXY } from '../dataset'\n\nexport const playerColumn: VChartSpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { dimensions = [], datasetReshapeInfo, chartType, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { fontFamily?: string; player: Player }\n const result = datasetXY(spec, context)\n\n if (!baseConfig || !baseConfig.player) {\n return result\n }\n const { player } = baseConfig\n const fontFamily = player.fontFamily || baseConfig.fontFamily\n const textSize = player.fontSize ?? 36\n\n const id = datasetReshapeInfo[0].id\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n const { encodingPlayer, encodingX } = unfoldInfo\n const { measureValue } = foldInfo\n const {\n maxCount,\n autoPlay = true,\n interval = 1000,\n loop = false,\n position,\n railColor,\n trackColor,\n sliderHandleColor,\n sliderHandleBorderColor,\n startButtonColor,\n pauseButtonColor,\n backwardButtonColor,\n forwardButtonColor,\n } = player\n\n const dataGroups = groupBy(advancedVSeed.dataset, (item) => item[encodingPlayer])\n if (result.data && 'values' in result.data) {\n result.data.values = []\n }\n\n const xValues = uniqueBy(\n advancedVSeed.dataset.map((d) => d[encodingX]),\n (item) => item,\n )\n const specs = Object.values(dataGroups).map((items) => {\n // 如果当前items中不存在xValues中的值, 则填充为0, 保证每组都有同样的xValue, 都有对应的数据\n const filledItems = items.map((item) => ({\n ...item,\n [encodingX]: xValues.find((xValue) => xValue === item[encodingX]) || 0,\n }))\n const sortedItems = filledItems.sort((a, b) => b[measureValue] - a[measureValue])\n return {\n data: {\n id: id,\n values: maxCount === false ? sortedItems : sortedItems.slice(0, maxCount as number),\n },\n }\n })\n\n const duration = interval\n const exchangeDuration = interval * 0.6\n\n const dataKey = dimensions.filter((d) => !encoding.player?.includes(d.id)).map((d) => d.id)\n\n const padding = 12\n return {\n ...result,\n dataKey,\n stackCornerRadius: undefined,\n animationUpdate: {\n bar: [\n {\n type: 'update',\n options: { excludeChannels: ['x'] },\n easing: 'linear',\n duration,\n },\n {\n channel: ['x'],\n easing: 'circInOut',\n duration: exchangeDuration,\n },\n ],\n point: [\n {\n type: 'update',\n easing: 'linear',\n duration,\n },\n ],\n line: [\n {\n type: 'update',\n easing: 'linear',\n duration,\n },\n ],\n axis: {\n duration: exchangeDuration,\n easing: 'circInOut',\n },\n },\n animationEnter: {\n bar: [\n {\n type: 'moveIn',\n duration: exchangeDuration,\n easing: 'circInOut',\n options: {\n direction: 'x',\n orient: 'negative',\n },\n },\n ],\n },\n animationExit: {\n bar: [\n {\n type: 'moveOut',\n options: {\n direction: 'y',\n orient: 'negative',\n },\n duration: exchangeDuration,\n },\n {\n type: 'moveOut',\n options: {\n direction: 'x',\n orient: 'negative',\n },\n duration: exchangeDuration,\n },\n {\n type: 'fadeOut',\n duration: exchangeDuration,\n },\n ],\n },\n customMark: [\n {\n type: 'text',\n dataId: 'year',\n style: {\n textBaseline: 'bottom',\n fontSize: textSize,\n textAlign: 'right',\n fontFamily,\n text: (datum: any) => datum[encodingPlayer],\n x: (_datum: any, ctx: any) => {\n return ctx.vchart.getChart().getCanvasRect()?.width - padding\n },\n y: (_datum: any, _ctx: any) => {\n return textSize + padding\n },\n fill: 'rgb(100, 100, 100)',\n fillOpacity: 0.25,\n },\n },\n ],\n player: {\n visible: true,\n auto: autoPlay,\n interval: interval,\n loop: loop,\n alternate: false,\n position: 'middle',\n orient: position,\n type: 'discrete',\n specs,\n controller: {\n visible: true,\n start: { visible: true, order: 0, style: { fill: startButtonColor } },\n pause: { visible: true, order: 1, style: { fill: pauseButtonColor } },\n backward: { visible: true, order: 2, style: { fill: backwardButtonColor } },\n forward: { visible: true, order: 3, position: 'end', style: { fill: forwardButtonColor } },\n },\n slider: {\n visible: true,\n railStyle: {\n visible: true,\n fill: railColor,\n [position === 'top' || position === 'bottom' ? 'height' : 'width']: 2,\n },\n trackStyle: {\n visible: true,\n fill: trackColor,\n [position === 'top' || position === 'bottom' ? 'height' : 'width']: 2,\n },\n handlerStyle: {\n visible: true,\n lineWidth: 2,\n stroke: sliderHandleBorderColor,\n fill: sliderHandleColor,\n size: 9,\n },\n },\n } as IPlayerSpec,\n } as unknown as ISpec\n}\n"],"names":["playerColumn","spec","context","advancedVSeed","dimensions","datasetReshapeInfo","chartType","encoding","baseConfig","result","datasetXY","player","fontFamily","textSize","id","unfoldInfo","foldInfo","encodingPlayer","encodingX","measureValue","maxCount","autoPlay","interval","loop","position","railColor","trackColor","sliderHandleColor","sliderHandleBorderColor","startButtonColor","pauseButtonColor","backwardButtonColor","forwardButtonColor","dataGroups","groupBy","item","xValues","uniqueBy","d","specs","Object","items","filledItems","xValue","sortedItems","a","b","duration","exchangeDuration","dataKey","padding","undefined","datum","_datum","ctx","_ctx"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/player/playerLine.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/player/playerLine.ts"],"sourcesContent":["import type { IPlayerSpec, ISpec } from '@visactor/vchart'\nimport type { Player, VChartSpecPipe } from 'src/types'\nimport { datasetXY } from '../dataset'\n\nexport const playerLine: VChartSpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { datasetReshapeInfo, chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { player: Player }\n const result = datasetXY(spec, context)\n\n if (!baseConfig || !baseConfig.player) {\n return result\n }\n const { player } = baseConfig\n\n const id = datasetReshapeInfo[0].id\n const { unfoldInfo } = datasetReshapeInfo[0]\n const { encodingX } = unfoldInfo\n\n const {\n maxCount = false,\n autoPlay = true,\n interval,\n loop = false,\n position,\n railColor,\n trackColor,\n sliderHandleColor,\n sliderHandleBorderColor,\n startButtonColor,\n pauseButtonColor,\n backwardButtonColor,\n forwardButtonColor,\n } = player\n\n // 数据分组的依据有比较大的改变\n // X轴由2个逐渐增加\n // 从而保证每次更新时, X轴会自然的移动\n\n // 1. 获取所有唯一的 X 轴值并排序\n const uniqueXValues = Array.from(new Set(advancedVSeed.dataset.map((d) => d[encodingX]))).sort((a, b) => {\n // 假设X轴是数字或可以比较的\n return a > b ? 1 : -1\n })\n\n // 2. 生成specs\n // X轴由2个逐渐增加 -> 窗口大小 maxCount (默认20?)\n // 每次移动1个 -> step = 1\n const step = 1\n const specs: any[] = []\n\n // 我们清空默认数据,由 player 控制\n // 但是我们需要在初始状态下提供结构\n result.data = [\n {\n id: id,\n values: [], // 初始为空,由 player 填充第一帧\n },\n ]\n\n // 如果 maxCount 为 false,则不进行限制,显示所有数据\n // 或者如果X轴点数小于 maxCount,直接作为一个frame\n if (maxCount === false) {\n // 即使没有maxCount限制,我们也要模拟数据逐个增加的过程\n // 否则就没有动画效果了,直接显示最终结果\n // 所以这里我们需要生成一系列 specs,从 2 个点一直增加到所有点\n for (let currentSize = 2; currentSize <= uniqueXValues.length; currentSize += step) {\n // 窗口从 0 开始,长度为 currentSize\n const currentXValues = uniqueXValues.slice(0, currentSize)\n const frameData = advancedVSeed.dataset.filter((d) => currentXValues.includes(d[encodingX]))\n\n specs.push({\n data: {\n id: id,\n values: frameData,\n },\n })\n }\n } else if (uniqueXValues.length <= (maxCount as number)) {\n // 如果数据总量本身就小于等于 maxCount,那也是逐步增加到全部显示\n const limitCount = uniqueXValues.length\n for (let currentSize = 2; currentSize <= limitCount; currentSize += step) {\n // 窗口从 0 开始,长度为 currentSize\n const currentXValues = uniqueXValues.slice(0, currentSize)\n const frameData = advancedVSeed.dataset.filter((d) => currentXValues.includes(d[encodingX]))\n\n specs.push({\n data: {\n id: id,\n values: frameData,\n },\n })\n }\n } else {\n const limitCount = maxCount as number\n // 阶段1: 增长阶段 (Growing Phase)\n // 从 2 个点开始,逐渐增加到 maxCount 个点\n // 每次增加 step 个点 (或者尽量接近 step,这里简化为 i 代表当前窗口大小)\n // 假设初始窗口大小为 2\n for (let currentSize = 2; currentSize < limitCount; currentSize += step) {\n // 窗口从 0 开始,长度为 currentSize\n const currentXValues = uniqueXValues.slice(0, currentSize)\n const frameData = advancedVSeed.dataset.filter((d) => currentXValues.includes(d[encodingX]))\n\n specs.push({\n data: {\n id: id,\n values: frameData,\n },\n })\n }\n\n // 阶段2: 滑动阶段 (Sliding Phase)\n // 窗口大小固定为 maxCount,窗口起始位置向右移动\n for (let i = 0; i <= uniqueXValues.length - limitCount; i += step) {\n // 获取当前窗口的 X 值范围\n const currentXValues = uniqueXValues.slice(i, i + limitCount)\n // 过滤出这些 X 值对应的数据\n const frameData = advancedVSeed.dataset.filter((d) => currentXValues.includes(d[encodingX]))\n\n specs.push({\n data: {\n id: id,\n values: frameData,\n },\n })\n }\n }\n\n const duration = interval\n\n // 样式部分复用 playerXY\n return {\n ...result,\n stackCornerRadius: undefined,\n animationUpdate: {\n duration,\n },\n point: {\n visible: false,\n },\n player: {\n visible: true,\n auto: autoPlay,\n interval: interval,\n loop: loop,\n alternate: false,\n position: 'middle',\n orient: position,\n type: 'discrete',\n specs,\n controller: {\n visible: true,\n start: { visible: true, order: 0, style: { fill: startButtonColor } },\n pause: { visible: true, order: 1, style: { fill: pauseButtonColor } },\n backward: { visible: true, order: 2, style: { fill: backwardButtonColor } },\n forward: { visible: true, order: 3, position: 'end', style: { fill: forwardButtonColor } },\n },\n slider: {\n visible: true,\n railStyle: {\n visible: true,\n fill: railColor,\n [position === 'top' || position === 'bottom' ? 'height' : 'width']: 2,\n },\n trackStyle: {\n visible: true,\n fill: trackColor,\n [position === 'top' || position === 'bottom' ? 'height' : 'width']: 2,\n },\n handlerStyle: {\n visible: true,\n lineWidth: 2,\n stroke: sliderHandleBorderColor,\n fill: sliderHandleColor,\n size: 9,\n },\n },\n } as IPlayerSpec,\n } as unknown as ISpec\n}\n"],"names":["playerLine","spec","context","advancedVSeed","datasetReshapeInfo","chartType","baseConfig","result","datasetXY","player","id","unfoldInfo","encodingX","maxCount","autoPlay","interval","loop","position","railColor","trackColor","sliderHandleColor","sliderHandleBorderColor","startButtonColor","pauseButtonColor","backwardButtonColor","forwardButtonColor","uniqueXValues","Array","Set","d","a","b","step","specs","currentSize","currentXValues","frameData","limitCount","i","duration","undefined"],"mappings":"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"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/player/playerLine.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/player/playerLine.ts"],"sourcesContent":["import type { IPlayerSpec, ISpec } from '@visactor/vchart'\nimport type { Player, VChartSpecPipe } from 'src/types'\nimport { datasetXY } from '../dataset'\n\nexport const playerLine: VChartSpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { datasetReshapeInfo, chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { player: Player }\n const result = datasetXY(spec, context)\n\n if (!baseConfig || !baseConfig.player) {\n return result\n }\n const { player } = baseConfig\n\n const id = datasetReshapeInfo[0].id\n const { unfoldInfo } = datasetReshapeInfo[0]\n const { encodingX } = unfoldInfo\n\n const {\n maxCount = false,\n autoPlay = true,\n interval,\n loop = false,\n position,\n railColor,\n trackColor,\n sliderHandleColor,\n sliderHandleBorderColor,\n startButtonColor,\n pauseButtonColor,\n backwardButtonColor,\n forwardButtonColor,\n } = player\n\n // 数据分组的依据有比较大的改变\n // X轴由2个逐渐增加\n // 从而保证每次更新时, X轴会自然的移动\n\n // 1. 获取所有唯一的 X 轴值并排序\n const uniqueXValues = Array.from(new Set(advancedVSeed.dataset.map((d) => d[encodingX]))).sort((a, b) => {\n // 假设X轴是数字或可以比较的\n return a > b ? 1 : -1\n })\n\n // 2. 生成specs\n // X轴由2个逐渐增加 -> 窗口大小 maxCount (默认20?)\n // 每次移动1个 -> step = 1\n const step = 1\n const specs: any[] = []\n\n // 我们清空默认数据,由 player 控制\n // 但是我们需要在初始状态下提供结构\n result.data = [\n {\n id: id,\n values: [], // 初始为空,由 player 填充第一帧\n },\n ]\n\n // 如果 maxCount 为 false,则不进行限制,显示所有数据\n // 或者如果X轴点数小于 maxCount,直接作为一个frame\n if (maxCount === false) {\n // 即使没有maxCount限制,我们也要模拟数据逐个增加的过程\n // 否则就没有动画效果了,直接显示最终结果\n // 所以这里我们需要生成一系列 specs,从 2 个点一直增加到所有点\n for (let currentSize = 2; currentSize <= uniqueXValues.length; currentSize += step) {\n // 窗口从 0 开始,长度为 currentSize\n const currentXValues = uniqueXValues.slice(0, currentSize)\n const frameData = advancedVSeed.dataset.filter((d) => currentXValues.includes(d[encodingX]))\n\n specs.push({\n data: {\n id: id,\n values: frameData,\n },\n })\n }\n } else if (uniqueXValues.length <= (maxCount as number)) {\n // 如果数据总量本身就小于等于 maxCount,那也是逐步增加到全部显示\n const limitCount = uniqueXValues.length\n for (let currentSize = 2; currentSize <= limitCount; currentSize += step) {\n // 窗口从 0 开始,长度为 currentSize\n const currentXValues = uniqueXValues.slice(0, currentSize)\n const frameData = advancedVSeed.dataset.filter((d) => currentXValues.includes(d[encodingX]))\n\n specs.push({\n data: {\n id: id,\n values: frameData,\n },\n })\n }\n } else {\n const limitCount = maxCount as number\n // 阶段1: 增长阶段 (Growing Phase)\n // 从 2 个点开始,逐渐增加到 maxCount 个点\n // 每次增加 step 个点 (或者尽量接近 step,这里简化为 i 代表当前窗口大小)\n // 假设初始窗口大小为 2\n for (let currentSize = 2; currentSize < limitCount; currentSize += step) {\n // 窗口从 0 开始,长度为 currentSize\n const currentXValues = uniqueXValues.slice(0, currentSize)\n const frameData = advancedVSeed.dataset.filter((d) => currentXValues.includes(d[encodingX]))\n\n specs.push({\n data: {\n id: id,\n values: frameData,\n },\n })\n }\n\n // 阶段2: 滑动阶段 (Sliding Phase)\n // 窗口大小固定为 maxCount,窗口起始位置向右移动\n for (let i = 0; i <= uniqueXValues.length - limitCount; i += step) {\n // 获取当前窗口的 X 值范围\n const currentXValues = uniqueXValues.slice(i, i + limitCount)\n // 过滤出这些 X 值对应的数据\n const frameData = advancedVSeed.dataset.filter((d) => currentXValues.includes(d[encodingX]))\n\n specs.push({\n data: {\n id: id,\n values: frameData,\n },\n })\n }\n }\n\n const duration = interval\n\n // 样式部分复用 playerXY\n return {\n ...result,\n stackCornerRadius: undefined,\n animationUpdate: {\n duration,\n },\n point: {\n visible: false,\n },\n player: {\n visible: true,\n auto: autoPlay,\n interval: interval,\n loop: loop,\n alternate: false,\n position: 'middle',\n orient: position,\n type: 'discrete',\n specs,\n controller: {\n visible: true,\n start: { visible: true, order: 0, style: { fill: startButtonColor } },\n pause: { visible: true, order: 1, style: { fill: pauseButtonColor } },\n backward: { visible: true, order: 2, style: { fill: backwardButtonColor } },\n forward: { visible: true, order: 3, position: 'end', style: { fill: forwardButtonColor } },\n },\n slider: {\n visible: true,\n railStyle: {\n visible: true,\n fill: railColor,\n [position === 'top' || position === 'bottom' ? 'height' : 'width']: 2,\n },\n trackStyle: {\n visible: true,\n fill: trackColor,\n [position === 'top' || position === 'bottom' ? 'height' : 'width']: 2,\n },\n handlerStyle: {\n visible: true,\n lineWidth: 2,\n stroke: sliderHandleBorderColor,\n fill: sliderHandleColor,\n size: 9,\n },\n },\n } as IPlayerSpec,\n } as unknown as ISpec\n}\n"],"names":["playerLine","spec","context","advancedVSeed","datasetReshapeInfo","chartType","baseConfig","result","datasetXY","player","id","unfoldInfo","encodingX","maxCount","autoPlay","interval","loop","position","railColor","trackColor","sliderHandleColor","sliderHandleBorderColor","startButtonColor","pauseButtonColor","backwardButtonColor","forwardButtonColor","uniqueXValues","Array","Set","d","a","b","step","specs","currentSize","currentXValues","frameData","limitCount","i","duration","undefined"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/player/playerPie.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/player/playerPie.ts"],"sourcesContent":["import type { IPlayerSpec, ISpec } from '@visactor/vchart'\nimport { groupBy } from 'remeda'\nimport type { Player, VChartSpecPipe } from 'src/types'\nimport { datasetXY } from '../dataset'\n\nexport const playerPie: VChartSpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { dimensions = [], datasetReshapeInfo, chartType, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { fontFamily?: string; player: Player }\n const result = datasetXY(spec, context)\n\n if (!baseConfig || !baseConfig.player) {\n return result\n }\n const { player } = baseConfig\n const fontFamily = player.fontFamily || baseConfig.fontFamily\n const textSize = player.fontSize ?? 36\n\n const id = datasetReshapeInfo[0].id\n const { unfoldInfo } = datasetReshapeInfo[0]\n const { encodingPlayer } = unfoldInfo\n const {\n maxCount,\n autoPlay = true,\n interval = 1000,\n loop = false,\n position,\n railColor,\n trackColor,\n sliderHandleColor,\n sliderHandleBorderColor,\n startButtonColor,\n pauseButtonColor,\n backwardButtonColor,\n forwardButtonColor,\n } = player\n\n const dataGroups = groupBy(advancedVSeed.dataset, (item) => item[encodingPlayer])\n if (result.data && 'values' in result.data) {\n result.data.values = []\n }\n\n const specs = Object.keys(dataGroups)\n .sort()\n .map((key) => {\n const items = dataGroups[key]\n const sortedItems = items\n return {\n data: {\n id: id,\n values: maxCount === false ? sortedItems : sortedItems.slice(0, maxCount as number),\n },\n }\n })\n\n const duration = interval\n const exchangeDuration = interval * 0.6\n\n const dataKey = dimensions.filter((d) => !encoding.player?.includes(d.id)).map((d) => d.id)\n\n const padding = 12\n return {\n ...result,\n dataKey,\n stackCornerRadius: undefined,\n animationUpdate: {\n pie: [\n {\n type: 'update',\n options: { excludeChannels: ['angle', 'startAngle', 'endAngle'] },\n easing: 'linear',\n duration,\n },\n {\n channel: ['angle', 'startAngle', 'endAngle'],\n easing: 'circInOut',\n duration: exchangeDuration,\n },\n ],\n point: [\n {\n type: 'update',\n easing: 'linear',\n duration,\n },\n ],\n line: [\n {\n type: 'update',\n easing: 'linear',\n duration,\n },\n ],\n },\n animationEnter: {\n pie: [\n {\n type: 'update',\n duration: exchangeDuration,\n easing: 'circInOut',\n },\n ],\n },\n animationExit: {\n pie: [\n {\n type: 'fadeOut',\n duration: exchangeDuration,\n },\n ],\n },\n customMark: [\n {\n type: 'text',\n dataId: 'year',\n style: {\n textBaseline: 'bottom',\n fontSize: textSize,\n textAlign: 'right',\n fontFamily,\n text: (datum: any) => datum[encodingPlayer],\n x: (_datum: any, ctx: any) => {\n return ctx.vchart.getChart().getCanvasRect()?.width - padding\n },\n y: (_datum: any, _ctx: any) => {\n return textSize + padding\n },\n fill: 'rgb(100, 100, 100)',\n fillOpacity: 0.25,\n },\n },\n ],\n player: {\n visible: true,\n auto: autoPlay,\n interval: interval,\n loop: loop,\n alternate: false,\n position: 'middle',\n orient: position,\n type: 'discrete',\n specs,\n controller: {\n visible: true,\n start: { visible: true, order: 0, style: { fill: startButtonColor } },\n pause: { visible: true, order: 1, style: { fill: pauseButtonColor } },\n backward: { visible: true, order: 2, style: { fill: backwardButtonColor } },\n forward: { visible: true, order: 3, position: 'end', style: { fill: forwardButtonColor } },\n },\n slider: {\n visible: true,\n railStyle: {\n visible: true,\n fill: railColor,\n [position === 'top' || position === 'bottom' ? 'height' : 'width']: 2,\n },\n trackStyle: {\n visible: true,\n fill: trackColor,\n [position === 'top' || position === 'bottom' ? 'height' : 'width']: 2,\n },\n handlerStyle: {\n visible: true,\n lineWidth: 2,\n stroke: sliderHandleBorderColor,\n fill: sliderHandleColor,\n size: 9,\n },\n },\n } as IPlayerSpec,\n } as unknown as ISpec\n}\n"],"names":["playerPie","spec","context","advancedVSeed","dimensions","datasetReshapeInfo","chartType","encoding","baseConfig","result","datasetXY","player","fontFamily","textSize","id","unfoldInfo","encodingPlayer","maxCount","autoPlay","interval","loop","position","railColor","trackColor","sliderHandleColor","sliderHandleBorderColor","startButtonColor","pauseButtonColor","backwardButtonColor","forwardButtonColor","dataGroups","groupBy","item","specs","Object","key","items","sortedItems","duration","exchangeDuration","dataKey","d","padding","undefined","datum","_datum","ctx","_ctx"],"mappings":"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"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/player/playerPie.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/player/playerPie.ts"],"sourcesContent":["import type { IPlayerSpec, ISpec } from '@visactor/vchart'\nimport { groupBy } from 'remeda'\nimport type { Player, VChartSpecPipe } from 'src/types'\nimport { datasetXY } from '../dataset'\n\nexport const playerPie: VChartSpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { dimensions = [], datasetReshapeInfo, chartType, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { fontFamily?: string; player: Player }\n const result = datasetXY(spec, context)\n\n if (!baseConfig || !baseConfig.player) {\n return result\n }\n const { player } = baseConfig\n const fontFamily = player.fontFamily || baseConfig.fontFamily\n const textSize = player.fontSize ?? 36\n\n const id = datasetReshapeInfo[0].id\n const { unfoldInfo } = datasetReshapeInfo[0]\n const { encodingPlayer } = unfoldInfo\n const {\n maxCount,\n autoPlay = true,\n interval = 1000,\n loop = false,\n position,\n railColor,\n trackColor,\n sliderHandleColor,\n sliderHandleBorderColor,\n startButtonColor,\n pauseButtonColor,\n backwardButtonColor,\n forwardButtonColor,\n } = player\n\n const dataGroups = groupBy(advancedVSeed.dataset, (item) => item[encodingPlayer])\n if (result.data && 'values' in result.data) {\n result.data.values = []\n }\n\n const specs = Object.keys(dataGroups)\n .sort()\n .map((key) => {\n const items = dataGroups[key]\n const sortedItems = items\n return {\n data: {\n id: id,\n values: maxCount === false ? sortedItems : sortedItems.slice(0, maxCount as number),\n },\n }\n })\n\n const duration = interval\n const exchangeDuration = interval * 0.6\n\n const dataKey = dimensions.filter((d) => !encoding.player?.includes(d.id)).map((d) => d.id)\n\n const padding = 12\n return {\n ...result,\n dataKey,\n stackCornerRadius: undefined,\n animationUpdate: {\n pie: [\n {\n type: 'update',\n options: { excludeChannels: ['angle', 'startAngle', 'endAngle'] },\n easing: 'linear',\n duration,\n },\n {\n channel: ['angle', 'startAngle', 'endAngle'],\n easing: 'circInOut',\n duration: exchangeDuration,\n },\n ],\n point: [\n {\n type: 'update',\n easing: 'linear',\n duration,\n },\n ],\n line: [\n {\n type: 'update',\n easing: 'linear',\n duration,\n },\n ],\n },\n animationEnter: {\n pie: [\n {\n type: 'update',\n duration: exchangeDuration,\n easing: 'circInOut',\n },\n ],\n },\n animationExit: {\n pie: [\n {\n type: 'fadeOut',\n duration: exchangeDuration,\n },\n ],\n },\n customMark: [\n {\n type: 'text',\n dataId: 'year',\n style: {\n textBaseline: 'bottom',\n fontSize: textSize,\n textAlign: 'right',\n fontFamily,\n text: (datum: any) => datum[encodingPlayer],\n x: (_datum: any, ctx: any) => {\n return ctx.vchart.getChart().getCanvasRect()?.width - padding\n },\n y: (_datum: any, _ctx: any) => {\n return textSize + padding\n },\n fill: 'rgb(100, 100, 100)',\n fillOpacity: 0.25,\n },\n },\n ],\n player: {\n visible: true,\n auto: autoPlay,\n interval: interval,\n loop: loop,\n alternate: false,\n position: 'middle',\n orient: position,\n type: 'discrete',\n specs,\n controller: {\n visible: true,\n start: { visible: true, order: 0, style: { fill: startButtonColor } },\n pause: { visible: true, order: 1, style: { fill: pauseButtonColor } },\n backward: { visible: true, order: 2, style: { fill: backwardButtonColor } },\n forward: { visible: true, order: 3, position: 'end', style: { fill: forwardButtonColor } },\n },\n slider: {\n visible: true,\n railStyle: {\n visible: true,\n fill: railColor,\n [position === 'top' || position === 'bottom' ? 'height' : 'width']: 2,\n },\n trackStyle: {\n visible: true,\n fill: trackColor,\n [position === 'top' || position === 'bottom' ? 'height' : 'width']: 2,\n },\n handlerStyle: {\n visible: true,\n lineWidth: 2,\n stroke: sliderHandleBorderColor,\n fill: sliderHandleColor,\n size: 9,\n },\n },\n } as IPlayerSpec,\n } as unknown as ISpec\n}\n"],"names":["playerPie","spec","context","advancedVSeed","dimensions","datasetReshapeInfo","chartType","encoding","baseConfig","result","datasetXY","player","fontFamily","textSize","id","unfoldInfo","encodingPlayer","maxCount","autoPlay","interval","loop","position","railColor","trackColor","sliderHandleColor","sliderHandleBorderColor","startButtonColor","pauseButtonColor","backwardButtonColor","forwardButtonColor","dataGroups","groupBy","item","specs","Object","key","items","sortedItems","duration","exchangeDuration","dataKey","d","padding","undefined","datum","_datum","ctx","_ctx"],"mappings":";;AAKO,MAAMA,YAA4B,CAACC,MAAMC;IAC9C,MAAM,EAAEC,aAAa,EAAE,GAAGD;IAC1B,MAAM,EAAEE,aAAa,EAAE,EAAEC,kBAAkB,EAAEC,SAAS,EAAEC,QAAQ,EAAE,GAAGJ;IACrE,MAAMK,aAAaL,cAAc,MAAM,CAACG,UAAU;IAClD,MAAMG,SAASC,UAAUT,MAAMC;IAE/B,IAAI,CAACM,cAAc,CAACA,WAAW,MAAM,EACnC,OAAOC;IAET,MAAM,EAAEE,MAAM,EAAE,GAAGH;IACnB,MAAMI,aAAaD,OAAO,UAAU,IAAIH,WAAW,UAAU;IAC7D,MAAMK,WAAWF,OAAO,QAAQ,IAAI;IAEpC,MAAMG,KAAKT,kBAAkB,CAAC,EAAE,CAAC,EAAE;IACnC,MAAM,EAAEU,UAAU,EAAE,GAAGV,kBAAkB,CAAC,EAAE;IAC5C,MAAM,EAAEW,cAAc,EAAE,GAAGD;IAC3B,MAAM,EACJE,QAAQ,EACRC,WAAW,IAAI,EACfC,WAAW,IAAI,EACfC,OAAO,KAAK,EACZC,QAAQ,EACRC,SAAS,EACTC,UAAU,EACVC,iBAAiB,EACjBC,uBAAuB,EACvBC,gBAAgB,EAChBC,gBAAgB,EAChBC,mBAAmB,EACnBC,kBAAkB,EACnB,GAAGlB;IAEJ,MAAMmB,aAAaC,QAAQ5B,cAAc,OAAO,EAAE,CAAC6B,OAASA,IAAI,CAAChB,eAAe;IAChF,IAAIP,OAAO,IAAI,IAAI,YAAYA,OAAO,IAAI,EACxCA,OAAO,IAAI,CAAC,MAAM,GAAG,EAAE;IAGzB,MAAMwB,QAAQC,OAAO,IAAI,CAACJ,YACvB,IAAI,GACJ,GAAG,CAAC,CAACK;QACJ,MAAMC,QAAQN,UAAU,CAACK,IAAI;QAC7B,MAAME,cAAcD;QACpB,OAAO;YACL,MAAM;gBACJ,IAAItB;gBACJ,QAAQG,AAAa,UAAbA,WAAqBoB,cAAcA,YAAY,KAAK,CAAC,GAAGpB;YAClE;QACF;IACF;IAEF,MAAMqB,WAAWnB;IACjB,MAAMoB,mBAAmBpB,AAAW,MAAXA;IAEzB,MAAMqB,UAAUpC,WAAW,MAAM,CAAC,CAACqC,IAAM,CAAClC,SAAS,MAAM,EAAE,SAASkC,EAAE,EAAE,GAAG,GAAG,CAAC,CAACA,IAAMA,EAAE,EAAE;IAE1F,MAAMC,UAAU;IAChB,OAAO;QACL,GAAGjC,MAAM;QACT+B;QACA,mBAAmBG;QACnB,iBAAiB;YACf,KAAK;gBACH;oBACE,MAAM;oBACN,SAAS;wBAAE,iBAAiB;4BAAC;4BAAS;4BAAc;yBAAW;oBAAC;oBAChE,QAAQ;oBACRL;gBACF;gBACA;oBACE,SAAS;wBAAC;wBAAS;wBAAc;qBAAW;oBAC5C,QAAQ;oBACR,UAAUC;gBACZ;aACD;YACD,OAAO;gBACL;oBACE,MAAM;oBACN,QAAQ;oBACRD;gBACF;aACD;YACD,MAAM;gBACJ;oBACE,MAAM;oBACN,QAAQ;oBACRA;gBACF;aACD;QACH;QACA,gBAAgB;YACd,KAAK;gBACH;oBACE,MAAM;oBACN,UAAUC;oBACV,QAAQ;gBACV;aACD;QACH;QACA,eAAe;YACb,KAAK;gBACH;oBACE,MAAM;oBACN,UAAUA;gBACZ;aACD;QACH;QACA,YAAY;YACV;gBACE,MAAM;gBACN,QAAQ;gBACR,OAAO;oBACL,cAAc;oBACd,UAAU1B;oBACV,WAAW;oBACXD;oBACA,MAAM,CAACgC,QAAeA,KAAK,CAAC5B,eAAe;oBAC3C,GAAG,CAAC6B,QAAaC,MACRA,IAAI,MAAM,CAAC,QAAQ,GAAG,aAAa,IAAI,QAAQJ;oBAExD,GAAG,CAACG,QAAaE,OACRlC,WAAW6B;oBAEpB,MAAM;oBACN,aAAa;gBACf;YACF;SACD;QACD,QAAQ;YACN,SAAS;YACT,MAAMxB;YACN,UAAUC;YACV,MAAMC;YACN,WAAW;YACX,UAAU;YACV,QAAQC;YACR,MAAM;YACNY;YACA,YAAY;gBACV,SAAS;gBACT,OAAO;oBAAE,SAAS;oBAAM,OAAO;oBAAG,OAAO;wBAAE,MAAMP;oBAAiB;gBAAE;gBACpE,OAAO;oBAAE,SAAS;oBAAM,OAAO;oBAAG,OAAO;wBAAE,MAAMC;oBAAiB;gBAAE;gBACpE,UAAU;oBAAE,SAAS;oBAAM,OAAO;oBAAG,OAAO;wBAAE,MAAMC;oBAAoB;gBAAE;gBAC1E,SAAS;oBAAE,SAAS;oBAAM,OAAO;oBAAG,UAAU;oBAAO,OAAO;wBAAE,MAAMC;oBAAmB;gBAAE;YAC3F;YACA,QAAQ;gBACN,SAAS;gBACT,WAAW;oBACT,SAAS;oBACT,MAAMP;oBACN,CAACD,AAAa,UAAbA,YAAsBA,AAAa,aAAbA,WAAwB,WAAW,QAAQ,EAAE;gBACtE;gBACA,YAAY;oBACV,SAAS;oBACT,MAAME;oBACN,CAACF,AAAa,UAAbA,YAAsBA,AAAa,aAAbA,WAAwB,WAAW,QAAQ,EAAE;gBACtE;gBACA,cAAc;oBACZ,SAAS;oBACT,WAAW;oBACX,QAAQI;oBACR,MAAMD;oBACN,MAAM;gBACR;YACF;QACF;IACF;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/player/playerScatter.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/player/playerScatter.ts"],"sourcesContent":["import type { IPlayerSpec, ISpec } from '@visactor/vchart'\nimport { groupBy } from 'remeda'\nimport type { Player, VChartSpecPipe } from 'src/types'\nimport { datasetScatter } from '../dataset'\n\nexport const playerScatter: VChartSpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { datasetReshapeInfo, dimensions = [], chartType, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { fontFamily?: string; player: Player }\n const result = datasetScatter(spec, context)\n\n if (!baseConfig || !baseConfig.player) {\n return result\n }\n const { player } = baseConfig\n const fontFamily = player.fontFamily || baseConfig.fontFamily\n const textSize = player.fontSize ?? 36\n\n const id = datasetReshapeInfo[0].id\n const { unfoldInfo } = datasetReshapeInfo[0]\n const { encodingPlayer } = unfoldInfo\n const {\n autoPlay = true,\n interval = 1000,\n loop = false,\n position,\n railColor,\n trackColor,\n sliderHandleColor,\n sliderHandleBorderColor,\n startButtonColor,\n pauseButtonColor,\n backwardButtonColor,\n forwardButtonColor,\n } = player\n\n const { maxCount } = player\n\n const dataGroups = groupBy(advancedVSeed.dataset, (item) => item[encodingPlayer])\n if (result.data && 'values' in result.data) {\n result.data.values = []\n }\n const specs = Object.values(dataGroups).map((items) => ({\n data: {\n id: id,\n values: maxCount ? items.slice(0, maxCount) : items,\n },\n }))\n\n const duration = interval\n const exchangeDuration = interval * 0.6\n const dataKey = dimensions.filter((d) => !encoding.player?.includes(d.id)).map((d) => d.id)\n const padding = 12\n return {\n ...result,\n dataKey,\n stackCornerRadius: undefined,\n animationUpdate: {\n bar: [\n {\n type: 'update',\n options: { excludeChannels: ['x'] },\n easing: 'linear',\n duration,\n },\n {\n channel: ['x'],\n easing: 'circInOut',\n duration: exchangeDuration,\n },\n ],\n point: [\n {\n type: 'update',\n easing: 'linear',\n duration,\n },\n ],\n line: [\n {\n type: 'update',\n easing: 'linear',\n duration,\n },\n ],\n axis: {\n duration: exchangeDuration,\n easing: 'circInOut',\n },\n },\n animationEnter: {\n bar: [\n {\n type: 'moveIn',\n duration: exchangeDuration,\n easing: 'circInOut',\n options: {\n direction: 'x',\n orient: 'negative',\n },\n },\n ],\n },\n animationExit: {\n bar: [\n {\n type: 'fadeOut',\n duration: exchangeDuration,\n },\n ],\n },\n customMark: [\n {\n type: 'text',\n dataId: 'year',\n style: {\n textBaseline: 'bottom',\n fontSize: textSize,\n textAlign: 'right',\n fontFamily,\n fontWeight: 600,\n text: (datum: any) => datum[encodingPlayer],\n x: (datum: any, ctx: any) => {\n return ctx.vchart.getChart().getCanvasRect()?.width - padding\n },\n y: (datum: any, ctx: any) => {\n return ctx.vchart.getChart().getCanvasRect()?.height - padding - textSize\n },\n fill: 'grey',\n fillOpacity: 0.5,\n },\n },\n ],\n player: {\n visible: true,\n auto: autoPlay,\n interval: interval,\n loop: loop,\n alternate: false,\n position: 'middle',\n orient: position,\n type: 'discrete',\n specs,\n controller: {\n visible: true,\n start: { visible: true, order: 0, style: { fill: startButtonColor } },\n pause: { visible: true, order: 1, style: { fill: pauseButtonColor } },\n backward: { visible: true, order: 2, style: { fill: backwardButtonColor } },\n forward: { visible: true, order: 3, position: 'end', style: { fill: forwardButtonColor } },\n },\n slider: {\n visible: true,\n railStyle: {\n visible: true,\n fill: railColor,\n [position === 'top' || position === 'bottom' ? 'height' : 'width']: 2,\n },\n trackStyle: {\n visible: true,\n fill: trackColor,\n [position === 'top' || position === 'bottom' ? 'height' : 'width']: 2,\n },\n handlerStyle: {\n visible: true,\n lineWidth: 2,\n stroke: sliderHandleBorderColor,\n fill: sliderHandleColor,\n size: 9,\n },\n },\n } as IPlayerSpec,\n } as unknown as ISpec\n}\n"],"names":["playerScatter","spec","context","advancedVSeed","datasetReshapeInfo","dimensions","chartType","encoding","baseConfig","result","datasetScatter","player","fontFamily","textSize","id","unfoldInfo","encodingPlayer","autoPlay","interval","loop","position","railColor","trackColor","sliderHandleColor","sliderHandleBorderColor","startButtonColor","pauseButtonColor","backwardButtonColor","forwardButtonColor","maxCount","dataGroups","groupBy","item","specs","Object","items","duration","exchangeDuration","dataKey","d","padding","undefined","datum","ctx"],"mappings":"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"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/player/playerScatter.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/player/playerScatter.ts"],"sourcesContent":["import type { IPlayerSpec, ISpec } from '@visactor/vchart'\nimport { groupBy } from 'remeda'\nimport type { Player, VChartSpecPipe } from 'src/types'\nimport { datasetScatter } from '../dataset'\n\nexport const playerScatter: VChartSpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { datasetReshapeInfo, dimensions = [], chartType, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { fontFamily?: string; player: Player }\n const result = datasetScatter(spec, context)\n\n if (!baseConfig || !baseConfig.player) {\n return result\n }\n const { player } = baseConfig\n const fontFamily = player.fontFamily || baseConfig.fontFamily\n const textSize = player.fontSize ?? 36\n\n const id = datasetReshapeInfo[0].id\n const { unfoldInfo } = datasetReshapeInfo[0]\n const { encodingPlayer } = unfoldInfo\n const {\n autoPlay = true,\n interval = 1000,\n loop = false,\n position,\n railColor,\n trackColor,\n sliderHandleColor,\n sliderHandleBorderColor,\n startButtonColor,\n pauseButtonColor,\n backwardButtonColor,\n forwardButtonColor,\n } = player\n\n const { maxCount } = player\n\n const dataGroups = groupBy(advancedVSeed.dataset, (item) => item[encodingPlayer])\n if (result.data && 'values' in result.data) {\n result.data.values = []\n }\n const specs = Object.values(dataGroups).map((items) => ({\n data: {\n id: id,\n values: maxCount ? items.slice(0, maxCount) : items,\n },\n }))\n\n const duration = interval\n const exchangeDuration = interval * 0.6\n const dataKey = dimensions.filter((d) => !encoding.player?.includes(d.id)).map((d) => d.id)\n const padding = 12\n return {\n ...result,\n dataKey,\n stackCornerRadius: undefined,\n animationUpdate: {\n bar: [\n {\n type: 'update',\n options: { excludeChannels: ['x'] },\n easing: 'linear',\n duration,\n },\n {\n channel: ['x'],\n easing: 'circInOut',\n duration: exchangeDuration,\n },\n ],\n point: [\n {\n type: 'update',\n easing: 'linear',\n duration,\n },\n ],\n line: [\n {\n type: 'update',\n easing: 'linear',\n duration,\n },\n ],\n axis: {\n duration: exchangeDuration,\n easing: 'circInOut',\n },\n },\n animationEnter: {\n bar: [\n {\n type: 'moveIn',\n duration: exchangeDuration,\n easing: 'circInOut',\n options: {\n direction: 'x',\n orient: 'negative',\n },\n },\n ],\n },\n animationExit: {\n bar: [\n {\n type: 'fadeOut',\n duration: exchangeDuration,\n },\n ],\n },\n customMark: [\n {\n type: 'text',\n dataId: 'year',\n style: {\n textBaseline: 'bottom',\n fontSize: textSize,\n textAlign: 'right',\n fontFamily,\n fontWeight: 600,\n text: (datum: any) => datum[encodingPlayer],\n x: (datum: any, ctx: any) => {\n return ctx.vchart.getChart().getCanvasRect()?.width - padding\n },\n y: (datum: any, ctx: any) => {\n return ctx.vchart.getChart().getCanvasRect()?.height - padding - textSize\n },\n fill: 'grey',\n fillOpacity: 0.5,\n },\n },\n ],\n player: {\n visible: true,\n auto: autoPlay,\n interval: interval,\n loop: loop,\n alternate: false,\n position: 'middle',\n orient: position,\n type: 'discrete',\n specs,\n controller: {\n visible: true,\n start: { visible: true, order: 0, style: { fill: startButtonColor } },\n pause: { visible: true, order: 1, style: { fill: pauseButtonColor } },\n backward: { visible: true, order: 2, style: { fill: backwardButtonColor } },\n forward: { visible: true, order: 3, position: 'end', style: { fill: forwardButtonColor } },\n },\n slider: {\n visible: true,\n railStyle: {\n visible: true,\n fill: railColor,\n [position === 'top' || position === 'bottom' ? 'height' : 'width']: 2,\n },\n trackStyle: {\n visible: true,\n fill: trackColor,\n [position === 'top' || position === 'bottom' ? 'height' : 'width']: 2,\n },\n handlerStyle: {\n visible: true,\n lineWidth: 2,\n stroke: sliderHandleBorderColor,\n fill: sliderHandleColor,\n size: 9,\n },\n },\n } as IPlayerSpec,\n } as unknown as ISpec\n}\n"],"names":["playerScatter","spec","context","advancedVSeed","datasetReshapeInfo","dimensions","chartType","encoding","baseConfig","result","datasetScatter","player","fontFamily","textSize","id","unfoldInfo","encodingPlayer","autoPlay","interval","loop","position","railColor","trackColor","sliderHandleColor","sliderHandleBorderColor","startButtonColor","pauseButtonColor","backwardButtonColor","forwardButtonColor","maxCount","dataGroups","groupBy","item","specs","Object","items","duration","exchangeDuration","dataKey","d","padding","undefined","datum","ctx"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/region/addRegionPadding.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/region/addRegionPadding.ts"],"sourcesContent":["import type { IPieChartSpec } from '@visactor/vchart'\nimport type { VChartSpecPipe } from 'src/types'\n\nexport const addRegionPadding: VChartSpecPipe = (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"],"names":["addRegionPadding","spec","result"],"mappings":"AAGO,MAAMA,mBAAmC,CAACC;IAC/C,MAAMC,SAAS;QAAE,GAAGD,IAAI;IAAC;IAEzB,IAAIC,OAAO,MAAM,IAAIA,OAAO,MAAM,CAAC,MAAM,GAAG,GAC1CA,OAAO,MAAM,CAAC,EAAE,CAAC,OAAO,GAAG;IAG7B,OAAOA;AACT"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/region/addRegionPadding.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/region/addRegionPadding.ts"],"sourcesContent":["import type { IPieChartSpec } from '@visactor/vchart'\nimport type { VChartSpecPipe } from 'src/types'\n\nexport const addRegionPadding: VChartSpecPipe = (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"],"names":["addRegionPadding","spec","result"],"mappings":"AAGO,MAAMA,mBAAmC,CAACC;IAC/C,MAAMC,SAAS;QAAE,GAAGD,IAAI;IAAC;IAEzB,IAAIC,OAAO,MAAM,IAAIA,OAAO,MAAM,CAAC,MAAM,GAAG,GAC1CA,OAAO,MAAM,CAAC,EAAE,CAAC,OAAO,GAAG;IAG7B,OAAOA;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/regressionLine/columnRegressionLine.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/regressionLine/columnRegressionLine.ts"],"sourcesContent":["import type { IBarChartSpec, ICartesianSeries, IChart, IVChart } from '@visactor/vchart'\nimport { isNullish } from 'remeda'\nimport { array, clamper, regressionPolynomial } from '@visactor/vutils'\nimport type {\n Datum,\n VChartSpecPipe,\n RegressionLineConfig,\n LinearRegressionLine,\n PolynomialRegressionLine,\n} from 'src/types'\nimport { defaultRegressionLineColor, getAlphaByConfidenceLevel } from './common'\n\nexport const columnPolynomialRegressionLine: VChartSpecPipe = (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.extensionMark) {\n result.extensionMark = []\n }\n\n lineList.forEach((line, lineIndex) => {\n if (line.enable === false) {\n return\n }\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 confidenceLevel = 0.95,\n shadowBlur,\n shadowColor,\n shadowOffsetX,\n shadowOffsetY,\n confidenceIntervalVisible = theme.confidenceIntervalVisible,\n } = line as LinearRegressionLine\n\n const childrenMarks: any[] = []\n\n ;(result.extensionMark as any[]).push({\n type: 'group',\n interactive: false,\n zIndex: 500,\n name: `polynomialRegressionLine-${lineIndex}`,\n dataId: (spec.data as any)?.id,\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 yClamper = clamper(0, 0 + 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 const degree = (line as PolynomialRegressionLine).degree ?? 2\n // 多项式拟合需要至少 degree + 1 个点\n const minPoints = degree + 1\n\n if (!fieldX || !fieldY || !data || data.length < minPoints || xValues.length < minPoints) {\n return null\n }\n\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 alpha: getAlphaByConfidenceLevel(confidenceLevel),\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)! + halfBandWidth,\n y: yClamper(s.dataToPositionY(d)!),\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)! + halfBandWidth,\n y: yClamper(s.dataToPositionY(d)!),\n y1: yClamper(s.dataToPositionY({ [fieldY]: datum.upper })!),\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 dataId: (spec.data as any)?.id,\n style: {\n stroke: false,\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 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 dataId: (spec.data as any)?.id,\n style: {\n lineWidth: lineWidth ?? theme.lineWidth,\n lineDash: lineDash ?? theme.lineDash,\n stroke: color ?? defaultRegressionLineColor,\n shadowBlur: shadowBlur ?? theme.shadowBlur,\n shadowColor: shadowColor ?? theme.shadowColor,\n shadowOffsetX: shadowOffsetX ?? theme.shadowOffsetX,\n shadowOffsetY: shadowOffsetY ?? theme.shadowOffsetY,\n points: (datum: any, ctx: any, opt: any) => {\n const parentNode = opt.mark?._product?.parent\n\n if (parentNode?.attribute?.data) {\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 dataId: (spec.data as any)?.id,\n dataKey: () => {\n return `polynomialRegressionLine-label-${lineIndex}`\n },\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"],"names":["columnPolynomialRegressionLine","spec","context","result","advancedVSeed","chartType","regressionLine","lineTheme","lineList","array","line","lineIndex","theme","color","lineWidth","lineDash","text","textColor","textFontSize","textFontWeight","confidenceIntervalOpacity","confidenceLevel","shadowBlur","shadowColor","shadowOffsetX","shadowOffsetY","confidenceIntervalVisible","childrenMarks","datum","ctx","vchart","chart","s","rect","yClamper","clamper","data","fieldX","fieldY","xValues","degree","minPoints","confidenceInterval","evaluateGrid","regressionPolynomial","xVal","index","filteredData","d","Math","undefined","getAlphaByConfidenceLevel","N","xAxisHelper","halfBandWidth","lineData","linePoints","intervalData","defaultRegressionLineColor","opt","parentNode","isNullish","points"],"mappings":"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"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/regressionLine/columnRegressionLine.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/regressionLine/columnRegressionLine.ts"],"sourcesContent":["import type { IBarChartSpec, ICartesianSeries, IChart, IVChart } from '@visactor/vchart'\nimport { isNullish } from 'remeda'\nimport { array, clamper, regressionPolynomial } from '@visactor/vutils'\nimport type {\n Datum,\n VChartSpecPipe,\n RegressionLineConfig,\n LinearRegressionLine,\n PolynomialRegressionLine,\n} from 'src/types'\nimport { defaultRegressionLineColor, getAlphaByConfidenceLevel } from './common'\n\nexport const columnPolynomialRegressionLine: VChartSpecPipe = (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.extensionMark) {\n result.extensionMark = []\n }\n\n lineList.forEach((line, lineIndex) => {\n if (line.enable === false) {\n return\n }\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 confidenceLevel = 0.95,\n shadowBlur,\n shadowColor,\n shadowOffsetX,\n shadowOffsetY,\n confidenceIntervalVisible = theme.confidenceIntervalVisible,\n } = line as LinearRegressionLine\n\n const childrenMarks: any[] = []\n\n ;(result.extensionMark as any[]).push({\n type: 'group',\n interactive: false,\n zIndex: 500,\n name: `polynomialRegressionLine-${lineIndex}`,\n dataId: (spec.data as any)?.id,\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 yClamper = clamper(0, 0 + 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 const degree = (line as PolynomialRegressionLine).degree ?? 2\n // 多项式拟合需要至少 degree + 1 个点\n const minPoints = degree + 1\n\n if (!fieldX || !fieldY || !data || data.length < minPoints || xValues.length < minPoints) {\n return null\n }\n\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 alpha: getAlphaByConfidenceLevel(confidenceLevel),\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)! + halfBandWidth,\n y: yClamper(s.dataToPositionY(d)!),\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)! + halfBandWidth,\n y: yClamper(s.dataToPositionY(d)!),\n y1: yClamper(s.dataToPositionY({ [fieldY]: datum.upper })!),\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 dataId: (spec.data as any)?.id,\n style: {\n stroke: false,\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 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 dataId: (spec.data as any)?.id,\n style: {\n lineWidth: lineWidth ?? theme.lineWidth,\n lineDash: lineDash ?? theme.lineDash,\n stroke: color ?? defaultRegressionLineColor,\n shadowBlur: shadowBlur ?? theme.shadowBlur,\n shadowColor: shadowColor ?? theme.shadowColor,\n shadowOffsetX: shadowOffsetX ?? theme.shadowOffsetX,\n shadowOffsetY: shadowOffsetY ?? theme.shadowOffsetY,\n points: (datum: any, ctx: any, opt: any) => {\n const parentNode = opt.mark?._product?.parent\n\n if (parentNode?.attribute?.data) {\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 dataId: (spec.data as any)?.id,\n dataKey: () => {\n return `polynomialRegressionLine-label-${lineIndex}`\n },\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"],"names":["columnPolynomialRegressionLine","spec","context","result","advancedVSeed","chartType","regressionLine","lineTheme","lineList","array","line","lineIndex","theme","color","lineWidth","lineDash","text","textColor","textFontSize","textFontWeight","confidenceIntervalOpacity","confidenceLevel","shadowBlur","shadowColor","shadowOffsetX","shadowOffsetY","confidenceIntervalVisible","childrenMarks","datum","ctx","vchart","chart","s","rect","yClamper","clamper","data","fieldX","fieldY","xValues","degree","minPoints","confidenceInterval","evaluateGrid","regressionPolynomial","xVal","index","filteredData","d","Math","undefined","getAlphaByConfidenceLevel","N","xAxisHelper","halfBandWidth","lineData","linePoints","intervalData","defaultRegressionLineColor","opt","parentNode","isNullish","points"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/regressionLine/common.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/regressionLine/common.ts"],"sourcesContent":["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\nexport const getAlphaByConfidenceLevel = (confidenceLevel: number = 0.95) => {\n return 1 - Math.max(Math.min(1, confidenceLevel), 0)\n}\n"],"names":["defaultRegressionLineColor","datum","ctx","opt","parentNode","defaultRegressionLineLabelX","points","defaultRegressionLineLabelY","getAlphaByConfidenceLevel","confidenceLevel","Math"],"mappings":"AAEO,MAAMA,6BAA6B,CAACC,OAAcC,KAAUC;IACjE,MAAMC,aAAaD,IAAI,IAAI,EAAE,UAAU;IACvC,IAAIC,YAAY,WAAW,MACzB,OAAOA,WAAW,SAAS,CAAC,IAAI,CAAC,KAAK;AAG1C;AAEO,MAAMC,8BAA8B,CAACJ,OAAYC,KAAUC;IAChE,MAAMC,aAAaD,IAAI,IAAI,EAAE,UAAU;IAEvC,IAAIC,YAAY,WAAW,MAAM,YAAY;QAC3C,MAAME,SAASF,WAAW,SAAS,CAAC,IAAI,CAAC,UAAU;QACnD,OAAOE,MAAM,CAACA,OAAO,MAAM,GAAG,EAAE,EAAE;IACpC;AAGF;AAEO,MAAMC,8BAA8B,CAACN,OAAYC,KAAUC;IAChE,MAAMC,aAAaD,IAAI,IAAI,EAAE,UAAU;IAEvC,IAAIC,YAAY,WAAW,MAAM,YAAY;QAC3C,MAAME,SAASF,WAAW,SAAS,CAAC,IAAI,CAAC,UAAU;QACnD,OAAOE,MAAM,CAACA,OAAO,MAAM,GAAG,EAAE,EAAE;IACpC;AAGF;AAEO,MAAME,4BAA4B,CAACC,kBAA0B,IAAI,GAC/D,IAAIC,KAAK,GAAG,CAACA,KAAK,GAAG,CAAC,GAAGD,kBAAkB"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/regressionLine/common.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/regressionLine/common.ts"],"sourcesContent":["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\nexport const getAlphaByConfidenceLevel = (confidenceLevel: number = 0.95) => {\n return 1 - Math.max(Math.min(1, confidenceLevel), 0)\n}\n"],"names":["defaultRegressionLineColor","datum","ctx","opt","parentNode","defaultRegressionLineLabelX","points","defaultRegressionLineLabelY","getAlphaByConfidenceLevel","confidenceLevel","Math"],"mappings":"AAEO,MAAMA,6BAA6B,CAACC,OAAcC,KAAUC;IACjE,MAAMC,aAAaD,IAAI,IAAI,EAAE,UAAU;IACvC,IAAIC,YAAY,WAAW,MACzB,OAAOA,WAAW,SAAS,CAAC,IAAI,CAAC,KAAK;AAG1C;AAEO,MAAMC,8BAA8B,CAACJ,OAAYC,KAAUC;IAChE,MAAMC,aAAaD,IAAI,IAAI,EAAE,UAAU;IAEvC,IAAIC,YAAY,WAAW,MAAM,YAAY;QAC3C,MAAME,SAASF,WAAW,SAAS,CAAC,IAAI,CAAC,UAAU;QACnD,OAAOE,MAAM,CAACA,OAAO,MAAM,GAAG,EAAE,EAAE;IACpC;AAGF;AAEO,MAAMC,8BAA8B,CAACN,OAAYC,KAAUC;IAChE,MAAMC,aAAaD,IAAI,IAAI,EAAE,UAAU;IAEvC,IAAIC,YAAY,WAAW,MAAM,YAAY;QAC3C,MAAME,SAASF,WAAW,SAAS,CAAC,IAAI,CAAC,UAAU;QACnD,OAAOE,MAAM,CAACA,OAAO,MAAM,GAAG,EAAE,EAAE;IACpC;AAGF;AAEO,MAAME,4BAA4B,CAACC,kBAA0B,IAAI,GAC/D,IAAIC,KAAK,GAAG,CAACA,KAAK,GAAG,CAAC,GAAGD,kBAAkB"}
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/regressionLine/ecdfRegressionLine.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/regressionLine/ecdfRegressionLine.ts"],"sourcesContent":["import type { ICartesianSeries, IChart, IHistogramChartSpec, IVChart } from '@visactor/vchart'\nimport { isNullish, uniqueBy } from 'remeda'\nimport { ecdf, array, isArray } from '@visactor/vutils'\nimport type { Datum, Dimension, VChartSpecPipe, Encoding, RegressionLineConfig, EcdfRegressionLine } from 'src/types'\nimport { defaultRegressionLineColor, defaultRegressionLineLabelX, defaultRegressionLineLabelY } from './common'\n\nexport const ecdfRegressionLine: VChartSpecPipe = (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.extensionMark) {\n result.extensionMark = []\n }\n\n lineList.forEach((line, lineIndex) => {\n if (line.enable === false) {\n return\n }\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.extensionMark as any[]).push({\n type: 'group',\n interactive: false,\n zIndex: 500,\n name: `ecdfRegressionLine-${lineIndex}`,\n dataId: (spec.data as any)?.id,\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\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])\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)!,\n y: scaleR(ld.y as number),\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 dataId: (spec.data as any)?.id,\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 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 dataId: (spec.data as any)?.id,\n dataKey: () => {\n return `ecdfRegressionLine-label-${lineIndex}`\n },\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 // add percent axis of ecdf\n const leftAxis = result.axes?.find((v) => v.orient === 'left')\n if (leftAxis && lineList.length) {\n result.axes?.push({\n visible: true,\n orient: 'right',\n type: 'linear',\n base: 10,\n min: 0,\n max: 1,\n domainLine: {\n ...leftAxis.domainLine,\n },\n grid: {\n visible: false,\n },\n tick: {\n ...leftAxis.tick,\n },\n title: {\n ...leftAxis.title,\n visible: false,\n },\n label: {\n ...leftAxis.label,\n visible: true,\n formatMethod: (v) => {\n const text = isArray(v) ? v[0] : v\n return `${(+text * 100).toFixed(1)}%`\n },\n },\n })\n }\n\n return result\n}\n"],"names":["ecdfRegressionLine","spec","context","result","advancedVSeed","vseed","chartType","encoding","dimensions","regressionLine","dataset","lineTheme","rowColumnFields","uniqueBy","dim","item","lineList","array","ecdfLine","line","lineIndex","theme","color","lineWidth","lineDash","text","textColor","textFontSize","textFontWeight","childrenMarks","datum","ctx","vchart","chart","series","s","fieldX","scaleY","viewData","simpleData","entry","d","res","ecdf","N","Math","lineData","yRange","y0","y1","scaleR","e","linePoints","ld","defaultRegressionLineColor","opt","parentNode","isNullish","defaultRegressionLineLabelX","defaultRegressionLineLabelY","leftAxis","v","isArray"],"mappings":"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"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/regressionLine/ecdfRegressionLine.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/regressionLine/ecdfRegressionLine.ts"],"sourcesContent":["import type { ICartesianSeries, IChart, IHistogramChartSpec, IVChart } from '@visactor/vchart'\nimport { isNullish, uniqueBy } from 'remeda'\nimport { ecdf, array, isArray } from '@visactor/vutils'\nimport type { Datum, Dimension, VChartSpecPipe, Encoding, RegressionLineConfig, EcdfRegressionLine } from 'src/types'\nimport { defaultRegressionLineColor, defaultRegressionLineLabelX, defaultRegressionLineLabelY } from './common'\n\nexport const ecdfRegressionLine: VChartSpecPipe = (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.extensionMark) {\n result.extensionMark = []\n }\n\n lineList.forEach((line, lineIndex) => {\n if (line.enable === false) {\n return\n }\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.extensionMark as any[]).push({\n type: 'group',\n interactive: false,\n zIndex: 500,\n name: `ecdfRegressionLine-${lineIndex}`,\n dataId: (spec.data as any)?.id,\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\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])\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)!,\n y: scaleR(ld.y as number),\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 dataId: (spec.data as any)?.id,\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 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 dataId: (spec.data as any)?.id,\n dataKey: () => {\n return `ecdfRegressionLine-label-${lineIndex}`\n },\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 // add percent axis of ecdf\n const leftAxis = result.axes?.find((v) => v.orient === 'left')\n if (leftAxis && lineList.length) {\n result.axes?.push({\n visible: true,\n orient: 'right',\n type: 'linear',\n base: 10,\n min: 0,\n max: 1,\n domainLine: {\n ...leftAxis.domainLine,\n },\n grid: {\n visible: false,\n },\n tick: {\n ...leftAxis.tick,\n },\n title: {\n ...leftAxis.title,\n visible: false,\n },\n label: {\n ...leftAxis.label,\n visible: true,\n formatMethod: (v) => {\n const text = isArray(v) ? v[0] : v\n return `${(+text * 100).toFixed(1)}%`\n },\n },\n })\n }\n\n return result\n}\n"],"names":["ecdfRegressionLine","spec","context","result","advancedVSeed","vseed","chartType","encoding","dimensions","regressionLine","dataset","lineTheme","rowColumnFields","uniqueBy","dim","item","lineList","array","ecdfLine","line","lineIndex","theme","color","lineWidth","lineDash","text","textColor","textFontSize","textFontWeight","childrenMarks","datum","ctx","vchart","chart","series","s","fieldX","scaleY","viewData","simpleData","entry","d","res","ecdf","N","Math","lineData","yRange","y0","y1","scaleR","e","linePoints","ld","defaultRegressionLineColor","opt","parentNode","isNullish","defaultRegressionLineLabelX","defaultRegressionLineLabelY","leftAxis","v","isArray"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/regressionLine/kdeRegressionLine.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/regressionLine/kdeRegressionLine.ts"],"sourcesContent":["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, VChartSpecPipe, Encoding, RegressionLineConfig, KdeRegressionLine } from 'src/types'\nimport { defaultRegressionLineColor, defaultRegressionLineLabelX, defaultRegressionLineLabelY } from './common'\n\nexport const kdeRegressionLine: VChartSpecPipe = (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 const binValueType = advancedVSeed.config[chartType as 'histogram']?.binValueType\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.extensionMark) {\n result.extensionMark = []\n }\n\n lineList.forEach((line, lineIndex) => {\n if (line.enable === false) {\n return\n }\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.extensionMark as any[]).push({\n type: 'group',\n interactive: false,\n zIndex: 500,\n name: `kdeRegressionLine-${lineIndex}`,\n dataId: (spec.data as any)?.id,\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\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])\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\n // 根据 binValueType 决定如何转换 KDE 密度值\n // - 频次模式 (count): 频次 = 密度 × 样本数 × 带宽\n // - 百分比模式 (percentage): 百分比 = 密度 × 带宽\n const scaleR = (k: number) => {\n if (binValueType === 'percentage') {\n // 百分比模式:y轴是0-1的百分比,KDE密度值乘以带宽即可\n return scaleY.scale(k * res.bandwidth)\n } else {\n // 频次模式:y轴是实际计数,需要乘以样本数量\n return scaleY.scale(k * simpleData.length * res.bandwidth)\n }\n }\n\n const linePoints = lineData.map((ld: Datum) => {\n const d = { [fieldX]: ld.x }\n return {\n x: s.dataToPositionX(d)!,\n y: scaleR(ld.y as number),\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 dataId: (spec.data as any)?.id,\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 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 dataId: (spec.data as any)?.id,\n dataKey: () => {\n return `kdeRegressionLine-label-${lineIndex}`\n },\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"],"names":["kdeRegressionLine","spec","context","result","advancedVSeed","vseed","chartType","encoding","dimensions","regressionLine","dataset","lineTheme","binValueType","rowColumnFields","uniqueBy","dim","item","lineList","array","kdeLine","line","lineIndex","theme","color","lineWidth","lineDash","text","textColor","textFontSize","textFontWeight","childrenMarks","datum","ctx","vchart","chart","series","s","fieldX","scaleY","viewData","simpleData","entry","d","res","kde","Math","BinEndMeasureId","BinStartMeasureId","N","lineData","scaleR","k","linePoints","ld","defaultRegressionLineColor","opt","parentNode","isNullish","defaultRegressionLineLabelX","defaultRegressionLineLabelY"],"mappings":"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"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/regressionLine/kdeRegressionLine.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/regressionLine/kdeRegressionLine.ts"],"sourcesContent":["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, VChartSpecPipe, Encoding, RegressionLineConfig, KdeRegressionLine } from 'src/types'\nimport { defaultRegressionLineColor, defaultRegressionLineLabelX, defaultRegressionLineLabelY } from './common'\n\nexport const kdeRegressionLine: VChartSpecPipe = (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 const binValueType = advancedVSeed.config[chartType as 'histogram']?.binValueType\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.extensionMark) {\n result.extensionMark = []\n }\n\n lineList.forEach((line, lineIndex) => {\n if (line.enable === false) {\n return\n }\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.extensionMark as any[]).push({\n type: 'group',\n interactive: false,\n zIndex: 500,\n name: `kdeRegressionLine-${lineIndex}`,\n dataId: (spec.data as any)?.id,\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\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])\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\n // 根据 binValueType 决定如何转换 KDE 密度值\n // - 频次模式 (count): 频次 = 密度 × 样本数 × 带宽\n // - 百分比模式 (percentage): 百分比 = 密度 × 带宽\n const scaleR = (k: number) => {\n if (binValueType === 'percentage') {\n // 百分比模式:y轴是0-1的百分比,KDE密度值乘以带宽即可\n return scaleY.scale(k * res.bandwidth)\n } else {\n // 频次模式:y轴是实际计数,需要乘以样本数量\n return scaleY.scale(k * simpleData.length * res.bandwidth)\n }\n }\n\n const linePoints = lineData.map((ld: Datum) => {\n const d = { [fieldX]: ld.x }\n return {\n x: s.dataToPositionX(d)!,\n y: scaleR(ld.y as number),\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 dataId: (spec.data as any)?.id,\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 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 dataId: (spec.data as any)?.id,\n dataKey: () => {\n return `kdeRegressionLine-label-${lineIndex}`\n },\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"],"names":["kdeRegressionLine","spec","context","result","advancedVSeed","vseed","chartType","encoding","dimensions","regressionLine","dataset","lineTheme","binValueType","rowColumnFields","uniqueBy","dim","item","lineList","array","kdeLine","line","lineIndex","theme","color","lineWidth","lineDash","text","textColor","textFontSize","textFontWeight","childrenMarks","datum","ctx","vchart","chart","series","s","fieldX","scaleY","viewData","simpleData","entry","d","res","kde","Math","BinEndMeasureId","BinStartMeasureId","N","lineData","scaleR","k","linePoints","ld","defaultRegressionLineColor","opt","parentNode","isNullish","defaultRegressionLineLabelX","defaultRegressionLineLabelY"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/regressionLine/linearRegressionLine.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/regressionLine/linearRegressionLine.ts"],"sourcesContent":["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 VChartSpecPipe,\n RegressionLineConfig,\n LinearRegressionLine,\n PolynomialRegressionLine,\n SpecPipelineContext,\n LogisticRegressionLine,\n LowessRegressionLine,\n} from 'src/types'\nimport { getAlphaByConfidenceLevel } from './common'\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 = getDefaultRegressionOptions,\n getMinPoints: (lineConfig: any) => number = () => 2,\n): VChartSpecPipe => {\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.extensionMark) {\n result.extensionMark = []\n }\n\n lineList.forEach((line, lineIndex) => {\n if (line.enable === false) {\n return\n }\n\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 shadowBlur,\n shadowColor,\n shadowOffsetX,\n shadowOffsetY,\n confidenceIntervalVisible = theme.confidenceIntervalVisible,\n } = line as LinearRegressionLine\n\n const childrenMarks: any[] = []\n\n ;(result.extensionMark as any[]).push({\n type: 'group',\n interactive: false,\n zIndex: 500,\n name: `${type}-${lineIndex}`,\n layoutType: 'region-relative',\n dataId: (spec.data as any)?.id,\n animation: false,\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 yClamper = clamper(0, 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 const minPoints = getMinPoints(line)\n\n if (groupData.length < minPoints) {\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: { x: number; y: number }[] = []\n\n lineData.forEach((ld: Datum, index: number) => {\n const d = { [fieldX]: ld.x, [fieldY]: ld.y }\n const x = s.dataToPositionX(d)!\n const y = yClamper(s.dataToPositionY(d)!)\n\n if (segments.length && index === 0) {\n segments[segments.length - 1].linePoints.push({ x, y: NaN }) // 断开线段用的\n }\n\n linePoints.push({\n x,\n y,\n })\n })\n\n const segment: {\n color: string\n linePoints: { x: number; y: number }[]\n areaPoints?: { x: number; y: number; y1: number }[]\n } = {\n color: mainColor,\n linePoints,\n }\n\n if (confidenceIntervalVisible) {\n const intervalData = confidenceInterval(N)\n const areaPoints: { x: number; y: number; y1: number }[] = []\n\n intervalData.map((datum: Datum, index: number) => {\n const d = { [fieldX]: datum.x, [fieldY]: datum.lower }\n const x = s.dataToPositionX(d)!\n const y = yClamper(s.dataToPositionY(d)!)\n const y1 = yClamper(s.dataToPositionY({ [fieldY]: datum.upper })!)\n\n if (segments.length && index === 0) {\n segments[segments.length - 1].areaPoints!.push({ x, y: NaN, y1: NaN }) // 断开线段用的\n }\n\n areaPoints.push({ x, y, y1 })\n })\n\n segment.areaPoints = areaPoints\n }\n\n segments.push(segment)\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 dataId: (spec.data as any)?.id,\n style: {\n stroke: false,\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) {\n const data = parentNode.finalAttribute?.data ?? parentNode.attribute?.data\n\n if (data?.length) {\n return data.map((d: any) => {\n return {\n points: d.areaPoints ?? [],\n fill: d.color,\n }\n })\n }\n }\n\n return []\n },\n },\n })\n }\n\n childrenMarks.push({\n type: 'line',\n interactive: false,\n zIndex: 500,\n animation: false,\n dataId: (spec.data as any)?.id,\n style: {\n lineWidth: lineWidth ?? theme.lineWidth,\n lineDash: lineDash ?? theme.lineDash,\n stroke: 'red', // vrender bug,必须要设置一个全局的stroke,才会绘制\n shadowBlur: shadowBlur ?? theme.shadowBlur,\n shadowColor: shadowColor ?? theme.shadowColor,\n shadowOffsetX: shadowOffsetX ?? theme.shadowOffsetX,\n shadowOffsetY: shadowOffsetY ?? theme.shadowOffsetY,\n segments: (datum: any, ctx: any, opt: any) => {\n const parentNode = opt.mark?._product?.parent\n\n if (parentNode) {\n const data = parentNode.finalAttribute?.data ?? parentNode.attribute?.data\n if (data?.length) {\n return data.map((d: any) => {\n return {\n points: d.linePoints,\n stroke: d.color,\n }\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 animation: false,\n dataId: (spec.data as any)?.id,\n dataKey: () => {\n return `regressionLine-label-${lineIndex}`\n },\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 VChartSpecPipe\n}\n\nconst getDefaultRegressionOptions = (\n lineConfig: PolynomialRegressionLine | LinearRegressionLine | LogisticRegressionLine | LowessRegressionLine,\n) => {\n const alpha = getAlphaByConfidenceLevel(lineConfig?.confidenceLevel)\n return { alpha }\n}\n\nexport const linearRegressionLine: VChartSpecPipe = generateRegressionLinePipe(\n 'linearRegressionLine',\n regressionLinear,\n getDefaultRegressionOptions,\n)\nexport const lowessRegressionLine: VChartSpecPipe = generateRegressionLinePipe(\n 'lowessRegressionLine',\n regressionLowess,\n getDefaultRegressionOptions,\n)\nexport const polynomialRegressionLine: VChartSpecPipe = generateRegressionLinePipe(\n 'polynomialRegressionLine',\n regressionPolynomial,\n (lineConfig: PolynomialRegressionLine) => {\n return { ...getDefaultRegressionOptions(lineConfig), degree: lineConfig.degree ?? 2 }\n },\n (lineConfig: PolynomialRegressionLine) => (lineConfig.degree ?? 2) + 1,\n)\nexport const logisticRegressionLine: VChartSpecPipe = generateRegressionLinePipe(\n 'logisticRegressionLine',\n regressionLogistic,\n getDefaultRegressionOptions,\n)\n"],"names":["generateRegressionLinePipe","type","regressionFunction","getOptions","getDefaultRegressionOptions","getMinPoints","spec","context","result","advancedVSeed","chartType","regressionLine","lineTheme","lineList","array","line","lineIndex","theme","color","lineWidth","lineDash","text","textColor","textFontSize","textFontWeight","confidenceIntervalOpacity","shadowBlur","shadowColor","shadowOffsetX","shadowOffsetY","confidenceIntervalVisible","childrenMarks","datum","ctx","vchart","chart","s","rect","segments","yClamper","clamper","colorAttrOptions","groups","data","fieldX","fieldY","undefined","group","groupData","d","minPoints","confidenceInterval","evaluateGrid","N","Math","mainColor","lineData","linePoints","ld","index","x","y","NaN","segment","intervalData","areaPoints","y1","opt","parentNode","isNullish","point","lineConfig","alpha","getAlphaByConfidenceLevel","linearRegressionLine","regressionLinear","lowessRegressionLine","regressionLowess","polynomialRegressionLine","regressionPolynomial","logisticRegressionLine","regressionLogistic"],"mappings":"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"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/regressionLine/linearRegressionLine.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/regressionLine/linearRegressionLine.ts"],"sourcesContent":["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 VChartSpecPipe,\n RegressionLineConfig,\n LinearRegressionLine,\n PolynomialRegressionLine,\n SpecPipelineContext,\n LogisticRegressionLine,\n LowessRegressionLine,\n} from 'src/types'\nimport { getAlphaByConfidenceLevel } from './common'\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 = getDefaultRegressionOptions,\n getMinPoints: (lineConfig: any) => number = () => 2,\n): VChartSpecPipe => {\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.extensionMark) {\n result.extensionMark = []\n }\n\n lineList.forEach((line, lineIndex) => {\n if (line.enable === false) {\n return\n }\n\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 shadowBlur,\n shadowColor,\n shadowOffsetX,\n shadowOffsetY,\n confidenceIntervalVisible = theme.confidenceIntervalVisible,\n } = line as LinearRegressionLine\n\n const childrenMarks: any[] = []\n\n ;(result.extensionMark as any[]).push({\n type: 'group',\n interactive: false,\n zIndex: 500,\n name: `${type}-${lineIndex}`,\n layoutType: 'region-relative',\n dataId: (spec.data as any)?.id,\n animation: false,\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 yClamper = clamper(0, 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 const minPoints = getMinPoints(line)\n\n if (groupData.length < minPoints) {\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: { x: number; y: number }[] = []\n\n lineData.forEach((ld: Datum, index: number) => {\n const d = { [fieldX]: ld.x, [fieldY]: ld.y }\n const x = s.dataToPositionX(d)!\n const y = yClamper(s.dataToPositionY(d)!)\n\n if (segments.length && index === 0) {\n segments[segments.length - 1].linePoints.push({ x, y: NaN }) // 断开线段用的\n }\n\n linePoints.push({\n x,\n y,\n })\n })\n\n const segment: {\n color: string\n linePoints: { x: number; y: number }[]\n areaPoints?: { x: number; y: number; y1: number }[]\n } = {\n color: mainColor,\n linePoints,\n }\n\n if (confidenceIntervalVisible) {\n const intervalData = confidenceInterval(N)\n const areaPoints: { x: number; y: number; y1: number }[] = []\n\n intervalData.map((datum: Datum, index: number) => {\n const d = { [fieldX]: datum.x, [fieldY]: datum.lower }\n const x = s.dataToPositionX(d)!\n const y = yClamper(s.dataToPositionY(d)!)\n const y1 = yClamper(s.dataToPositionY({ [fieldY]: datum.upper })!)\n\n if (segments.length && index === 0) {\n segments[segments.length - 1].areaPoints!.push({ x, y: NaN, y1: NaN }) // 断开线段用的\n }\n\n areaPoints.push({ x, y, y1 })\n })\n\n segment.areaPoints = areaPoints\n }\n\n segments.push(segment)\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 dataId: (spec.data as any)?.id,\n style: {\n stroke: false,\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) {\n const data = parentNode.finalAttribute?.data ?? parentNode.attribute?.data\n\n if (data?.length) {\n return data.map((d: any) => {\n return {\n points: d.areaPoints ?? [],\n fill: d.color,\n }\n })\n }\n }\n\n return []\n },\n },\n })\n }\n\n childrenMarks.push({\n type: 'line',\n interactive: false,\n zIndex: 500,\n animation: false,\n dataId: (spec.data as any)?.id,\n style: {\n lineWidth: lineWidth ?? theme.lineWidth,\n lineDash: lineDash ?? theme.lineDash,\n stroke: 'red', // vrender bug,必须要设置一个全局的stroke,才会绘制\n shadowBlur: shadowBlur ?? theme.shadowBlur,\n shadowColor: shadowColor ?? theme.shadowColor,\n shadowOffsetX: shadowOffsetX ?? theme.shadowOffsetX,\n shadowOffsetY: shadowOffsetY ?? theme.shadowOffsetY,\n segments: (datum: any, ctx: any, opt: any) => {\n const parentNode = opt.mark?._product?.parent\n\n if (parentNode) {\n const data = parentNode.finalAttribute?.data ?? parentNode.attribute?.data\n if (data?.length) {\n return data.map((d: any) => {\n return {\n points: d.linePoints,\n stroke: d.color,\n }\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 animation: false,\n dataId: (spec.data as any)?.id,\n dataKey: () => {\n return `regressionLine-label-${lineIndex}`\n },\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 VChartSpecPipe\n}\n\nconst getDefaultRegressionOptions = (\n lineConfig: PolynomialRegressionLine | LinearRegressionLine | LogisticRegressionLine | LowessRegressionLine,\n) => {\n const alpha = getAlphaByConfidenceLevel(lineConfig?.confidenceLevel)\n return { alpha }\n}\n\nexport const linearRegressionLine: VChartSpecPipe = generateRegressionLinePipe(\n 'linearRegressionLine',\n regressionLinear,\n getDefaultRegressionOptions,\n)\nexport const lowessRegressionLine: VChartSpecPipe = generateRegressionLinePipe(\n 'lowessRegressionLine',\n regressionLowess,\n getDefaultRegressionOptions,\n)\nexport const polynomialRegressionLine: VChartSpecPipe = generateRegressionLinePipe(\n 'polynomialRegressionLine',\n regressionPolynomial,\n (lineConfig: PolynomialRegressionLine) => {\n return { ...getDefaultRegressionOptions(lineConfig), degree: lineConfig.degree ?? 2 }\n },\n (lineConfig: PolynomialRegressionLine) => (lineConfig.degree ?? 2) + 1,\n)\nexport const logisticRegressionLine: VChartSpecPipe = generateRegressionLinePipe(\n 'logisticRegressionLine',\n regressionLogistic,\n getDefaultRegressionOptions,\n)\n"],"names":["generateRegressionLinePipe","type","regressionFunction","getOptions","getDefaultRegressionOptions","getMinPoints","spec","context","result","advancedVSeed","chartType","regressionLine","lineTheme","lineList","array","line","lineIndex","theme","color","lineWidth","lineDash","text","textColor","textFontSize","textFontWeight","confidenceIntervalOpacity","shadowBlur","shadowColor","shadowOffsetX","shadowOffsetY","confidenceIntervalVisible","childrenMarks","datum","ctx","vchart","chart","s","rect","segments","yClamper","clamper","colorAttrOptions","groups","data","fieldX","fieldY","undefined","group","groupData","d","minPoints","confidenceInterval","evaluateGrid","N","Math","mainColor","lineData","linePoints","ld","index","x","y","NaN","segment","intervalData","areaPoints","y1","opt","parentNode","isNullish","point","lineConfig","alpha","getAlphaByConfidenceLevel","linearRegressionLine","regressionLinear","lowessRegressionLine","regressionLowess","polynomialRegressionLine","regressionPolynomial","logisticRegressionLine","regressionLogistic"],"mappings":"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"}
@@ -1,2 +1 @@
1
- import { series, seriesDualAxis } from "./series.js";
2
- export { series, seriesDualAxis };
1
+ export { series, seriesDualAxis } from "./series.js";
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/series/series.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/series/series.ts"],"sourcesContent":["import type {\n ChartType,\n Dataset,\n DualAxisMeasure,\n DualAxisOptions,\n SpecPipelineContext,\n VChartSpecPipe,\n} from 'src/types'\nimport { DEFAULT_DUAL_CHART_TYPE, execPipeline } from '../../../../utils'\nimport type { ICommonChartSpec, ILineSeriesSpec, ISpec } from '@visactor/vchart'\nimport { FoldPrimaryMeasureValue } from 'src/dataReshape/constant'\n\nexport const series = (\n pipeByAxis: ((options: DualAxisOptions) => VChartSpecPipe)[],\n pipes: VChartSpecPipe[],\n): VChartSpecPipe => {\n const result = {\n type: 'common',\n padding: 0,\n region: [\n {\n clip: true,\n },\n ],\n } as ICommonChartSpec\n\n return (_: Partial<ISpec>, context: SpecPipelineContext) => {\n const { advancedVSeed } = context\n const { datasetReshapeInfo, reshapeMeasures = [] } = advancedVSeed\n const { foldInfoList = [], index } = datasetReshapeInfo[0]!\n\n result.series = foldInfoList!.map((foldInfo) => {\n const measureId = Object.keys(foldInfo.foldMap)[0]\n const axisType = foldInfo.measureValue === `${FoldPrimaryMeasureValue}${index}` ? 'primary' : 'secondary'\n const measure = (reshapeMeasures[index] ?? []).find((m) => m.id === measureId)!\n\n const options: DualAxisOptions = {\n axisType,\n chartType: ((measure as DualAxisMeasure)?.chartType ??\n (axisType === 'primary' ? DEFAULT_DUAL_CHART_TYPE.primary : DEFAULT_DUAL_CHART_TYPE.secondary)) as ChartType,\n foldInfo,\n }\n const pipeline = [...pipeByAxis.map((p) => p(options)), ...pipes]\n return execPipeline<ISpec, 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 = (\n pipeByAxis: ((options: DualAxisOptions) => VChartSpecPipe)[],\n pipes: VChartSpecPipe[],\n): VChartSpecPipe => {\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 return (_: Partial<ISpec>, context: SpecPipelineContext) => {\n const { advancedVSeed } = context\n const { datasetReshapeInfo, dataset, reshapeMeasures = [] } = advancedVSeed\n\n result.series = dataset.map((d, index) => {\n const seriesContext = {\n ...context,\n advancedVSeed: {\n ...advancedVSeed,\n dataset: d as Dataset,\n },\n }\n\n const foldInfo = datasetReshapeInfo[0]!.foldInfoList![index]\n const measureId = Object.keys(foldInfo.foldMap)[0]\n const axisType = foldInfo.measureValue === FoldPrimaryMeasureValue ? 'primary' : 'secondary'\n const measure = (reshapeMeasures[0] ?? []).find((m) => m.id === measureId)!\n\n const options: DualAxisOptions = {\n axisType,\n chartType: ((measure as DualAxisMeasure)?.chartType ??\n (axisType === 'primary' ? DEFAULT_DUAL_CHART_TYPE.primary : DEFAULT_DUAL_CHART_TYPE.secondary)) as ChartType,\n foldInfo,\n }\n const pipeline = [...pipeByAxis.map((p) => p(options)), ...pipes]\n return execPipeline<ISpec, SpecPipelineContext>(pipeline, seriesContext, {})\n }) as ILineSeriesSpec[]\n\n return result\n }\n}\n"],"names":["series","pipeByAxis","pipes","result","_","context","advancedVSeed","datasetReshapeInfo","reshapeMeasures","foldInfoList","index","foldInfo","measureId","Object","axisType","FoldPrimaryMeasureValue","measure","m","options","DEFAULT_DUAL_CHART_TYPE","pipeline","p","execPipeline","seriesDualAxis","dataset","d","seriesContext"],"mappings":";;AAYO,MAAMA,SAAS,CACpBC,YACAC;IAEA,MAAMC,SAAS;QACb,MAAM;QACN,SAAS;QACT,QAAQ;YACN;gBACE,MAAM;YACR;SACD;IACH;IAEA,OAAO,CAACC,GAAmBC;QACzB,MAAM,EAAEC,aAAa,EAAE,GAAGD;QAC1B,MAAM,EAAEE,kBAAkB,EAAEC,kBAAkB,EAAE,EAAE,GAAGF;QACrD,MAAM,EAAEG,eAAe,EAAE,EAAEC,KAAK,EAAE,GAAGH,kBAAkB,CAAC,EAAE;QAE1DJ,OAAO,MAAM,GAAGM,aAAc,GAAG,CAAC,CAACE;YACjC,MAAMC,YAAYC,OAAO,IAAI,CAACF,SAAS,OAAO,CAAC,CAAC,EAAE;YAClD,MAAMG,WAAWH,SAAS,YAAY,KAAK,GAAGI,0BAA0BL,OAAO,GAAG,YAAY;YAC9F,MAAMM,UAAWR,AAAAA,CAAAA,eAAe,CAACE,MAAM,IAAI,EAAC,EAAG,IAAI,CAAC,CAACO,IAAMA,EAAE,EAAE,KAAKL;YAEpE,MAAMM,UAA2B;gBAC/BJ;gBACA,WAAaE,SAA6B,aACvCF,CAAAA,AAAa,cAAbA,WAAyBK,wBAAwB,OAAO,GAAGA,wBAAwB,SAAQ;gBAC9FR;YACF;YACA,MAAMS,WAAW;mBAAInB,WAAW,GAAG,CAAC,CAACoB,IAAMA,EAAEH;mBAAchB;aAAM;YACjE,OAAOoB,aAAyCF,UAAUf,SAAS,CAAC;QACtE;QAEA,OAAOF;IACT;AACF;AAMO,MAAMoB,iBAAiB,CAC5BtB,YACAC;IAEA,MAAMC,SAAS;QACb,MAAM;QACN,SAAS;QACT,aAAa;QACb,QAAQ;YACN;gBACE,MAAM;YACR;SACD;IACH;IAEA,OAAO,CAACC,GAAmBC;QACzB,MAAM,EAAEC,aAAa,EAAE,GAAGD;QAC1B,MAAM,EAAEE,kBAAkB,EAAEiB,OAAO,EAAEhB,kBAAkB,EAAE,EAAE,GAAGF;QAE9DH,OAAO,MAAM,GAAGqB,QAAQ,GAAG,CAAC,CAACC,GAAGf;YAC9B,MAAMgB,gBAAgB;gBACpB,GAAGrB,OAAO;gBACV,eAAe;oBACb,GAAGC,aAAa;oBAChB,SAASmB;gBACX;YACF;YAEA,MAAMd,WAAWJ,kBAAkB,CAAC,EAAE,CAAE,YAAa,CAACG,MAAM;YAC5D,MAAME,YAAYC,OAAO,IAAI,CAACF,SAAS,OAAO,CAAC,CAAC,EAAE;YAClD,MAAMG,WAAWH,SAAS,YAAY,KAAKI,0BAA0B,YAAY;YACjF,MAAMC,UAAWR,AAAAA,CAAAA,eAAe,CAAC,EAAE,IAAI,EAAC,EAAG,IAAI,CAAC,CAACS,IAAMA,EAAE,EAAE,KAAKL;YAEhE,MAAMM,UAA2B;gBAC/BJ;gBACA,WAAaE,SAA6B,aACvCF,CAAAA,AAAa,cAAbA,WAAyBK,wBAAwB,OAAO,GAAGA,wBAAwB,SAAQ;gBAC9FR;YACF;YACA,MAAMS,WAAW;mBAAInB,WAAW,GAAG,CAAC,CAACoB,IAAMA,EAAEH;mBAAchB;aAAM;YACjE,OAAOoB,aAAyCF,UAAUM,eAAe,CAAC;QAC5E;QAEA,OAAOvB;IACT;AACF"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/series/series.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/series/series.ts"],"sourcesContent":["import type {\n ChartType,\n Dataset,\n DualAxisMeasure,\n DualAxisOptions,\n SpecPipelineContext,\n VChartSpecPipe,\n} from 'src/types'\nimport { DEFAULT_DUAL_CHART_TYPE, execPipeline } from '../../../../utils'\nimport type { ICommonChartSpec, ILineSeriesSpec, ISpec } from '@visactor/vchart'\nimport { FoldPrimaryMeasureValue } from 'src/dataReshape/constant'\n\nexport const series = (\n pipeByAxis: ((options: DualAxisOptions) => VChartSpecPipe)[],\n pipes: VChartSpecPipe[],\n): VChartSpecPipe => {\n const result = {\n type: 'common',\n padding: 0,\n region: [\n {\n clip: true,\n },\n ],\n } as ICommonChartSpec\n\n return (_: Partial<ISpec>, context: SpecPipelineContext) => {\n const { advancedVSeed } = context\n const { datasetReshapeInfo, reshapeMeasures = [] } = advancedVSeed\n const { foldInfoList = [], index } = datasetReshapeInfo[0]!\n\n result.series = foldInfoList!.map((foldInfo) => {\n const measureId = Object.keys(foldInfo.foldMap)[0]\n const axisType = foldInfo.measureValue === `${FoldPrimaryMeasureValue}${index}` ? 'primary' : 'secondary'\n const measure = (reshapeMeasures[index] ?? []).find((m) => m.id === measureId)!\n\n const options: DualAxisOptions = {\n axisType,\n chartType: ((measure as DualAxisMeasure)?.chartType ??\n (axisType === 'primary' ? DEFAULT_DUAL_CHART_TYPE.primary : DEFAULT_DUAL_CHART_TYPE.secondary)) as ChartType,\n foldInfo,\n }\n const pipeline = [...pipeByAxis.map((p) => p(options)), ...pipes]\n return execPipeline<ISpec, 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 = (\n pipeByAxis: ((options: DualAxisOptions) => VChartSpecPipe)[],\n pipes: VChartSpecPipe[],\n): VChartSpecPipe => {\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 return (_: Partial<ISpec>, context: SpecPipelineContext) => {\n const { advancedVSeed } = context\n const { datasetReshapeInfo, dataset, reshapeMeasures = [] } = advancedVSeed\n\n result.series = dataset.map((d, index) => {\n const seriesContext = {\n ...context,\n advancedVSeed: {\n ...advancedVSeed,\n dataset: d as Dataset,\n },\n }\n\n const foldInfo = datasetReshapeInfo[0]!.foldInfoList![index]\n const measureId = Object.keys(foldInfo.foldMap)[0]\n const axisType = foldInfo.measureValue === FoldPrimaryMeasureValue ? 'primary' : 'secondary'\n const measure = (reshapeMeasures[0] ?? []).find((m) => m.id === measureId)!\n\n const options: DualAxisOptions = {\n axisType,\n chartType: ((measure as DualAxisMeasure)?.chartType ??\n (axisType === 'primary' ? DEFAULT_DUAL_CHART_TYPE.primary : DEFAULT_DUAL_CHART_TYPE.secondary)) as ChartType,\n foldInfo,\n }\n const pipeline = [...pipeByAxis.map((p) => p(options)), ...pipes]\n return execPipeline<ISpec, SpecPipelineContext>(pipeline, seriesContext, {})\n }) as ILineSeriesSpec[]\n\n return result\n }\n}\n"],"names":["series","pipeByAxis","pipes","result","_","context","advancedVSeed","datasetReshapeInfo","reshapeMeasures","foldInfoList","index","foldInfo","measureId","Object","axisType","FoldPrimaryMeasureValue","measure","m","options","DEFAULT_DUAL_CHART_TYPE","pipeline","p","execPipeline","seriesDualAxis","dataset","d","seriesContext"],"mappings":";;AAYO,MAAMA,SAAS,CACpBC,YACAC;IAEA,MAAMC,SAAS;QACb,MAAM;QACN,SAAS;QACT,QAAQ;YACN;gBACE,MAAM;YACR;SACD;IACH;IAEA,OAAO,CAACC,GAAmBC;QACzB,MAAM,EAAEC,aAAa,EAAE,GAAGD;QAC1B,MAAM,EAAEE,kBAAkB,EAAEC,kBAAkB,EAAE,EAAE,GAAGF;QACrD,MAAM,EAAEG,eAAe,EAAE,EAAEC,KAAK,EAAE,GAAGH,kBAAkB,CAAC,EAAE;QAE1DJ,OAAO,MAAM,GAAGM,aAAc,GAAG,CAAC,CAACE;YACjC,MAAMC,YAAYC,OAAO,IAAI,CAACF,SAAS,OAAO,CAAC,CAAC,EAAE;YAClD,MAAMG,WAAWH,SAAS,YAAY,KAAK,GAAGI,0BAA0BL,OAAO,GAAG,YAAY;YAC9F,MAAMM,UAAWR,AAAAA,CAAAA,eAAe,CAACE,MAAM,IAAI,EAAC,EAAG,IAAI,CAAC,CAACO,IAAMA,EAAE,EAAE,KAAKL;YAEpE,MAAMM,UAA2B;gBAC/BJ;gBACA,WAAaE,SAA6B,aACvCF,CAAAA,AAAa,cAAbA,WAAyBK,wBAAwB,OAAO,GAAGA,wBAAwB,SAAQ;gBAC9FR;YACF;YACA,MAAMS,WAAW;mBAAInB,WAAW,GAAG,CAAC,CAACoB,IAAMA,EAAEH;mBAAchB;aAAM;YACjE,OAAOoB,aAAyCF,UAAUf,SAAS,CAAC;QACtE;QAEA,OAAOF;IACT;AACF;AAMO,MAAMoB,iBAAiB,CAC5BtB,YACAC;IAEA,MAAMC,SAAS;QACb,MAAM;QACN,SAAS;QACT,aAAa;QACb,QAAQ;YACN;gBACE,MAAM;YACR;SACD;IACH;IAEA,OAAO,CAACC,GAAmBC;QACzB,MAAM,EAAEC,aAAa,EAAE,GAAGD;QAC1B,MAAM,EAAEE,kBAAkB,EAAEiB,OAAO,EAAEhB,kBAAkB,EAAE,EAAE,GAAGF;QAE9DH,OAAO,MAAM,GAAGqB,QAAQ,GAAG,CAAC,CAACC,GAAGf;YAC9B,MAAMgB,gBAAgB;gBACpB,GAAGrB,OAAO;gBACV,eAAe;oBACb,GAAGC,aAAa;oBAChB,SAASmB;gBACX;YACF;YAEA,MAAMd,WAAWJ,kBAAkB,CAAC,EAAE,CAAE,YAAa,CAACG,MAAM;YAC5D,MAAME,YAAYC,OAAO,IAAI,CAACF,SAAS,OAAO,CAAC,CAAC,EAAE;YAClD,MAAMG,WAAWH,SAAS,YAAY,KAAKI,0BAA0B,YAAY;YACjF,MAAMC,UAAWR,AAAAA,CAAAA,eAAe,CAAC,EAAE,IAAI,EAAC,EAAG,IAAI,CAAC,CAACS,IAAMA,EAAE,EAAE,KAAKL;YAEhE,MAAMM,UAA2B;gBAC/BJ;gBACA,WAAaE,SAA6B,aACvCF,CAAAA,AAAa,cAAbA,WAAyBK,wBAAwB,OAAO,GAAGA,wBAAwB,SAAQ;gBAC9FR;YACF;YACA,MAAMS,WAAW;mBAAInB,WAAW,GAAG,CAAC,CAACoB,IAAMA,EAAEH;mBAAchB;aAAM;YACjE,OAAOoB,aAAyCF,UAAUM,eAAe,CAAC;QAC5E;QAEA,OAAOvB;IACT;AACF"}
@@ -1,2 +1 @@
1
- import { scatterSize } from "./scatterSize.js";
2
- export { scatterSize };
1
+ export { scatterSize } from "./scatterSize.js";
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/size/scatterSize.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/size/scatterSize.ts"],"sourcesContent":["import type { IScatterChartSpec } from '@visactor/vchart'\nimport type { VChartSpecPipe } from 'src/types'\n\nexport const scatterSize: VChartSpecPipe = (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"],"names":["scatterSize","spec","context","result","advancedVSeed","chartType","encoding","baseConfig","hasSizeEncoding","size","Array","undefined"],"mappings":"AAGO,MAAMA,cAA8B,CAACC,MAAMC;IAChD,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAE,GAAGF;IAC1B,MAAM,EAAEG,SAAS,EAAEC,QAAQ,EAAE,GAAGF;IAChC,MAAMG,aAAaH,cAAc,MAAM,CAACC,UAAU;IAIlD,MAAMG,kBAAkBF,UAAU,MAAM,CAAC,EAAE;IAC3C,IAAI,CAACE,iBACH,OAAOL;IAGT,MAAMM,OAAOF,WAAW,IAAI,IAAIA,WAAW,SAAS;IAEpDJ,OAAO,IAAI,GAAG;QACZ,MAAM;QACN,OAAOO,MAAM,OAAO,CAACD,QAAQA,OAAO;YAACA;YAAMA;SAAK;IAClD;IAEAN,OAAO,SAAS,GAAGG,UAAU,MAAM,CAAC,EAAE,IAAIK;IAE1C,OAAOR;AACT"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/size/scatterSize.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/size/scatterSize.ts"],"sourcesContent":["import type { IScatterChartSpec } from '@visactor/vchart'\nimport type { VChartSpecPipe } from 'src/types'\n\nexport const scatterSize: VChartSpecPipe = (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"],"names":["scatterSize","spec","context","result","advancedVSeed","chartType","encoding","baseConfig","hasSizeEncoding","size","Array","undefined"],"mappings":"AAGO,MAAMA,cAA8B,CAACC,MAAMC;IAChD,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAE,GAAGF;IAC1B,MAAM,EAAEG,SAAS,EAAEC,QAAQ,EAAE,GAAGF;IAChC,MAAMG,aAAaH,cAAc,MAAM,CAACC,UAAU;IAIlD,MAAMG,kBAAkBF,UAAU,MAAM,CAAC,EAAE;IAC3C,IAAI,CAACE,iBACH,OAAOL;IAGT,MAAMM,OAAOF,WAAW,IAAI,IAAIA,WAAW,SAAS;IAEpDJ,OAAO,IAAI,GAAG;QACZ,MAAM;QACN,OAAOO,MAAM,OAAO,CAACD,QAAQA,OAAO;YAACA;YAAMA;SAAK;IAClD;IAEAN,OAAO,SAAS,GAAGG,UAAU,MAAM,CAAC,EAAE,IAAIK;IAE1C,OAAOR;AACT"}
@@ -1,3 +1,2 @@
1
- import { stackInverse } from "./stack.js";
2
- import { stackCornerRadius } from "./stackCornerRadius.js";
3
- export { stackCornerRadius, stackInverse };
1
+ export { stackInverse } from "./stack.js";
2
+ export { stackCornerRadius } from "./stackCornerRadius.js";
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/stack/stack.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/stack/stack.ts"],"sourcesContent":["import type { IAreaChartSpec, IBarChartSpec } from '@visactor/vchart'\nimport type { VChartSpecPipe } from 'src/types'\n\nexport const stackInverse: VChartSpecPipe = (spec) => {\n const result = { ...spec } as IAreaChartSpec | IBarChartSpec\n result.stackInverse = true\n return result\n}\n"],"names":["stackInverse","spec","result"],"mappings":"AAGO,MAAMA,eAA+B,CAACC;IAC3C,MAAMC,SAAS;QAAE,GAAGD,IAAI;IAAC;IACzBC,OAAO,YAAY,GAAG;IACtB,OAAOA;AACT"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/stack/stack.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/stack/stack.ts"],"sourcesContent":["import type { IAreaChartSpec, IBarChartSpec } from '@visactor/vchart'\nimport type { VChartSpecPipe } from 'src/types'\n\nexport const stackInverse: VChartSpecPipe = (spec) => {\n const result = { ...spec } as IAreaChartSpec | IBarChartSpec\n result.stackInverse = true\n return result\n}\n"],"names":["stackInverse","spec","result"],"mappings":"AAGO,MAAMA,eAA+B,CAACC;IAC3C,MAAMC,SAAS;QAAE,GAAGD,IAAI;IAAC;IACzBC,OAAO,YAAY,GAAG;IACtB,OAAOA;AACT"}