@visactor/vseed 0.4.28 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) 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.d.ts +1 -0
  4. package/dist/esm/builder/builder/advanced/colorItems.js +21 -1
  5. package/dist/esm/builder/builder/advanced/colorItems.js.map +1 -1
  6. package/dist/esm/builder/builder/buildSpec.js.map +1 -1
  7. package/dist/esm/builder/builder/builder.d.ts +4 -0
  8. package/dist/esm/builder/builder/builder.js +2 -1
  9. package/dist/esm/builder/builder/builder.js.map +1 -1
  10. package/dist/esm/dataSelector/selector.js.map +1 -1
  11. package/dist/esm/pipeline/advanced/chart/pipes/config/column.js +2 -1
  12. package/dist/esm/pipeline/advanced/chart/pipes/config/column.js.map +1 -1
  13. package/dist/esm/pipeline/advanced/chart/pipes/config/line.js +2 -1
  14. package/dist/esm/pipeline/advanced/chart/pipes/config/line.js.map +1 -1
  15. package/dist/esm/pipeline/advanced/chart/pipes/config/pie.js +2 -1
  16. package/dist/esm/pipeline/advanced/chart/pipes/config/pie.js.map +1 -1
  17. package/dist/esm/pipeline/advanced/chart/pipes/config/scatter.js +2 -1
  18. package/dist/esm/pipeline/advanced/chart/pipes/config/scatter.js.map +1 -1
  19. package/dist/esm/pipeline/spec/chart/pipeline/area.js +3 -1
  20. package/dist/esm/pipeline/spec/chart/pipeline/area.js.map +1 -1
  21. package/dist/esm/pipeline/spec/chart/pipeline/areaPercent.js +3 -1
  22. package/dist/esm/pipeline/spec/chart/pipeline/areaPercent.js.map +1 -1
  23. package/dist/esm/pipeline/spec/chart/pipeline/bar.js +3 -1
  24. package/dist/esm/pipeline/spec/chart/pipeline/bar.js.map +1 -1
  25. package/dist/esm/pipeline/spec/chart/pipeline/barParallel.js +3 -1
  26. package/dist/esm/pipeline/spec/chart/pipeline/barParallel.js.map +1 -1
  27. package/dist/esm/pipeline/spec/chart/pipeline/barPercent.js +3 -1
  28. package/dist/esm/pipeline/spec/chart/pipeline/barPercent.js.map +1 -1
  29. package/dist/esm/pipeline/spec/chart/pipeline/column.js +3 -1
  30. package/dist/esm/pipeline/spec/chart/pipeline/column.js.map +1 -1
  31. package/dist/esm/pipeline/spec/chart/pipeline/columnParallel.js +3 -1
  32. package/dist/esm/pipeline/spec/chart/pipeline/columnParallel.js.map +1 -1
  33. package/dist/esm/pipeline/spec/chart/pipeline/columnPercent.js +3 -1
  34. package/dist/esm/pipeline/spec/chart/pipeline/columnPercent.js.map +1 -1
  35. package/dist/esm/pipeline/spec/chart/pipeline/donut.js +3 -1
  36. package/dist/esm/pipeline/spec/chart/pipeline/donut.js.map +1 -1
  37. package/dist/esm/pipeline/spec/chart/pipeline/line.js +3 -1
  38. package/dist/esm/pipeline/spec/chart/pipeline/line.js.map +1 -1
  39. package/dist/esm/pipeline/spec/chart/pipeline/pie.js +3 -1
  40. package/dist/esm/pipeline/spec/chart/pipeline/pie.js.map +1 -1
  41. package/dist/esm/pipeline/spec/chart/pipeline/radar.js +3 -1
  42. package/dist/esm/pipeline/spec/chart/pipeline/radar.js.map +1 -1
  43. package/dist/esm/pipeline/spec/chart/pipeline/rose.js +3 -1
  44. package/dist/esm/pipeline/spec/chart/pipeline/rose.js.map +1 -1
  45. package/dist/esm/pipeline/spec/chart/pipeline/roseParallel.js +3 -1
  46. package/dist/esm/pipeline/spec/chart/pipeline/roseParallel.js.map +1 -1
  47. package/dist/esm/pipeline/spec/chart/pipeline/scatter.js +3 -1
  48. package/dist/esm/pipeline/spec/chart/pipeline/scatter.js.map +1 -1
  49. package/dist/esm/pipeline/spec/chart/pipes/animation/animation.d.ts +15 -0
  50. package/dist/esm/pipeline/spec/chart/pipes/animation/animation.js +94 -0
  51. package/dist/esm/pipeline/spec/chart/pipes/animation/animation.js.map +1 -0
  52. package/dist/esm/pipeline/spec/chart/pipes/animation/bar.d.ts +77 -0
  53. package/dist/esm/pipeline/spec/chart/pipes/animation/bar.js +88 -0
  54. package/dist/esm/pipeline/spec/chart/pipes/animation/bar.js.map +1 -0
  55. package/dist/esm/pipeline/spec/chart/pipes/animation/index.d.ts +2 -0
  56. package/dist/esm/pipeline/spec/chart/pipes/animation/index.js +2 -0
  57. package/dist/esm/pipeline/spec/chart/pipes/animation/lineOrArea.d.ts +254 -0
  58. package/dist/esm/pipeline/spec/chart/pipes/animation/lineOrArea.js +138 -0
  59. package/dist/esm/pipeline/spec/chart/pipes/animation/lineOrArea.js.map +1 -0
  60. package/dist/esm/pipeline/spec/chart/pipes/animation/pie.d.ts +71 -0
  61. package/dist/esm/pipeline/spec/chart/pipes/animation/pie.js +176 -0
  62. package/dist/esm/pipeline/spec/chart/pipes/animation/pie.js.map +1 -0
  63. package/dist/esm/pipeline/spec/chart/pipes/animation/radar.d.ts +131 -0
  64. package/dist/esm/pipeline/spec/chart/pipes/animation/radar.js +46 -0
  65. package/dist/esm/pipeline/spec/chart/pipes/animation/radar.js.map +1 -0
  66. package/dist/esm/pipeline/spec/chart/pipes/animation/scatter.d.ts +102 -0
  67. package/dist/esm/pipeline/spec/chart/pipes/animation/scatter.js +57 -0
  68. package/dist/esm/pipeline/spec/chart/pipes/animation/scatter.js.map +1 -0
  69. package/dist/esm/pipeline/spec/chart/pipes/animation/types.d.ts +130 -0
  70. package/dist/esm/pipeline/spec/chart/pipes/animation/types.js +19 -0
  71. package/dist/esm/pipeline/spec/chart/pipes/animation/types.js.map +1 -0
  72. package/dist/esm/pipeline/spec/chart/pipes/animation/utils/bar.d.ts +11 -0
  73. package/dist/esm/pipeline/spec/chart/pipes/animation/utils/bar.js +13 -0
  74. package/dist/esm/pipeline/spec/chart/pipes/animation/utils/bar.js.map +1 -0
  75. package/dist/esm/pipeline/spec/chart/pipes/animation/utils/barColor.d.ts +52 -0
  76. package/dist/esm/pipeline/spec/chart/pipes/animation/utils/barColor.js +51 -0
  77. package/dist/esm/pipeline/spec/chart/pipes/animation/utils/barColor.js.map +1 -0
  78. package/dist/esm/pipeline/spec/chart/pipes/animation/utils/barGroup.d.ts +102 -0
  79. package/dist/esm/pipeline/spec/chart/pipes/animation/utils/barGroup.js +84 -0
  80. package/dist/esm/pipeline/spec/chart/pipes/animation/utils/barGroup.js.map +1 -0
  81. package/dist/esm/pipeline/spec/chart/pipes/animation/utils/barMotion.d.ts +66 -0
  82. package/dist/esm/pipeline/spec/chart/pipes/animation/utils/barMotion.js +72 -0
  83. package/dist/esm/pipeline/spec/chart/pipes/animation/utils/barMotion.js.map +1 -0
  84. package/dist/esm/pipeline/spec/chart/pipes/animation/utils/index.d.ts +86 -0
  85. package/dist/esm/pipeline/spec/chart/pipes/animation/utils/index.js +60 -0
  86. package/dist/esm/pipeline/spec/chart/pipes/animation/utils/index.js.map +1 -0
  87. package/dist/esm/pipeline/spec/chart/pipes/animation/utils/lineOrArea.d.ts +29 -0
  88. package/dist/esm/pipeline/spec/chart/pipes/animation/utils/lineOrArea.js +20 -0
  89. package/dist/esm/pipeline/spec/chart/pipes/animation/utils/lineOrArea.js.map +1 -0
  90. package/dist/esm/pipeline/spec/chart/pipes/animation/utils/pie.d.ts +14 -0
  91. package/dist/esm/pipeline/spec/chart/pipes/animation/utils/pie.js +9 -0
  92. package/dist/esm/pipeline/spec/chart/pipes/animation/utils/pie.js.map +1 -0
  93. package/dist/esm/pipeline/spec/chart/pipes/animation/utils/scatter.d.ts +69 -0
  94. package/dist/esm/pipeline/spec/chart/pipes/animation/utils/scatter.js +59 -0
  95. package/dist/esm/pipeline/spec/chart/pipes/animation/utils/scatter.js.map +1 -0
  96. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationArea.js +2 -2
  97. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationArea.js.map +1 -1
  98. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationAreaBand.js +2 -2
  99. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationAreaBand.js.map +1 -1
  100. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationDifferenceLine.js +63 -18
  101. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationDifferenceLine.js.map +1 -1
  102. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationHorizontalLine.js +7 -13
  103. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationHorizontalLine.js.map +1 -1
  104. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationPointCommon.js +2 -2
  105. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationPointCommon.js.map +1 -1
  106. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationVerticalLine.js +9 -15
  107. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationVerticalLine.js.map +1 -1
  108. package/dist/esm/pipeline/spec/chart/pipes/annotation/utils.d.ts +2 -0
  109. package/dist/esm/pipeline/spec/chart/pipes/annotation/utils.js +15 -1
  110. package/dist/esm/pipeline/spec/chart/pipes/annotation/utils.js.map +1 -1
  111. package/dist/esm/pipeline/spec/chart/pipes/index.d.ts +1 -0
  112. package/dist/esm/pipeline/spec/chart/pipes/index.js +1 -0
  113. package/dist/esm/pipeline/utils/sandbox/execute.js.map +1 -1
  114. package/dist/esm/theme/tokenTheme.d.ts +6 -0
  115. package/dist/esm/theme/tokenTheme.js +36 -7
  116. package/dist/esm/theme/tokenTheme.js.map +1 -1
  117. package/dist/esm/types/builder/builder.d.ts +1 -0
  118. package/dist/esm/types/builder/builder.js.map +1 -1
  119. package/dist/esm/types/chartType/area/area.d.ts +6 -1
  120. package/dist/esm/types/chartType/area/zArea.d.ts +50 -0
  121. package/dist/esm/types/chartType/area/zArea.js +2 -1
  122. package/dist/esm/types/chartType/area/zArea.js.map +1 -1
  123. package/dist/esm/types/chartType/areaPercent/areaPercent.d.ts +6 -1
  124. package/dist/esm/types/chartType/areaPercent/zAreaPercent.d.ts +40 -0
  125. package/dist/esm/types/chartType/areaPercent/zAreaPercent.js +2 -1
  126. package/dist/esm/types/chartType/areaPercent/zAreaPercent.js.map +1 -1
  127. package/dist/esm/types/chartType/bar/bar.d.ts +6 -1
  128. package/dist/esm/types/chartType/bar/zBar.d.ts +50 -0
  129. package/dist/esm/types/chartType/bar/zBar.js +2 -1
  130. package/dist/esm/types/chartType/bar/zBar.js.map +1 -1
  131. package/dist/esm/types/chartType/barParallel/barParallel.d.ts +6 -1
  132. package/dist/esm/types/chartType/barParallel/zBarParallel.d.ts +50 -0
  133. package/dist/esm/types/chartType/barParallel/zBarParallel.js +2 -1
  134. package/dist/esm/types/chartType/barParallel/zBarParallel.js.map +1 -1
  135. package/dist/esm/types/chartType/barPercent/barPercent.d.ts +6 -1
  136. package/dist/esm/types/chartType/barPercent/zBarPercent.d.ts +40 -0
  137. package/dist/esm/types/chartType/barPercent/zBarPercent.js +2 -1
  138. package/dist/esm/types/chartType/barPercent/zBarPercent.js.map +1 -1
  139. package/dist/esm/types/chartType/column/column.d.ts +6 -1
  140. package/dist/esm/types/chartType/column/zColumn.d.ts +50 -0
  141. package/dist/esm/types/chartType/column/zColumn.js +2 -1
  142. package/dist/esm/types/chartType/column/zColumn.js.map +1 -1
  143. package/dist/esm/types/chartType/columnParallel/columnParallel.d.ts +6 -1
  144. package/dist/esm/types/chartType/columnParallel/zColumnParallel.d.ts +50 -0
  145. package/dist/esm/types/chartType/columnParallel/zColumnParallel.js +2 -1
  146. package/dist/esm/types/chartType/columnParallel/zColumnParallel.js.map +1 -1
  147. package/dist/esm/types/chartType/columnPercent/columnPercent.d.ts +6 -1
  148. package/dist/esm/types/chartType/columnPercent/zColumnPercent.d.ts +40 -0
  149. package/dist/esm/types/chartType/columnPercent/zColumnPercent.js +2 -1
  150. package/dist/esm/types/chartType/columnPercent/zColumnPercent.js.map +1 -1
  151. package/dist/esm/types/chartType/donut/donut.d.ts +6 -1
  152. package/dist/esm/types/chartType/donut/zDonut.d.ts +40 -0
  153. package/dist/esm/types/chartType/donut/zDonut.js +2 -1
  154. package/dist/esm/types/chartType/donut/zDonut.js.map +1 -1
  155. package/dist/esm/types/chartType/line/line.d.ts +6 -1
  156. package/dist/esm/types/chartType/line/zLine.d.ts +50 -0
  157. package/dist/esm/types/chartType/line/zLine.js +2 -1
  158. package/dist/esm/types/chartType/line/zLine.js.map +1 -1
  159. package/dist/esm/types/chartType/pie/pie.d.ts +6 -1
  160. package/dist/esm/types/chartType/pie/zPie.d.ts +40 -0
  161. package/dist/esm/types/chartType/pie/zPie.js +2 -1
  162. package/dist/esm/types/chartType/pie/zPie.js.map +1 -1
  163. package/dist/esm/types/chartType/radar/radar.d.ts +6 -1
  164. package/dist/esm/types/chartType/radar/zRadar.d.ts +40 -0
  165. package/dist/esm/types/chartType/radar/zRadar.js +2 -1
  166. package/dist/esm/types/chartType/radar/zRadar.js.map +1 -1
  167. package/dist/esm/types/chartType/rose/rose.d.ts +6 -1
  168. package/dist/esm/types/chartType/rose/zRose.d.ts +40 -0
  169. package/dist/esm/types/chartType/rose/zRose.js +2 -1
  170. package/dist/esm/types/chartType/rose/zRose.js.map +1 -1
  171. package/dist/esm/types/chartType/roseParallel/roseParallel.d.ts +6 -1
  172. package/dist/esm/types/chartType/roseParallel/zRoseParallel.d.ts +40 -0
  173. package/dist/esm/types/chartType/roseParallel/zRoseParallel.js +2 -1
  174. package/dist/esm/types/chartType/roseParallel/zRoseParallel.js.map +1 -1
  175. package/dist/esm/types/chartType/scatter/scatter.d.ts +6 -1
  176. package/dist/esm/types/chartType/scatter/zScatter.d.ts +40 -0
  177. package/dist/esm/types/chartType/scatter/zScatter.js +2 -1
  178. package/dist/esm/types/chartType/scatter/zScatter.js.map +1 -1
  179. package/dist/esm/types/properties/annotation/annotation.d.ts +10 -0
  180. package/dist/esm/types/properties/annotation/annotationDifferenceLine.d.ts +4 -0
  181. package/dist/esm/types/properties/annotation/zAnnotationDifferenceLine.d.ts +5 -0
  182. package/dist/esm/types/properties/annotation/zAnnotationDifferenceLine.js +6 -1
  183. package/dist/esm/types/properties/annotation/zAnnotationDifferenceLine.js.map +1 -1
  184. package/dist/esm/types/properties/config/animation/animation.d.ts +72 -0
  185. package/dist/esm/types/properties/config/animation/animation.js +0 -0
  186. package/dist/esm/types/properties/config/animation/animationAtmosphere.d.ts +15 -0
  187. package/dist/esm/types/properties/config/animation/animationAtmosphere.js +0 -0
  188. package/dist/esm/types/properties/config/animation/animationConfig.d.ts +2 -0
  189. package/dist/esm/types/properties/config/animation/animationConfig.js +0 -0
  190. package/dist/esm/types/properties/config/animation/animationEffect.d.ts +72 -0
  191. package/dist/esm/types/properties/config/animation/animationEffect.js +0 -0
  192. package/dist/esm/types/properties/config/animation/animationLoop.d.ts +49 -0
  193. package/dist/esm/types/properties/config/animation/animationLoop.js +0 -0
  194. package/dist/esm/types/properties/config/animation/index.d.ts +6 -0
  195. package/dist/esm/types/properties/config/animation/index.js +1 -0
  196. package/dist/esm/types/properties/config/animation/zAnimation.d.ts +201 -0
  197. package/dist/esm/types/properties/config/animation/zAnimation.js +114 -0
  198. package/dist/esm/types/properties/config/animation/zAnimation.js.map +1 -0
  199. package/dist/esm/types/properties/config/annotation/annotation.d.ts +32 -5
  200. package/dist/esm/types/properties/config/annotation/zAnnotation.d.ts +30 -4
  201. package/dist/esm/types/properties/config/annotation/zAnnotation.js +11 -1
  202. package/dist/esm/types/properties/config/annotation/zAnnotation.js.map +1 -1
  203. package/dist/esm/types/properties/config/area.d.ts +110 -4
  204. package/dist/esm/types/properties/config/area.js +3 -1
  205. package/dist/esm/types/properties/config/area.js.map +1 -1
  206. package/dist/esm/types/properties/config/bar.d.ts +165 -6
  207. package/dist/esm/types/properties/config/bar.js +3 -1
  208. package/dist/esm/types/properties/config/bar.js.map +1 -1
  209. package/dist/esm/types/properties/config/boxplot.d.ts +15 -2
  210. package/dist/esm/types/properties/config/column.d.ts +165 -6
  211. package/dist/esm/types/properties/config/column.js +3 -1
  212. package/dist/esm/types/properties/config/column.js.map +1 -1
  213. package/dist/esm/types/properties/config/config.d.ts +1125 -38
  214. package/dist/esm/types/properties/config/dualAxis.d.ts +15 -2
  215. package/dist/esm/types/properties/config/histogram.d.ts +15 -2
  216. package/dist/esm/types/properties/config/index.d.ts +1 -0
  217. package/dist/esm/types/properties/config/index.js +1 -0
  218. package/dist/esm/types/properties/config/line.d.ts +55 -2
  219. package/dist/esm/types/properties/config/line.js +3 -1
  220. package/dist/esm/types/properties/config/line.js.map +1 -1
  221. package/dist/esm/types/properties/config/pie.d.ts +120 -0
  222. package/dist/esm/types/properties/config/pie.js +6 -2
  223. package/dist/esm/types/properties/config/pie.js.map +1 -1
  224. package/dist/esm/types/properties/config/race.d.ts +330 -12
  225. package/dist/esm/types/properties/config/rose.d.ts +80 -0
  226. package/dist/esm/types/properties/config/rose.js +3 -1
  227. package/dist/esm/types/properties/config/rose.js.map +1 -1
  228. package/dist/esm/types/properties/config/scatter.d.ts +55 -2
  229. package/dist/esm/types/properties/config/scatter.js +3 -1
  230. package/dist/esm/types/properties/config/scatter.js.map +1 -1
  231. package/dist/esm/types/properties/theme/customTheme.d.ts +2250 -76
  232. package/dist/umd/index.js +5152 -689
  233. package/dist/umd/index.js.map +1 -1
  234. package/package.json +4 -9
@@ -7,3 +7,4 @@ export declare const getColorIdMap: (builder: Builder) => Record<string, {
7
7
  id: string;
8
8
  alias: string;
9
9
  }>;
10
+ export declare const getColorValueMap: (builder: Builder) => Record<string, string> | undefined;
@@ -1,5 +1,7 @@
1
1
  import { unique } from "remeda";
2
2
  import { isPivotTable, isTable } from "../../../pipeline/index.js";
3
+ import { isLinearColor } from "../../../pipeline/spec/chart/pipes/index.js";
4
+ import { createSpecifiedForColorMapping } from "../../../pipeline/spec/chart/pipes/color/color.js";
3
5
  const getColorItems = (builder)=>{
4
6
  const advancedVSeed = builder.advancedVSeed;
5
7
  if (!advancedVSeed || isTable(builder.vseed) || isPivotTable(builder.vseed)) return [];
@@ -24,6 +26,24 @@ const getColorIdMap = (builder)=>{
24
26
  }), {});
25
27
  return colorIdMap;
26
28
  };
27
- export { getColorIdMap, getColorItems };
29
+ const getColorValueMap = (builder)=>{
30
+ const advancedVSeed = builder.advancedVSeed;
31
+ if (!advancedVSeed || isTable(builder.vseed) || isPivotTable(builder.vseed) || isLinearColor(advancedVSeed, builder.vseed)) return;
32
+ const { datasetReshapeInfo, chartType } = advancedVSeed;
33
+ const unfoldInfo = datasetReshapeInfo[0]?.unfoldInfo;
34
+ const baseConfig = advancedVSeed.config?.[chartType];
35
+ const colorConfig = baseConfig?.color;
36
+ if (!unfoldInfo || !colorConfig) return;
37
+ const colorItems = unfoldInfo.colorItems ?? [];
38
+ const colorIdMap = unfoldInfo.colorIdMap;
39
+ const colorScheme = colorConfig.colorScheme ?? [];
40
+ const specified = createSpecifiedForColorMapping(colorConfig.colorMapping, colorIdMap, colorItems) ?? {};
41
+ return colorItems.reduce((prev, colorId, index)=>{
42
+ const colorValue = specified[colorId] ?? colorScheme[index % colorScheme.length];
43
+ if (colorValue) prev[colorId] = colorValue;
44
+ return prev;
45
+ }, {});
46
+ };
47
+ export { getColorIdMap, getColorItems, getColorValueMap };
28
48
 
29
49
  //# sourceMappingURL=colorItems.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"builder/builder/advanced/colorItems.js","sources":["../../../../../src/builder/builder/advanced/colorItems.ts"],"sourcesContent":["import { unique } from 'remeda'\nimport type { Builder } from '../builder'\nimport { isPivotTable, isTable } from 'src/pipeline'\n\nexport const getColorItems = (builder: Builder): { id: string; alias: string }[] => {\n const advancedVSeed = builder.advancedVSeed\n\n if (!advancedVSeed || isTable(builder.vseed) || isPivotTable(builder.vseed)) {\n return []\n }\n\n const { datasetReshapeInfo } = advancedVSeed\n const colorItems = unique(datasetReshapeInfo.flatMap((d) => d.unfoldInfo.colorItems))\n const colorIdMap = datasetReshapeInfo.reduce<Record<string, { id: string; alias: string }>>((prev, cur) => {\n return { ...prev, ...cur.unfoldInfo.colorIdMap }\n }, {})\n\n return colorItems.map((d) => ({\n id: d,\n alias: colorIdMap[d]?.alias,\n }))\n}\n\nexport const getColorIdMap = (builder: Builder): Record<string, { id: string; alias: string }> => {\n const advancedVSeed = builder.advancedVSeed\n\n if (!advancedVSeed || isTable(builder.vseed) || isPivotTable(builder.vseed)) {\n return {}\n }\n\n const { datasetReshapeInfo } = advancedVSeed\n const colorIdMap = datasetReshapeInfo.reduce<Record<string, { id: string; alias: string }>>((prev, cur) => {\n return { ...prev, ...cur.unfoldInfo.colorIdMap }\n }, {})\n\n return colorIdMap\n}\n"],"names":["getColorItems","builder","advancedVSeed","isTable","isPivotTable","datasetReshapeInfo","colorItems","unique","d","colorIdMap","prev","cur","getColorIdMap"],"mappings":";;AAIO,MAAMA,gBAAgB,CAACC;IAC5B,MAAMC,gBAAgBD,QAAQ,aAAa;IAE3C,IAAI,CAACC,iBAAiBC,QAAQF,QAAQ,KAAK,KAAKG,aAAaH,QAAQ,KAAK,GACxE,OAAO,EAAE;IAGX,MAAM,EAAEI,kBAAkB,EAAE,GAAGH;IAC/B,MAAMI,aAAaC,OAAOF,mBAAmB,OAAO,CAAC,CAACG,IAAMA,EAAE,UAAU,CAAC,UAAU;IACnF,MAAMC,aAAaJ,mBAAmB,MAAM,CAAgD,CAACK,MAAMC,MAC1F;YAAE,GAAGD,IAAI;YAAE,GAAGC,IAAI,UAAU,CAAC,UAAU;QAAC,IAC9C,CAAC;IAEJ,OAAOL,WAAW,GAAG,CAAC,CAACE,IAAO;YAC5B,IAAIA;YACJ,OAAOC,UAAU,CAACD,EAAE,EAAE;QACxB;AACF;AAEO,MAAMI,gBAAgB,CAACX;IAC5B,MAAMC,gBAAgBD,QAAQ,aAAa;IAE3C,IAAI,CAACC,iBAAiBC,QAAQF,QAAQ,KAAK,KAAKG,aAAaH,QAAQ,KAAK,GACxE,OAAO,CAAC;IAGV,MAAM,EAAEI,kBAAkB,EAAE,GAAGH;IAC/B,MAAMO,aAAaJ,mBAAmB,MAAM,CAAgD,CAACK,MAAMC,MAC1F;YAAE,GAAGD,IAAI;YAAE,GAAGC,IAAI,UAAU,CAAC,UAAU;QAAC,IAC9C,CAAC;IAEJ,OAAOF;AACT"}
1
+ {"version":3,"file":"builder/builder/advanced/colorItems.js","sources":["../../../../../src/builder/builder/advanced/colorItems.ts"],"sourcesContent":["import { unique } from 'remeda'\nimport type { Builder } from '../builder'\nimport { isPivotTable, isTable } from 'src/pipeline'\nimport { isLinearColor } from 'src/pipeline/spec/chart/pipes'\nimport { createSpecifiedForColorMapping } from 'src/pipeline/spec/chart/pipes/color/color'\nimport type { Color } from 'src/types'\n\nexport const getColorItems = (builder: Builder): { id: string; alias: string }[] => {\n const advancedVSeed = builder.advancedVSeed\n\n if (!advancedVSeed || isTable(builder.vseed) || isPivotTable(builder.vseed)) {\n return []\n }\n\n const { datasetReshapeInfo } = advancedVSeed\n const colorItems = unique(datasetReshapeInfo.flatMap((d) => d.unfoldInfo.colorItems))\n const colorIdMap = datasetReshapeInfo.reduce<Record<string, { id: string; alias: string }>>((prev, cur) => {\n return { ...prev, ...cur.unfoldInfo.colorIdMap }\n }, {})\n\n return colorItems.map((d) => ({\n id: d,\n alias: colorIdMap[d]?.alias,\n }))\n}\n\nexport const getColorIdMap = (builder: Builder): Record<string, { id: string; alias: string }> => {\n const advancedVSeed = builder.advancedVSeed\n\n if (!advancedVSeed || isTable(builder.vseed) || isPivotTable(builder.vseed)) {\n return {}\n }\n\n const { datasetReshapeInfo } = advancedVSeed\n const colorIdMap = datasetReshapeInfo.reduce<Record<string, { id: string; alias: string }>>((prev, cur) => {\n return { ...prev, ...cur.unfoldInfo.colorIdMap }\n }, {})\n\n return colorIdMap\n}\n\nexport const getColorValueMap = (builder: Builder): Record<string, string> | undefined => {\n const advancedVSeed = builder.advancedVSeed\n\n if (\n !advancedVSeed ||\n isTable(builder.vseed) ||\n isPivotTable(builder.vseed) ||\n isLinearColor(advancedVSeed, builder.vseed)\n ) {\n return undefined\n }\n\n const { datasetReshapeInfo, chartType } = advancedVSeed\n const unfoldInfo = datasetReshapeInfo[0]?.unfoldInfo\n const baseConfig = advancedVSeed.config?.[chartType] as { color?: Color } | undefined\n const colorConfig = baseConfig?.color\n\n if (!unfoldInfo || !colorConfig) {\n return undefined\n }\n\n const colorItems = unfoldInfo.colorItems ?? []\n const colorIdMap = unfoldInfo.colorIdMap\n const colorScheme = colorConfig.colorScheme ?? []\n const specified = createSpecifiedForColorMapping(colorConfig.colorMapping, colorIdMap, colorItems) ?? {}\n\n return colorItems.reduce<Record<string, string>>((prev, colorId, index) => {\n const colorValue = specified[colorId] ?? colorScheme[index % colorScheme.length]\n\n if (colorValue) {\n prev[colorId] = colorValue\n }\n\n return prev\n }, {})\n}\n"],"names":["getColorItems","builder","advancedVSeed","isTable","isPivotTable","datasetReshapeInfo","colorItems","unique","d","colorIdMap","prev","cur","getColorIdMap","getColorValueMap","isLinearColor","chartType","unfoldInfo","baseConfig","colorConfig","colorScheme","specified","createSpecifiedForColorMapping","colorId","index","colorValue"],"mappings":";;;;AAOO,MAAMA,gBAAgB,CAACC;IAC5B,MAAMC,gBAAgBD,QAAQ,aAAa;IAE3C,IAAI,CAACC,iBAAiBC,QAAQF,QAAQ,KAAK,KAAKG,aAAaH,QAAQ,KAAK,GACxE,OAAO,EAAE;IAGX,MAAM,EAAEI,kBAAkB,EAAE,GAAGH;IAC/B,MAAMI,aAAaC,OAAOF,mBAAmB,OAAO,CAAC,CAACG,IAAMA,EAAE,UAAU,CAAC,UAAU;IACnF,MAAMC,aAAaJ,mBAAmB,MAAM,CAAgD,CAACK,MAAMC,MAC1F;YAAE,GAAGD,IAAI;YAAE,GAAGC,IAAI,UAAU,CAAC,UAAU;QAAC,IAC9C,CAAC;IAEJ,OAAOL,WAAW,GAAG,CAAC,CAACE,IAAO;YAC5B,IAAIA;YACJ,OAAOC,UAAU,CAACD,EAAE,EAAE;QACxB;AACF;AAEO,MAAMI,gBAAgB,CAACX;IAC5B,MAAMC,gBAAgBD,QAAQ,aAAa;IAE3C,IAAI,CAACC,iBAAiBC,QAAQF,QAAQ,KAAK,KAAKG,aAAaH,QAAQ,KAAK,GACxE,OAAO,CAAC;IAGV,MAAM,EAAEI,kBAAkB,EAAE,GAAGH;IAC/B,MAAMO,aAAaJ,mBAAmB,MAAM,CAAgD,CAACK,MAAMC,MAC1F;YAAE,GAAGD,IAAI;YAAE,GAAGC,IAAI,UAAU,CAAC,UAAU;QAAC,IAC9C,CAAC;IAEJ,OAAOF;AACT;AAEO,MAAMI,mBAAmB,CAACZ;IAC/B,MAAMC,gBAAgBD,QAAQ,aAAa;IAE3C,IACE,CAACC,iBACDC,QAAQF,QAAQ,KAAK,KACrBG,aAAaH,QAAQ,KAAK,KAC1Ba,cAAcZ,eAAeD,QAAQ,KAAK,GAE1C;IAGF,MAAM,EAAEI,kBAAkB,EAAEU,SAAS,EAAE,GAAGb;IAC1C,MAAMc,aAAaX,kBAAkB,CAAC,EAAE,EAAE;IAC1C,MAAMY,aAAaf,cAAc,MAAM,EAAE,CAACa,UAAU;IACpD,MAAMG,cAAcD,YAAY;IAEhC,IAAI,CAACD,cAAc,CAACE,aAClB;IAGF,MAAMZ,aAAaU,WAAW,UAAU,IAAI,EAAE;IAC9C,MAAMP,aAAaO,WAAW,UAAU;IACxC,MAAMG,cAAcD,YAAY,WAAW,IAAI,EAAE;IACjD,MAAME,YAAYC,+BAA+BH,YAAY,YAAY,EAAET,YAAYH,eAAe,CAAC;IAEvG,OAAOA,WAAW,MAAM,CAAyB,CAACI,MAAMY,SAASC;QAC/D,MAAMC,aAAaJ,SAAS,CAACE,QAAQ,IAAIH,WAAW,CAACI,QAAQJ,YAAY,MAAM,CAAC;QAEhF,IAAIK,YACFd,IAAI,CAACY,QAAQ,GAAGE;QAGlB,OAAOd;IACT,GAAG,CAAC;AACN"}
@@ -1 +1 @@
1
- {"version":3,"file":"builder/builder/buildSpec.js","sources":["../../../../src/builder/builder/buildSpec.ts"],"sourcesContent":["import type { AdvancedVSeed, Pipe, Spec, SpecPipelineContext } from 'src/types'\nimport { Builder } from './builder'\nimport { execPipeline } from '../../pipeline'\nimport { intl } from 'src/i18n'\n\nexport const buildSpec = (builder: Builder, advancedVSeed: AdvancedVSeed): Spec => {\n const start = typeof performance !== 'undefined' ? performance.now() : Date.now()\n\n const { chartType } = builder.vseed\n\n const pipeline = Builder.getSpecPipeline(chartType)\n if (!pipeline) {\n throw new Error(\n `please invoke registerAll or register ${chartType} before build, no spec pipeline for chartType ${chartType}`,\n )\n }\n\n const context: SpecPipelineContext = {\n vseed: builder.vseed,\n advancedVSeed,\n }\n if (builder.locale) {\n intl.setLocale(builder.locale)\n }\n\n try {\n const spec = execPipeline<Spec, SpecPipelineContext>(pipeline as Array<Pipe<Spec, SpecPipelineContext>>, context)\n builder.spec = spec as Spec\n return spec as Spec\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(e)\n throw new Error(`buildSpec error: ${(e as Error).message}`)\n } finally {\n const end = typeof performance !== 'undefined' ? performance.now() : Date.now()\n builder.performance['buildSpec'] = `${(end - start).toFixed(4)}ms`\n }\n}\n"],"names":["buildSpec","builder","advancedVSeed","start","performance","Date","chartType","pipeline","Builder","Error","context","intl","spec","execPipeline","e","console","end"],"mappings":";;;AAKO,MAAMA,YAAY,CAACC,SAAkBC;IAC1C,MAAMC,QAAQ,AAAuB,MAAvB,OAAOC,cAA8BA,YAAY,GAAG,KAAKC,KAAK,GAAG;IAE/E,MAAM,EAAEC,SAAS,EAAE,GAAGL,QAAQ,KAAK;IAEnC,MAAMM,WAAWC,QAAQ,eAAe,CAACF;IACzC,IAAI,CAACC,UACH,MAAM,IAAIE,MACR,CAAC,sCAAsC,EAAEH,UAAU,8CAA8C,EAAEA,WAAW;IAIlH,MAAMI,UAA+B;QACnC,OAAOT,QAAQ,KAAK;QACpBC;IACF;IACA,IAAID,QAAQ,MAAM,EAChBU,KAAK,SAAS,CAACV,QAAQ,MAAM;IAG/B,IAAI;QACF,MAAMW,OAAOC,aAAwCN,UAAoDG;QACzGT,QAAQ,IAAI,GAAGW;QACf,OAAOA;IACT,EAAE,OAAOE,GAAG;QAEVC,QAAQ,KAAK,CAACD;QACd,MAAM,IAAIL,MAAM,CAAC,iBAAiB,EAAGK,EAAY,OAAO,EAAE;IAC5D,SAAU;QACR,MAAME,MAAM,AAAuB,MAAvB,OAAOZ,cAA8BA,YAAY,GAAG,KAAKC,KAAK,GAAG;QAC7EJ,QAAQ,WAAW,CAAC,YAAY,GAAG,GAAIe,AAAAA,CAAAA,MAAMb,KAAI,EAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACpE;AACF"}
1
+ {"version":3,"file":"builder/builder/buildSpec.js","sources":["../../../../src/builder/builder/buildSpec.ts"],"sourcesContent":["import type { AdvancedVSeed, Pipe, Spec, SpecPipelineContext } from 'src/types'\nimport { Builder } from './builder'\nimport { execPipeline } from '../../pipeline'\nimport { intl } from 'src/i18n'\n\nexport const buildSpec = (builder: Builder, advancedVSeed: AdvancedVSeed): Spec => {\n const start = typeof performance !== 'undefined' ? performance.now() : Date.now()\n\n const { chartType } = builder.vseed\n\n const pipeline = Builder.getSpecPipeline(chartType)\n if (!pipeline) {\n throw new Error(\n `please invoke registerAll or register ${chartType} before build, no spec pipeline for chartType ${chartType}`,\n )\n }\n\n const context: SpecPipelineContext = {\n vseed: builder.vseed,\n advancedVSeed,\n }\n if (builder.locale) {\n intl.setLocale(builder.locale)\n }\n\n try {\n const spec = execPipeline<Spec, SpecPipelineContext>(pipeline as Array<Pipe<Spec, SpecPipelineContext>>, context)\n builder.spec = spec as Spec\n return spec as Spec\n } catch (e) {\n // oxlint-disable-next-line no-console\n console.error(e)\n throw new Error(`buildSpec error: ${(e as Error).message}`)\n } finally {\n const end = typeof performance !== 'undefined' ? performance.now() : Date.now()\n builder.performance['buildSpec'] = `${(end - start).toFixed(4)}ms`\n }\n}\n"],"names":["buildSpec","builder","advancedVSeed","start","performance","Date","chartType","pipeline","Builder","Error","context","intl","spec","execPipeline","e","console","end"],"mappings":";;;AAKO,MAAMA,YAAY,CAACC,SAAkBC;IAC1C,MAAMC,QAAQ,AAAuB,MAAvB,OAAOC,cAA8BA,YAAY,GAAG,KAAKC,KAAK,GAAG;IAE/E,MAAM,EAAEC,SAAS,EAAE,GAAGL,QAAQ,KAAK;IAEnC,MAAMM,WAAWC,QAAQ,eAAe,CAACF;IACzC,IAAI,CAACC,UACH,MAAM,IAAIE,MACR,CAAC,sCAAsC,EAAEH,UAAU,8CAA8C,EAAEA,WAAW;IAIlH,MAAMI,UAA+B;QACnC,OAAOT,QAAQ,KAAK;QACpBC;IACF;IACA,IAAID,QAAQ,MAAM,EAChBU,KAAK,SAAS,CAACV,QAAQ,MAAM;IAG/B,IAAI;QACF,MAAMW,OAAOC,aAAwCN,UAAoDG;QACzGT,QAAQ,IAAI,GAAGW;QACf,OAAOA;IACT,EAAE,OAAOE,GAAG;QAEVC,QAAQ,KAAK,CAACD;QACd,MAAM,IAAIL,MAAM,CAAC,iBAAiB,EAAGK,EAAY,OAAO,EAAE;IAC5D,SAAU;QACR,MAAME,MAAM,AAAuB,MAAvB,OAAOZ,cAA8BA,YAAY,GAAG,KAAKC,KAAK,GAAG;QAC7EJ,QAAQ,WAAW,CAAC,YAAY,GAAG,GAAIe,AAAAA,CAAAA,MAAMb,KAAI,EAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACpE;AACF"}
@@ -44,6 +44,10 @@ export declare class Builder<S extends Spec = Spec> implements VSeedBuilder {
44
44
  id: string;
45
45
  alias: string;
46
46
  }>;
47
+ /**
48
+ * @description 获取离散颜色图中 colorId 到最终颜色值的映射
49
+ */
50
+ getColorValueMap: () => Record<string, string> | undefined;
47
51
  /**
48
52
  * @description 获取当前的 VSeed 输入数据
49
53
  */
@@ -3,7 +3,7 @@ import { buildSpec } from "./buildSpec.js";
3
3
  import { build } from "./build.js";
4
4
  import { prepare } from "./prepare.js";
5
5
  import { intl } from "../../i18n/index.js";
6
- import { getColorIdMap, getColorItems } from "./advanced/index.js";
6
+ import { getColorIdMap, getColorItems, getColorValueMap } from "./advanced/index.js";
7
7
  class Builder {
8
8
  _vseed;
9
9
  _advancedVSeed = null;
@@ -24,6 +24,7 @@ class Builder {
24
24
  buildAdvanced = ()=>buildAdvanced(this);
25
25
  getColorItems = ()=>getColorItems(this);
26
26
  getColorIdMap = ()=>getColorIdMap(this);
27
+ getColorValueMap = ()=>getColorValueMap(this);
27
28
  get vseed() {
28
29
  return this._vseed;
29
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"builder/builder/builder.js","sources":["../../../../src/builder/builder/builder.ts"],"sourcesContent":["import type {\n AdvancedPipe,\n AdvancedPipeline,\n AdvancedVSeed,\n ChartType,\n CustomThemeConfig,\n Locale,\n Spec,\n SpecPipe,\n SpecPipeline,\n VSeed,\n VSeedBuilder,\n} from 'src/types'\nimport { buildAdvanced } from './buildAdvanced'\nimport { buildSpec } from './buildSpec'\nimport { build } from './build'\nimport { prepare } from './prepare'\nimport { intl } from 'src/i18n'\nimport { getColorIdMap, getColorItems } from './advanced'\n\nexport class Builder<S extends Spec = Spec> implements VSeedBuilder {\n private _vseed: VSeed\n private _advancedVSeed: AdvancedVSeed | null = null\n private _spec: Spec | null = null\n private _performance: Record<string, string | number> = {}\n\n private _locale: Locale\n\n private _isPrepared: boolean = false\n\n /**\n * @description 初始化 Builder 实例\n */\n constructor(vseed: VSeed) {\n this._vseed = vseed\n this._locale = vseed.locale || intl.getLocale()\n }\n\n /**\n * @description 获取当前 Builder 使用的语言环境\n */\n get locale() {\n return this._locale\n }\n\n /**\n * @description 异步执行动态过滤器代码。在 build() 前调用,用于执行 dynamicFilter 中的 code。幂等方法,多次调用不会重复执行\n */\n prepare = async (): Promise<void> => prepare(this)\n\n /**\n * @description 生成最终的图表配置 (Spec)。这是最常用的核心方法。如果配置中包含 dynamicFilter code,需要先调用 prepare()\n */\n build = <T = S>(): T => build(this) as T\n\n /**\n * @description 将中间层配置 (AdvancedVSeed) 转换为最终 Spec。仅当你需要深度定制中间层配置时使用\n */\n buildSpec = <T = S>(advanced: AdvancedVSeed): T => buildSpec(this, advanced) as T\n\n /**\n * @description 生成中间层配置 (AdvancedVSeed),即图表模版。比原始 VSeed 更详细,暴露了更多图表细节\n */\n buildAdvanced = (): AdvancedVSeed | null => buildAdvanced(this)\n\n /**\n * @description 获取数据中涉及颜色的字段信息。常用于生成图表的图例或颜色筛选器 UI\n */\n getColorItems = () => getColorItems(this)\n\n /**\n * @description 获取颜色字段的详细映射表。Key 为颜色 ID,Value 为详细信息\n */\n getColorIdMap = () => getColorIdMap(this)\n\n /**\n * @description 获取当前的 VSeed 输入数据\n */\n get vseed() {\n return this._vseed\n }\n\n /**\n * @description 更新 VSeed 输入数据。更新后会清除 prepare() 的缓存状态\n */\n set vseed(value) {\n this._vseed = value\n this._isPrepared = false\n }\n\n /**\n * @description 获取 prepare() 状态\n */\n get isPrepared() {\n return this._isPrepared\n }\n\n /**\n * @description 设置 prepare() 状态\n */\n set isPrepared(value: boolean) {\n this._isPrepared = value\n }\n\n /**\n * @description 获取当前的 AdvancedVSeed 中间配置对象\n */\n get advancedVSeed() {\n return this._advancedVSeed\n }\n\n /**\n * @description 设置 AdvancedVSeed 中间配置对象。通常用于缓存或复用已有的中间配置\n */\n set advancedVSeed(value) {\n this._advancedVSeed = value\n }\n\n /**\n * @description 获取当前生成的最终 Spec 对象\n */\n get spec() {\n return this._spec\n }\n\n /**\n * @description 设置 Spec 对象。通常用于缓存\n */\n set spec(value) {\n this._spec = value\n }\n\n /**\n * @description 获取构建过程中的性能统计信息。包含各阶段耗时 (单位: ms)\n */\n get performance() {\n return this._performance\n }\n\n /**\n * @description 设置性能统计信息\n */\n set performance(value) {\n this._performance = value\n }\n\n /**\n * @description [内部方法] 获取指定图表类型的模版构建管线,用于调试 VSeed 到 AdvancedVSeed 的转换过程\n */\n static getAdvancedPipeline = (chartType: ChartType) => {\n const customPipe = Builder._customAdvancedPipe[chartType] as AdvancedPipe\n const originalPipeline = Builder._advancedPipelineMap[chartType] as AdvancedPipeline\n if (!originalPipeline) return originalPipeline\n\n const pipeline = [...originalPipeline]\n if (customPipe) {\n pipeline.push(customPipe)\n }\n return pipeline\n }\n\n /**\n * @description [内部方法] 获取指定图表类型的 Spec 构建管线,用于调试 AdvancedVSeed 到 Spec 的转换过程\n */\n static getSpecPipeline = (chartType: ChartType) => {\n const customPipe = Builder._customSpecPipe[chartType] as SpecPipe\n const originalPipeline = Builder._specPipelineMap[chartType] as SpecPipeline\n if (!originalPipeline) return originalPipeline\n\n const pipeline = [...originalPipeline]\n if (customPipe) {\n pipeline.push(customPipe)\n }\n return pipeline\n }\n\n /**\n * @description 获取指定主题的配置。不传 themeKey 默认返回 'light' 主题\n */\n static getTheme = (themeKey?: string): CustomThemeConfig => Builder._themeMap[themeKey || 'light']\n\n /**\n * @description 获取所有已注册的主题配置\n */\n static getThemeMap = (): Record<string, CustomThemeConfig> => Builder._themeMap\n\n /**\n * @description 静态工厂方法,用于便捷地创建 Builder 实例\n */\n static from = <T extends Spec = Spec>(vseed: VSeed) => new Builder<T>(vseed)\n\n /**\n * @description [扩展方法] 注册新图表类型的模版构建管线\n */\n static registerAdvancedPipeline = (chartType: ChartType, pipeline: AdvancedPipeline) => {\n Builder._advancedPipelineMap[chartType] = pipeline\n }\n\n /**\n * @description [扩展方法] 注册新图表类型的 Spec 构建管线\n */\n static registerSpecPipeline = (chartType: ChartType, pipeline: SpecPipeline) => {\n Builder._specPipelineMap[chartType] = pipeline\n }\n\n /**\n * @description [扩展方法] 修改现有图表的模版构建逻辑,插入自定义 Pipe 影响生成的 AdvancedVSeed\n */\n static updateAdvanced = (chartType: ChartType, pipe: AdvancedPipe) => {\n Builder._customAdvancedPipe[chartType] = pipe\n }\n\n /**\n * @description [扩展方法] 修改现有图表的 Spec 构建逻辑,插入自定义 Pipe 影响生成的最终 Spec\n */\n static updateSpec = (chartType: ChartType, pipe: SpecPipe) => {\n Builder._customSpecPipe[chartType] = pipe\n }\n\n /**\n * @description [扩展方法] 注册自定义主题\n */\n static registerTheme = (key: string, theme: CustomThemeConfig) => {\n Builder._themeMap[key] = theme\n }\n\n private static _advancedPipelineMap: Partial<Record<ChartType, AdvancedPipeline>> = {}\n private static _specPipelineMap: Partial<Record<ChartType, SpecPipeline>> = {}\n private static _customAdvancedPipe: Partial<Record<ChartType, AdvancedPipe>> = {}\n private static _customSpecPipe: Partial<Record<ChartType, SpecPipe>> = {}\n private static _themeMap: Record<string, CustomThemeConfig> = {}\n}\n"],"names":["Builder","vseed","intl","prepare","build","advanced","buildSpec","buildAdvanced","getColorItems","getColorIdMap","value","chartType","customPipe","originalPipeline","pipeline","themeKey","pipe","key","theme"],"mappings":"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"}
1
+ {"version":3,"file":"builder/builder/builder.js","sources":["../../../../src/builder/builder/builder.ts"],"sourcesContent":["import type {\n AdvancedPipe,\n AdvancedPipeline,\n AdvancedVSeed,\n ChartType,\n CustomThemeConfig,\n Locale,\n Spec,\n SpecPipe,\n SpecPipeline,\n VSeed,\n VSeedBuilder,\n} from 'src/types'\nimport { buildAdvanced } from './buildAdvanced'\nimport { buildSpec } from './buildSpec'\nimport { build } from './build'\nimport { prepare } from './prepare'\nimport { intl } from 'src/i18n'\nimport { getColorIdMap, getColorItems, getColorValueMap } from './advanced'\n\nexport class Builder<S extends Spec = Spec> implements VSeedBuilder {\n private _vseed: VSeed\n private _advancedVSeed: AdvancedVSeed | null = null\n private _spec: Spec | null = null\n private _performance: Record<string, string | number> = {}\n\n private _locale: Locale\n\n private _isPrepared: boolean = false\n\n /**\n * @description 初始化 Builder 实例\n */\n constructor(vseed: VSeed) {\n this._vseed = vseed\n this._locale = vseed.locale || intl.getLocale()\n }\n\n /**\n * @description 获取当前 Builder 使用的语言环境\n */\n get locale() {\n return this._locale\n }\n\n /**\n * @description 异步执行动态过滤器代码。在 build() 前调用,用于执行 dynamicFilter 中的 code。幂等方法,多次调用不会重复执行\n */\n prepare = async (): Promise<void> => prepare(this)\n\n /**\n * @description 生成最终的图表配置 (Spec)。这是最常用的核心方法。如果配置中包含 dynamicFilter code,需要先调用 prepare()\n */\n build = <T = S>(): T => build(this) as T\n\n /**\n * @description 将中间层配置 (AdvancedVSeed) 转换为最终 Spec。仅当你需要深度定制中间层配置时使用\n */\n buildSpec = <T = S>(advanced: AdvancedVSeed): T => buildSpec(this, advanced) as T\n\n /**\n * @description 生成中间层配置 (AdvancedVSeed),即图表模版。比原始 VSeed 更详细,暴露了更多图表细节\n */\n buildAdvanced = (): AdvancedVSeed | null => buildAdvanced(this)\n\n /**\n * @description 获取数据中涉及颜色的字段信息。常用于生成图表的图例或颜色筛选器 UI\n */\n getColorItems = () => getColorItems(this)\n\n /**\n * @description 获取颜色字段的详细映射表。Key 为颜色 ID,Value 为详细信息\n */\n getColorIdMap = () => getColorIdMap(this)\n\n /**\n * @description 获取离散颜色图中 colorId 到最终颜色值的映射\n */\n getColorValueMap = () => getColorValueMap(this)\n\n /**\n * @description 获取当前的 VSeed 输入数据\n */\n get vseed() {\n return this._vseed\n }\n\n /**\n * @description 更新 VSeed 输入数据。更新后会清除 prepare() 的缓存状态\n */\n set vseed(value) {\n this._vseed = value\n this._isPrepared = false\n }\n\n /**\n * @description 获取 prepare() 状态\n */\n get isPrepared() {\n return this._isPrepared\n }\n\n /**\n * @description 设置 prepare() 状态\n */\n set isPrepared(value: boolean) {\n this._isPrepared = value\n }\n\n /**\n * @description 获取当前的 AdvancedVSeed 中间配置对象\n */\n get advancedVSeed() {\n return this._advancedVSeed\n }\n\n /**\n * @description 设置 AdvancedVSeed 中间配置对象。通常用于缓存或复用已有的中间配置\n */\n set advancedVSeed(value) {\n this._advancedVSeed = value\n }\n\n /**\n * @description 获取当前生成的最终 Spec 对象\n */\n get spec() {\n return this._spec\n }\n\n /**\n * @description 设置 Spec 对象。通常用于缓存\n */\n set spec(value) {\n this._spec = value\n }\n\n /**\n * @description 获取构建过程中的性能统计信息。包含各阶段耗时 (单位: ms)\n */\n get performance() {\n return this._performance\n }\n\n /**\n * @description 设置性能统计信息\n */\n set performance(value) {\n this._performance = value\n }\n\n /**\n * @description [内部方法] 获取指定图表类型的模版构建管线,用于调试 VSeed 到 AdvancedVSeed 的转换过程\n */\n static getAdvancedPipeline = (chartType: ChartType) => {\n const customPipe = Builder._customAdvancedPipe[chartType] as AdvancedPipe\n const originalPipeline = Builder._advancedPipelineMap[chartType] as AdvancedPipeline\n if (!originalPipeline) return originalPipeline\n\n const pipeline = [...originalPipeline]\n if (customPipe) {\n pipeline.push(customPipe)\n }\n return pipeline\n }\n\n /**\n * @description [内部方法] 获取指定图表类型的 Spec 构建管线,用于调试 AdvancedVSeed 到 Spec 的转换过程\n */\n static getSpecPipeline = (chartType: ChartType) => {\n const customPipe = Builder._customSpecPipe[chartType] as SpecPipe\n const originalPipeline = Builder._specPipelineMap[chartType] as SpecPipeline\n if (!originalPipeline) return originalPipeline\n\n const pipeline = [...originalPipeline]\n if (customPipe) {\n pipeline.push(customPipe)\n }\n return pipeline\n }\n\n /**\n * @description 获取指定主题的配置。不传 themeKey 默认返回 'light' 主题\n */\n static getTheme = (themeKey?: string): CustomThemeConfig => Builder._themeMap[themeKey || 'light']\n\n /**\n * @description 获取所有已注册的主题配置\n */\n static getThemeMap = (): Record<string, CustomThemeConfig> => Builder._themeMap\n\n /**\n * @description 静态工厂方法,用于便捷地创建 Builder 实例\n */\n static from = <T extends Spec = Spec>(vseed: VSeed) => new Builder<T>(vseed)\n\n /**\n * @description [扩展方法] 注册新图表类型的模版构建管线\n */\n static registerAdvancedPipeline = (chartType: ChartType, pipeline: AdvancedPipeline) => {\n Builder._advancedPipelineMap[chartType] = pipeline\n }\n\n /**\n * @description [扩展方法] 注册新图表类型的 Spec 构建管线\n */\n static registerSpecPipeline = (chartType: ChartType, pipeline: SpecPipeline) => {\n Builder._specPipelineMap[chartType] = pipeline\n }\n\n /**\n * @description [扩展方法] 修改现有图表的模版构建逻辑,插入自定义 Pipe 影响生成的 AdvancedVSeed\n */\n static updateAdvanced = (chartType: ChartType, pipe: AdvancedPipe) => {\n Builder._customAdvancedPipe[chartType] = pipe\n }\n\n /**\n * @description [扩展方法] 修改现有图表的 Spec 构建逻辑,插入自定义 Pipe 影响生成的最终 Spec\n */\n static updateSpec = (chartType: ChartType, pipe: SpecPipe) => {\n Builder._customSpecPipe[chartType] = pipe\n }\n\n /**\n * @description [扩展方法] 注册自定义主题\n */\n static registerTheme = (key: string, theme: CustomThemeConfig) => {\n Builder._themeMap[key] = theme\n }\n\n private static _advancedPipelineMap: Partial<Record<ChartType, AdvancedPipeline>> = {}\n private static _specPipelineMap: Partial<Record<ChartType, SpecPipeline>> = {}\n private static _customAdvancedPipe: Partial<Record<ChartType, AdvancedPipe>> = {}\n private static _customSpecPipe: Partial<Record<ChartType, SpecPipe>> = {}\n private static _themeMap: Record<string, CustomThemeConfig> = {}\n}\n"],"names":["Builder","vseed","intl","prepare","build","advanced","buildSpec","buildAdvanced","getColorItems","getColorIdMap","getColorValueMap","value","chartType","customPipe","originalPipeline","pipeline","themeKey","pipe","key","theme"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"dataSelector/selector.js","sources":["../../../src/dataSelector/selector.ts"],"sourcesContent":["import type { Datum } from 'src/types'\nimport type {\n ChartDynamicFilter,\n PartialDatumRes,\n DimensionSelector,\n FieldSelector,\n MeasureSelector,\n PartialDatumSelector,\n Selector,\n Selectors,\n RowWithFieldRes,\n TableDynamicFilter,\n ValueSelector,\n ValueDynamicFilter,\n} from '../types/dataSelector'\nimport { omit } from 'remeda'\nimport { executeFilterCode } from 'src/pipeline/utils/sandbox'\nimport { InnerRowIndex } from 'src/dataReshape'\n\nexport type DynamicFilter = TableDynamicFilter | ChartDynamicFilter | ValueDynamicFilter\nexport type DynamicFilterResult = RowWithFieldRes[] | PartialDatumRes[] | number | string\n\n/**\n * 判断两个数字是否“近似相等”\n */\nfunction nearlyEqual(a: number, b: number, epsilon = 1e-8) {\n // NaN 直接不相等\n if (Number.isNaN(a) || Number.isNaN(b)) return false\n // 引用同一个数 或 完全相等\n if (a === b) return true\n const diff = Math.abs(a - b)\n return diff <= epsilon\n}\n\nexport const selector = (\n vchartDatum: Datum,\n selector: Selector | Selectors | undefined | null,\n selectorMode: 'And' | 'Or' = 'And',\n) => {\n // 无有效选择器, 则认为全部匹配成功\n if (!selector) {\n return true\n }\n\n // 过滤掉 vchart 相关字段\n const vchartKeys = Object.keys(vchartDatum).filter((k) => k.toLocaleLowerCase().startsWith('__vchart'))\n const datum = omit(vchartDatum, vchartKeys) as Datum\n\n // 统一处理选择器为数组\n const selectors = (Array.isArray(selector) ? selector : [selector]) as Selectors\n\n return selectors[selectorMode === 'And' ? 'every' : 'some']((selector) => {\n // 1. 字符串或数字\n if (isValueSelector(selector)) {\n return selectByValue(selector, datum)\n }\n\n // 2. 字段选择器(优先于 MeasureSelector/DimensionSelector 判断,因为字段选择器也有 field 属性)\n else if (isFieldSelector(selector)) {\n return selectByField(selector, datum)\n }\n\n // 3. 指标选择器\n else if (isMeasureSelector(selector)) {\n return selectByMeasure(selector, datum)\n }\n // 4. 维度选择器\n else if (isDimensionSelector(selector)) {\n return selectByDmension(selector, datum)\n }\n // 5. 部分数据对象选择器\n else if (isPartialDatumSelector(selector)) {\n return selectByPartial(selector, datum)\n }\n\n return false\n })\n}\n\nexport const isValueSelector = (selector: Selector): selector is ValueSelector => {\n return typeof selector === 'string' || typeof selector === 'number'\n}\n\nexport const isPartialDatumSelector = (selector: Selector): selector is PartialDatumSelector => {\n return typeof selector === 'object' && selector !== null\n}\n\n/**\n * 判断是否为字段选择器\n * @description 字段选择器只有 field 属性,没有 operator/op/value\n */\nexport const isFieldSelector = (selector: Selector): selector is FieldSelector => {\n return (\n typeof selector === 'object' &&\n selector !== null &&\n 'field' in selector &&\n !('operator' in selector) &&\n !('op' in selector) &&\n !('value' in selector)\n )\n}\n\nexport const isMeasureSelector = (selector: Selector): selector is MeasureSelector => {\n return (\n typeof selector === 'object' &&\n selector !== null &&\n 'field' in selector &&\n ('operator' in selector || 'op' in selector) &&\n 'value' in selector &&\n (['=', '==', '!=', '>', '<', '>=', '<=', 'between'].includes(selector.operator as string) ||\n ['=', '==', '!=', '>', '<', '>=', '<=', 'between'].includes(selector.op as string))\n )\n}\n\nexport const isDimensionSelector = (selector: Selector): selector is DimensionSelector => {\n return (\n typeof selector === 'object' &&\n selector !== null &&\n 'field' in selector &&\n ('operator' in selector || 'op' in selector) &&\n 'value' in selector &&\n (['in', 'not in'].includes(selector.operator as string) || ['in', 'not in'].includes(selector.op as string))\n )\n}\n\nexport const selectByMeasure = (selector: MeasureSelector, datum: Datum) => {\n const op = selector.operator || selector.op\n const selectorValueArr = Array.isArray(selector.value) ? selector.value : [selector.value]\n\n switch (op) {\n case '=':\n if (\n String(datum[selector.field]) === String(selectorValueArr[0]) ||\n nearlyEqual(Number(datum[selector.field]), Number(selectorValueArr[0]))\n ) {\n return true\n }\n break\n case '==':\n if (datum[selector.field] === selectorValueArr[0]) {\n return true\n }\n break\n case '!=':\n if (datum[selector.field] !== selectorValueArr[0]) {\n return true\n }\n break\n case '>':\n if (\n datum[selector.field] > selectorValueArr[0] &&\n !nearlyEqual(Number(datum[selector.field]), Number(selectorValueArr[0]))\n ) {\n return true\n }\n break\n case '<':\n if (\n datum[selector.field] < selectorValueArr[0] &&\n !nearlyEqual(Number(datum[selector.field]), Number(selectorValueArr[0]))\n ) {\n return true\n }\n break\n case '>=':\n if (\n datum[selector.field] >= selectorValueArr[0] ||\n nearlyEqual(Number(datum[selector.field]), Number(selectorValueArr[0]))\n ) {\n return true\n }\n break\n case '<=':\n if (\n datum[selector.field] <= selectorValueArr[0] ||\n nearlyEqual(Number(datum[selector.field]), Number(selectorValueArr[0]))\n ) {\n return true\n }\n break\n case 'between':\n if (\n Array.isArray(selector.value) &&\n (datum[selector.field] >= selectorValueArr[0] ||\n nearlyEqual(Number(datum[selector.field]), Number(selectorValueArr[0]))) &&\n (datum[selector.field] <= selectorValueArr[1] ||\n nearlyEqual(Number(datum[selector.field]), Number(selectorValueArr[1])))\n ) {\n return true\n }\n break\n }\n return false\n}\n\nexport const selectByDmension = (selector: DimensionSelector, datum: Datum) => {\n const op = selector.operator || selector.op\n const selectorValueArr = Array.isArray(selector.value) ? selector.value : [selector.value]\n switch (op) {\n case 'in':\n if (selectorValueArr.includes(datum[selector.field] as string | number)) {\n return true\n }\n break\n case 'not in':\n if (!selectorValueArr.includes(datum[selector.field] as string | number)) {\n return true\n }\n break\n }\n\n return false\n}\n\n/**\n * 通过字段名选择\n * @description 检查 datum 是否包含指定字段(用于列级选择)\n */\nexport const selectByField = (selector: FieldSelector, datum: Datum) => {\n const fields = Array.isArray(selector.field) ? selector.field : [selector.field]\n const datumKeys = Object.keys(datum)\n\n // 检查 datum 的 keys 中是否包含任一指定字段\n return fields.some((field) => datumKeys.includes(field))\n}\n\n/**\n * 检查给定的字段是否与 FieldSelector 匹配\n */\nexport const matchesFieldSelector = (field: string, fieldSelector: FieldSelector): boolean => {\n const fields = Array.isArray(fieldSelector.field) ? fieldSelector.field : [fieldSelector.field]\n return fields.includes(field)\n}\n\nexport const selectByPartial = (selector: PartialDatumSelector, datum: Datum) => {\n return Object.keys(selector).every((key) => datum[key] === selector[key])\n}\n\nexport const selectByValue = (selector: ValueSelector, datum: Datum) => {\n return Object.values(datum).some((v) => v === selector)\n}\n\nconst matchesCellSelector = (cell: Datum, filterRes: RowWithFieldRes) => {\n if (filterRes[InnerRowIndex] !== cell[InnerRowIndex]) return false\n return filterRes.field === '*' || Object.keys(cell).includes(filterRes.field)\n}\n\nconst matchesDatum = (target: Datum, candidate: Datum) => {\n return Object.keys(candidate).every((key) => target[key] === candidate[key])\n}\n\n/**\n * 公共方法:检查是否为动态过滤器结构\n */\nconst isDynamicFilterLike = (selector: any, expectedTypes: string[]): boolean => {\n return (\n typeof selector === 'object' &&\n selector !== null &&\n 'type' in selector &&\n expectedTypes.includes(selector.type) &&\n 'code' in selector &&\n typeof selector.code === 'string'\n )\n}\n\n/**\n * 识别是否为row-with-field动态过滤器\n */\nexport const isRowWithFieldDynamicFilter = (selector: any): selector is TableDynamicFilter => {\n return isDynamicFilterLike(selector, ['row-with-field'])\n}\n\n/**\n * 识别是否为数值动态过滤器(用于标注线等场景)\n */\nexport const isValueDynamicFilter = (selector: any): selector is ValueDynamicFilter => {\n return isDynamicFilterLike(selector, ['value'])\n}\n\n/**\n * 识别是否为动态过滤器(通用判断,包含所有类型的动态过滤器)\n */\nexport const isDynamicFilter = (selector: any): selector is DynamicFilter => {\n return isDynamicFilterLike(selector, ['row-with-field', 'value'])\n}\n\n/**\n * 验证动态过滤器执行结果的类型兼容性\n * @description\n * 在主线程中对 Worker 返回值进行类型特定的验证\n * - TableDynamicFilter: 必须返回包含 __row_index 和 field 的对象数组\n * - ChartDynamicFilter: 必须返回任意对象数组\n * - ValueDynamicFilter: 必须返回 number | string\n *\n * @param result Worker 返回的原始结果\n * @param filter 动态过滤器配置\n * @returns 验证是否通过\n * @throws 当验证失败时抛出 TypeError\n */\nconst validateFilterResult = (result: any, filter: DynamicFilter): void => {\n // ValueDynamicFilter:必须返回 number | string\n if (isValueDynamicFilter(filter)) {\n if (typeof result !== 'number' && typeof result !== 'string') {\n throw new TypeError(\n `ValueDynamicFilter must return a number or string, but got: ${typeof result}. ` + `Code: \"${filter.code}\"`,\n )\n }\n return\n }\n\n // TableDynamicFilter 和 ChartDynamicFilter:必须返回对象数组\n if (!Array.isArray(result)) {\n throw new TypeError(\n `${isRowWithFieldDynamicFilter(filter) ? 'TableDynamicFilter' : 'ChartDynamicFilter'} must return an array, ` +\n `but got: ${typeof result}. Code: \"${filter.code}\"`,\n )\n }\n\n // TableDynamicFilter:检查数组元素结构\n if (isRowWithFieldDynamicFilter(filter)) {\n for (let i = 0; i < result.length; i++) {\n const item = result[i]\n if (typeof item !== 'object' || item === null) {\n throw new TypeError(`TableDynamicFilter array element at index ${i} must be an object, got: ${typeof item}`)\n }\n if (!(InnerRowIndex in item) && '__row_index' in item === false) {\n throw new TypeError(\n `TableDynamicFilter array element at index ${i} must contain __row_index or InnerRowIndex field`,\n )\n }\n if (!('field' in item)) {\n throw new TypeError(`TableDynamicFilter array element at index ${i} must contain 'field' field`)\n }\n }\n }\n}\n\n/**\n * 执行动态过滤器代码,获取匹配结果\n * @description\n * 阶段1:执行阶段 - 一次性执行 dynamicFilter.code,获取所有匹配结果\n * - TableDynamicFilter → CellSelector[]\n * - ChartDynamicFilter → PartialDatumSelector[]\n * - ValueDynamicFilter → number | string\n *\n * @param filter 动态过滤器配置\n * @param allData 完整数据集\n * @returns 执行结果数组或标量值\n */\nexport const executeDynamicFilter = async (\n filter: DynamicFilter,\n allData: Datum[],\n): Promise<{ success: boolean; data: DynamicFilterResult; error?: string }> => {\n try {\n const { success, data, error } = await executeFilterCode({\n code: filter.code,\n data: allData,\n })\n\n if (!success) {\n // eslint-disable-next-line no-console\n console.warn('[vseed] Dynamic filter execution failed:', error)\n return {\n success: false,\n data: isRowWithFieldDynamicFilter(filter) ? [] : '',\n error,\n }\n }\n\n // 主线程验证:根据过滤器类型进行特定检查\n try {\n validateFilterResult(data, filter)\n } catch (validationError) {\n // eslint-disable-next-line no-console\n console.error('[vseed] Dynamic filter result validation failed:', validationError)\n return {\n success: false,\n data: isRowWithFieldDynamicFilter(filter) ? [] : '',\n error: validationError instanceof Error ? validationError.message : String(validationError),\n }\n }\n\n return {\n success,\n data: data as DynamicFilterResult,\n }\n } catch (error) {\n // 捕获所有可能的异常:\n // - Worker 不支持\n // - Worker 池初始化/获取失败\n // - validateCodeSafety 验证失败\n // - 数据验证失败\n const errorMessage = error instanceof Error ? error.message : String(error)\n // eslint-disable-next-line no-console\n console.error('[vseed] Dynamic filter execution threw exception:', errorMessage)\n\n return {\n success: false,\n data: isRowWithFieldDynamicFilter(filter) ? [] : '',\n error: errorMessage,\n }\n }\n}\n\n/**\n * 匹配动态过滤器结果\n * @description\n * 阶段2:匹配阶段 - 判断当前 datum/cell 是否在执行结果中\n * - 使用 OR 策略:结果数组中任一项匹配即返回 true\n * - 表格场景:检查 { row, field } 是否在 CellSelector[] 中\n * - 图表场景:检查 datum 的维度值是否匹配 PartialDatumSelector[] 中任一项\n * - 数值场景:不适用(ValueDynamicFilter返回标量值,不用于匹配)\n *\n * @param result 动态过滤器执行结果(CellSelector[] 或 PartialDatumSelector[],不包括 ValueDynamicFilter)\n * @param datum 当前数据项\n * @param selectorType 选择器类型(用于区分表格和图表动态过滤器)\n * @returns 是否匹配(OR 策略)\n */\nexport const matchDynamicFilterResult = (\n result: DynamicFilterResult,\n datum: Datum,\n selectorType: 'table' | 'chart' = 'table',\n): boolean => {\n // ValueDynamicFilter 不应该通过这个函数处理\n if (typeof result === 'number' || typeof result === 'string') {\n throw new Error('matchDynamicFilterResult does not support ValueDynamicFilter results')\n }\n\n if (selectorType === 'table') {\n return result.some((item) => {\n return matchesCellSelector(datum, item as RowWithFieldRes)\n })\n }\n return result.some((item) => {\n return matchesDatum(datum, item as PartialDatumSelector)\n })\n}\n\n/**\n * 带有动态过滤器支持的选择器\n * @description\n * 处理流程(两阶段设计):\n *\n * 阶段1 - 执行(Execute):\n * - 在 prepare() 阶段执行,结果写入 dynamicFilter.result\n * - TableDynamicFilter → CellSelector[]\n * - ChartDynamicFilter → PartialDatumSelector[]\n * - ValueDynamicFilter → number | string(用于读取,不用于匹配)\n *\n * 阶段2 - 匹配(Match):\n * - 读取 dynamicFilter.result\n * - 使用 OR 策略:结果数组中任一项匹配即返回 true\n * - 表格:判断 { row, field } 是否在 CellSelector[] 中\n * - 图表:判断 datum 是否匹配 PartialDatumSelector[] 中任一项\n * - 数值:不用于匹配,直接返回 false(数值过滤器在主要用于标注线值,不用于行列选择)\n *\n * @param vchartDatum 单个数据项\n * @param selectorConfig 选择器配置(可包含 DynamicFilter)\n * @param defaultSelector 传统选择器(仅在 DynamicFilter 无结果且有 fallback 时使用)\n * @returns 该数据项是否符合选择条件\n */\nexport const selectorWithDynamicFilter = (\n vchartDatum: Datum,\n selectorConfig: DynamicFilter,\n defaultSelector?: Selector | Selector[] | null,\n): boolean => {\n // 无有效选择器, 则认为全部匹配成功\n if (!selectorConfig) {\n return true\n }\n\n // ValueDynamicFilter 不用于选择,直接返回 false\n if (isValueDynamicFilter(selectorConfig)) {\n if (selectorConfig.fallback) {\n const fallbackSelector = Array.isArray(selectorConfig.fallback)\n ? selectorConfig.fallback\n : [selectorConfig.fallback]\n return selector(vchartDatum, fallbackSelector)\n }\n return defaultSelector ? selector(vchartDatum, defaultSelector) : false\n }\n\n const selectorType = isRowWithFieldDynamicFilter(selectorConfig) ? 'table' : 'chart'\n\n // 优先使用预先执行的结果\n if (selectorConfig.result?.success && selectorConfig.result.data) {\n return matchDynamicFilterResult(selectorConfig.result.data, vchartDatum, selectorType)\n }\n\n if (selectorConfig.fallback) {\n // 如果有 fallback,使用传统 selector 进行匹配\n const fallbackSelector = Array.isArray(selectorConfig.fallback)\n ? selectorConfig.fallback\n : [selectorConfig.fallback]\n return selector(vchartDatum, fallbackSelector)\n }\n\n // 没有结果也没有 fallback,返回 false\n return defaultSelector ? selector(vchartDatum, defaultSelector) : false\n}\n"],"names":["nearlyEqual","a","b","epsilon","Number","diff","Math","selector","vchartDatum","selectorMode","vchartKeys","Object","k","datum","omit","selectors","Array","isValueSelector","selectByValue","isFieldSelector","selectByField","isMeasureSelector","selectByMeasure","isDimensionSelector","selectByDmension","isPartialDatumSelector","selectByPartial","op","selectorValueArr","String","fields","datumKeys","field","matchesFieldSelector","fieldSelector","key","v","matchesCellSelector","cell","filterRes","InnerRowIndex","matchesDatum","target","candidate","isDynamicFilterLike","expectedTypes","isRowWithFieldDynamicFilter","isValueDynamicFilter","isDynamicFilter","validateFilterResult","result","filter","TypeError","i","item","executeDynamicFilter","allData","success","data","error","executeFilterCode","console","validationError","Error","errorMessage","matchDynamicFilterResult","selectorType","selectorWithDynamicFilter","selectorConfig","defaultSelector","fallbackSelector"],"mappings":"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"}
1
+ {"version":3,"file":"dataSelector/selector.js","sources":["../../../src/dataSelector/selector.ts"],"sourcesContent":["import type { Datum } from 'src/types'\nimport type {\n ChartDynamicFilter,\n PartialDatumRes,\n DimensionSelector,\n FieldSelector,\n MeasureSelector,\n PartialDatumSelector,\n Selector,\n Selectors,\n RowWithFieldRes,\n TableDynamicFilter,\n ValueSelector,\n ValueDynamicFilter,\n} from '../types/dataSelector'\nimport { omit } from 'remeda'\nimport { executeFilterCode } from 'src/pipeline/utils/sandbox'\nimport { InnerRowIndex } from 'src/dataReshape'\n\nexport type DynamicFilter = TableDynamicFilter | ChartDynamicFilter | ValueDynamicFilter\nexport type DynamicFilterResult = RowWithFieldRes[] | PartialDatumRes[] | number | string\n\n/**\n * 判断两个数字是否“近似相等”\n */\nfunction nearlyEqual(a: number, b: number, epsilon = 1e-8) {\n // NaN 直接不相等\n if (Number.isNaN(a) || Number.isNaN(b)) return false\n // 引用同一个数 或 完全相等\n if (a === b) return true\n const diff = Math.abs(a - b)\n return diff <= epsilon\n}\n\nexport const selector = (\n vchartDatum: Datum,\n selector: Selector | Selectors | undefined | null,\n selectorMode: 'And' | 'Or' = 'And',\n) => {\n // 无有效选择器, 则认为全部匹配成功\n if (!selector) {\n return true\n }\n\n // 过滤掉 vchart 相关字段\n const vchartKeys = Object.keys(vchartDatum).filter((k) => k.toLocaleLowerCase().startsWith('__vchart'))\n const datum = omit(vchartDatum, vchartKeys) as Datum\n\n // 统一处理选择器为数组\n const selectors = (Array.isArray(selector) ? selector : [selector]) as Selectors\n\n return selectors[selectorMode === 'And' ? 'every' : 'some']((selector) => {\n // 1. 字符串或数字\n if (isValueSelector(selector)) {\n return selectByValue(selector, datum)\n }\n\n // 2. 字段选择器(优先于 MeasureSelector/DimensionSelector 判断,因为字段选择器也有 field 属性)\n else if (isFieldSelector(selector)) {\n return selectByField(selector, datum)\n }\n\n // 3. 指标选择器\n else if (isMeasureSelector(selector)) {\n return selectByMeasure(selector, datum)\n }\n // 4. 维度选择器\n else if (isDimensionSelector(selector)) {\n return selectByDmension(selector, datum)\n }\n // 5. 部分数据对象选择器\n else if (isPartialDatumSelector(selector)) {\n return selectByPartial(selector, datum)\n }\n\n return false\n })\n}\n\nexport const isValueSelector = (selector: Selector): selector is ValueSelector => {\n return typeof selector === 'string' || typeof selector === 'number'\n}\n\nexport const isPartialDatumSelector = (selector: Selector): selector is PartialDatumSelector => {\n return typeof selector === 'object' && selector !== null\n}\n\n/**\n * 判断是否为字段选择器\n * @description 字段选择器只有 field 属性,没有 operator/op/value\n */\nexport const isFieldSelector = (selector: Selector): selector is FieldSelector => {\n return (\n typeof selector === 'object' &&\n selector !== null &&\n 'field' in selector &&\n !('operator' in selector) &&\n !('op' in selector) &&\n !('value' in selector)\n )\n}\n\nexport const isMeasureSelector = (selector: Selector): selector is MeasureSelector => {\n return (\n typeof selector === 'object' &&\n selector !== null &&\n 'field' in selector &&\n ('operator' in selector || 'op' in selector) &&\n 'value' in selector &&\n (['=', '==', '!=', '>', '<', '>=', '<=', 'between'].includes(selector.operator as string) ||\n ['=', '==', '!=', '>', '<', '>=', '<=', 'between'].includes(selector.op as string))\n )\n}\n\nexport const isDimensionSelector = (selector: Selector): selector is DimensionSelector => {\n return (\n typeof selector === 'object' &&\n selector !== null &&\n 'field' in selector &&\n ('operator' in selector || 'op' in selector) &&\n 'value' in selector &&\n (['in', 'not in'].includes(selector.operator as string) || ['in', 'not in'].includes(selector.op as string))\n )\n}\n\nexport const selectByMeasure = (selector: MeasureSelector, datum: Datum) => {\n const op = selector.operator || selector.op\n const selectorValueArr = Array.isArray(selector.value) ? selector.value : [selector.value]\n\n switch (op) {\n case '=':\n if (\n String(datum[selector.field]) === String(selectorValueArr[0]) ||\n nearlyEqual(Number(datum[selector.field]), Number(selectorValueArr[0]))\n ) {\n return true\n }\n break\n case '==':\n if (datum[selector.field] === selectorValueArr[0]) {\n return true\n }\n break\n case '!=':\n if (datum[selector.field] !== selectorValueArr[0]) {\n return true\n }\n break\n case '>':\n if (\n datum[selector.field] > selectorValueArr[0] &&\n !nearlyEqual(Number(datum[selector.field]), Number(selectorValueArr[0]))\n ) {\n return true\n }\n break\n case '<':\n if (\n datum[selector.field] < selectorValueArr[0] &&\n !nearlyEqual(Number(datum[selector.field]), Number(selectorValueArr[0]))\n ) {\n return true\n }\n break\n case '>=':\n if (\n datum[selector.field] >= selectorValueArr[0] ||\n nearlyEqual(Number(datum[selector.field]), Number(selectorValueArr[0]))\n ) {\n return true\n }\n break\n case '<=':\n if (\n datum[selector.field] <= selectorValueArr[0] ||\n nearlyEqual(Number(datum[selector.field]), Number(selectorValueArr[0]))\n ) {\n return true\n }\n break\n case 'between':\n if (\n Array.isArray(selector.value) &&\n (datum[selector.field] >= selectorValueArr[0] ||\n nearlyEqual(Number(datum[selector.field]), Number(selectorValueArr[0]))) &&\n (datum[selector.field] <= selectorValueArr[1] ||\n nearlyEqual(Number(datum[selector.field]), Number(selectorValueArr[1])))\n ) {\n return true\n }\n break\n }\n return false\n}\n\nexport const selectByDmension = (selector: DimensionSelector, datum: Datum) => {\n const op = selector.operator || selector.op\n const selectorValueArr = Array.isArray(selector.value) ? selector.value : [selector.value]\n switch (op) {\n case 'in':\n if (selectorValueArr.includes(datum[selector.field] as string | number)) {\n return true\n }\n break\n case 'not in':\n if (!selectorValueArr.includes(datum[selector.field] as string | number)) {\n return true\n }\n break\n }\n\n return false\n}\n\n/**\n * 通过字段名选择\n * @description 检查 datum 是否包含指定字段(用于列级选择)\n */\nexport const selectByField = (selector: FieldSelector, datum: Datum) => {\n const fields = Array.isArray(selector.field) ? selector.field : [selector.field]\n const datumKeys = Object.keys(datum)\n\n // 检查 datum 的 keys 中是否包含任一指定字段\n return fields.some((field) => datumKeys.includes(field))\n}\n\n/**\n * 检查给定的字段是否与 FieldSelector 匹配\n */\nexport const matchesFieldSelector = (field: string, fieldSelector: FieldSelector): boolean => {\n const fields = Array.isArray(fieldSelector.field) ? fieldSelector.field : [fieldSelector.field]\n return fields.includes(field)\n}\n\nexport const selectByPartial = (selector: PartialDatumSelector, datum: Datum) => {\n return Object.keys(selector).every((key) => datum[key] === selector[key])\n}\n\nexport const selectByValue = (selector: ValueSelector, datum: Datum) => {\n return Object.values(datum).some((v) => v === selector)\n}\n\nconst matchesCellSelector = (cell: Datum, filterRes: RowWithFieldRes) => {\n if (filterRes[InnerRowIndex] !== cell[InnerRowIndex]) return false\n return filterRes.field === '*' || Object.keys(cell).includes(filterRes.field)\n}\n\nconst matchesDatum = (target: Datum, candidate: Datum) => {\n return Object.keys(candidate).every((key) => target[key] === candidate[key])\n}\n\n/**\n * 公共方法:检查是否为动态过滤器结构\n */\nconst isDynamicFilterLike = (selector: any, expectedTypes: string[]): boolean => {\n return (\n typeof selector === 'object' &&\n selector !== null &&\n 'type' in selector &&\n expectedTypes.includes(selector.type) &&\n 'code' in selector &&\n typeof selector.code === 'string'\n )\n}\n\n/**\n * 识别是否为row-with-field动态过滤器\n */\nexport const isRowWithFieldDynamicFilter = (selector: any): selector is TableDynamicFilter => {\n return isDynamicFilterLike(selector, ['row-with-field'])\n}\n\n/**\n * 识别是否为数值动态过滤器(用于标注线等场景)\n */\nexport const isValueDynamicFilter = (selector: any): selector is ValueDynamicFilter => {\n return isDynamicFilterLike(selector, ['value'])\n}\n\n/**\n * 识别是否为动态过滤器(通用判断,包含所有类型的动态过滤器)\n */\nexport const isDynamicFilter = (selector: any): selector is DynamicFilter => {\n return isDynamicFilterLike(selector, ['row-with-field', 'value'])\n}\n\n/**\n * 验证动态过滤器执行结果的类型兼容性\n * @description\n * 在主线程中对 Worker 返回值进行类型特定的验证\n * - TableDynamicFilter: 必须返回包含 __row_index 和 field 的对象数组\n * - ChartDynamicFilter: 必须返回任意对象数组\n * - ValueDynamicFilter: 必须返回 number | string\n *\n * @param result Worker 返回的原始结果\n * @param filter 动态过滤器配置\n * @returns 验证是否通过\n * @throws 当验证失败时抛出 TypeError\n */\nconst validateFilterResult = (result: any, filter: DynamicFilter): void => {\n // ValueDynamicFilter:必须返回 number | string\n if (isValueDynamicFilter(filter)) {\n if (typeof result !== 'number' && typeof result !== 'string') {\n throw new TypeError(\n `ValueDynamicFilter must return a number or string, but got: ${typeof result}. ` + `Code: \"${filter.code}\"`,\n )\n }\n return\n }\n\n // TableDynamicFilter 和 ChartDynamicFilter:必须返回对象数组\n if (!Array.isArray(result)) {\n throw new TypeError(\n `${isRowWithFieldDynamicFilter(filter) ? 'TableDynamicFilter' : 'ChartDynamicFilter'} must return an array, ` +\n `but got: ${typeof result}. Code: \"${filter.code}\"`,\n )\n }\n\n // TableDynamicFilter:检查数组元素结构\n if (isRowWithFieldDynamicFilter(filter)) {\n for (let i = 0; i < result.length; i++) {\n const item = result[i]\n if (typeof item !== 'object' || item === null) {\n throw new TypeError(`TableDynamicFilter array element at index ${i} must be an object, got: ${typeof item}`)\n }\n if (!(InnerRowIndex in item) && '__row_index' in item === false) {\n throw new TypeError(\n `TableDynamicFilter array element at index ${i} must contain __row_index or InnerRowIndex field`,\n )\n }\n if (!('field' in item)) {\n throw new TypeError(`TableDynamicFilter array element at index ${i} must contain 'field' field`)\n }\n }\n }\n}\n\n/**\n * 执行动态过滤器代码,获取匹配结果\n * @description\n * 阶段1:执行阶段 - 一次性执行 dynamicFilter.code,获取所有匹配结果\n * - TableDynamicFilter → CellSelector[]\n * - ChartDynamicFilter → PartialDatumSelector[]\n * - ValueDynamicFilter → number | string\n *\n * @param filter 动态过滤器配置\n * @param allData 完整数据集\n * @returns 执行结果数组或标量值\n */\nexport const executeDynamicFilter = async (\n filter: DynamicFilter,\n allData: Datum[],\n): Promise<{ success: boolean; data: DynamicFilterResult; error?: string }> => {\n try {\n const { success, data, error } = await executeFilterCode({\n code: filter.code,\n data: allData,\n })\n\n if (!success) {\n // oxlint-disable-next-line no-console\n console.warn('[vseed] Dynamic filter execution failed:', error)\n return {\n success: false,\n data: isRowWithFieldDynamicFilter(filter) ? [] : '',\n error,\n }\n }\n\n // 主线程验证:根据过滤器类型进行特定检查\n try {\n validateFilterResult(data, filter)\n } catch (validationError) {\n // oxlint-disable-next-line no-console\n console.error('[vseed] Dynamic filter result validation failed:', validationError)\n return {\n success: false,\n data: isRowWithFieldDynamicFilter(filter) ? [] : '',\n error: validationError instanceof Error ? validationError.message : String(validationError),\n }\n }\n\n return {\n success,\n data: data as DynamicFilterResult,\n }\n } catch (error) {\n // 捕获所有可能的异常:\n // - Worker 不支持\n // - Worker 池初始化/获取失败\n // - validateCodeSafety 验证失败\n // - 数据验证失败\n const errorMessage = error instanceof Error ? error.message : String(error)\n // oxlint-disable-next-line no-console\n console.error('[vseed] Dynamic filter execution threw exception:', errorMessage)\n\n return {\n success: false,\n data: isRowWithFieldDynamicFilter(filter) ? [] : '',\n error: errorMessage,\n }\n }\n}\n\n/**\n * 匹配动态过滤器结果\n * @description\n * 阶段2:匹配阶段 - 判断当前 datum/cell 是否在执行结果中\n * - 使用 OR 策略:结果数组中任一项匹配即返回 true\n * - 表格场景:检查 { row, field } 是否在 CellSelector[] 中\n * - 图表场景:检查 datum 的维度值是否匹配 PartialDatumSelector[] 中任一项\n * - 数值场景:不适用(ValueDynamicFilter返回标量值,不用于匹配)\n *\n * @param result 动态过滤器执行结果(CellSelector[] 或 PartialDatumSelector[],不包括 ValueDynamicFilter)\n * @param datum 当前数据项\n * @param selectorType 选择器类型(用于区分表格和图表动态过滤器)\n * @returns 是否匹配(OR 策略)\n */\nexport const matchDynamicFilterResult = (\n result: DynamicFilterResult,\n datum: Datum,\n selectorType: 'table' | 'chart' = 'table',\n): boolean => {\n // ValueDynamicFilter 不应该通过这个函数处理\n if (typeof result === 'number' || typeof result === 'string') {\n throw new Error('matchDynamicFilterResult does not support ValueDynamicFilter results')\n }\n\n if (selectorType === 'table') {\n return result.some((item) => {\n return matchesCellSelector(datum, item as RowWithFieldRes)\n })\n }\n return result.some((item) => {\n return matchesDatum(datum, item as PartialDatumSelector)\n })\n}\n\n/**\n * 带有动态过滤器支持的选择器\n * @description\n * 处理流程(两阶段设计):\n *\n * 阶段1 - 执行(Execute):\n * - 在 prepare() 阶段执行,结果写入 dynamicFilter.result\n * - TableDynamicFilter → CellSelector[]\n * - ChartDynamicFilter → PartialDatumSelector[]\n * - ValueDynamicFilter → number | string(用于读取,不用于匹配)\n *\n * 阶段2 - 匹配(Match):\n * - 读取 dynamicFilter.result\n * - 使用 OR 策略:结果数组中任一项匹配即返回 true\n * - 表格:判断 { row, field } 是否在 CellSelector[] 中\n * - 图表:判断 datum 是否匹配 PartialDatumSelector[] 中任一项\n * - 数值:不用于匹配,直接返回 false(数值过滤器在主要用于标注线值,不用于行列选择)\n *\n * @param vchartDatum 单个数据项\n * @param selectorConfig 选择器配置(可包含 DynamicFilter)\n * @param defaultSelector 传统选择器(仅在 DynamicFilter 无结果且有 fallback 时使用)\n * @returns 该数据项是否符合选择条件\n */\nexport const selectorWithDynamicFilter = (\n vchartDatum: Datum,\n selectorConfig: DynamicFilter,\n defaultSelector?: Selector | Selector[] | null,\n): boolean => {\n // 无有效选择器, 则认为全部匹配成功\n if (!selectorConfig) {\n return true\n }\n\n // ValueDynamicFilter 不用于选择,直接返回 false\n if (isValueDynamicFilter(selectorConfig)) {\n if (selectorConfig.fallback) {\n const fallbackSelector = Array.isArray(selectorConfig.fallback)\n ? selectorConfig.fallback\n : [selectorConfig.fallback]\n return selector(vchartDatum, fallbackSelector)\n }\n return defaultSelector ? selector(vchartDatum, defaultSelector) : false\n }\n\n const selectorType = isRowWithFieldDynamicFilter(selectorConfig) ? 'table' : 'chart'\n\n // 优先使用预先执行的结果\n if (selectorConfig.result?.success && selectorConfig.result.data) {\n return matchDynamicFilterResult(selectorConfig.result.data, vchartDatum, selectorType)\n }\n\n if (selectorConfig.fallback) {\n // 如果有 fallback,使用传统 selector 进行匹配\n const fallbackSelector = Array.isArray(selectorConfig.fallback)\n ? selectorConfig.fallback\n : [selectorConfig.fallback]\n return selector(vchartDatum, fallbackSelector)\n }\n\n // 没有结果也没有 fallback,返回 false\n return defaultSelector ? selector(vchartDatum, defaultSelector) : false\n}\n"],"names":["nearlyEqual","a","b","epsilon","Number","diff","Math","selector","vchartDatum","selectorMode","vchartKeys","Object","k","datum","omit","selectors","Array","isValueSelector","selectByValue","isFieldSelector","selectByField","isMeasureSelector","selectByMeasure","isDimensionSelector","selectByDmension","isPartialDatumSelector","selectByPartial","op","selectorValueArr","String","fields","datumKeys","field","matchesFieldSelector","fieldSelector","key","v","matchesCellSelector","cell","filterRes","InnerRowIndex","matchesDatum","target","candidate","isDynamicFilterLike","expectedTypes","isRowWithFieldDynamicFilter","isValueDynamicFilter","isDynamicFilter","validateFilterResult","result","filter","TypeError","i","item","executeDynamicFilter","allData","success","data","error","executeFilterCode","console","validationError","Error","errorMessage","matchDynamicFilterResult","selectorType","selectorWithDynamicFilter","selectorConfig","defaultSelector","fallbackSelector"],"mappings":"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"}
@@ -21,7 +21,8 @@ const columnConfig = (advancedVSeed, context)=>{
21
21
  'barGapInGroup',
22
22
  'brush',
23
23
  'dimensionLinkage',
24
- 'player'
24
+ 'player',
25
+ 'animation'
25
26
  ]);
26
27
  const config = replaceNullToUndefined(pickedConfig);
27
28
  result.config = {
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/advanced/chart/pipes/config/column.js","sources":["../../../../../../../src/pipeline/advanced/chart/pipes/config/column.ts"],"sourcesContent":["import { pick } from 'remeda'\nimport { replaceNullToUndefined } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed, Config } from 'src/types'\n\nexport const columnConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const pickedConfig = pick(vseed, [\n 'backgroundColor',\n 'color',\n 'label',\n 'legend',\n 'regionPadding',\n 'tooltip',\n 'xAxis',\n 'yAxis',\n 'crosshairRect',\n 'stackCornerRadius',\n 'barMaxWidth',\n 'barGapInGroup',\n 'brush',\n 'dimensionLinkage',\n 'player',\n ]) as Config['column']\n\n const config = replaceNullToUndefined(pickedConfig)\n\n result.config = {\n ...result.config,\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n"],"names":["columnConfig","advancedVSeed","context","vseed","chartType","result","pickedConfig","pick","config","replaceNullToUndefined"],"mappings":";;AAIO,MAAMA,eAA6B,CAACC,eAAeC;IACxD,MAAM,EAAEC,KAAK,EAAE,GAAGD;IAClB,MAAM,EAAEE,SAAS,EAAE,GAAGD;IACtB,MAAME,SAAS;QACb,GAAGJ,aAAa;IAClB;IAEA,MAAMK,eAAeC,KAAKJ,OAAO;QAC/B;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;KACD;IAED,MAAMK,SAASC,uBAAuBH;IAEtCD,OAAO,MAAM,GAAG;QACd,GAAGA,OAAO,MAAM;QAChB,CAACD,UAAU,EAAE;YACX,GAAGI,MAAM;QACX;IACF;IAEA,OAAOH;AACT"}
1
+ {"version":3,"file":"pipeline/advanced/chart/pipes/config/column.js","sources":["../../../../../../../src/pipeline/advanced/chart/pipes/config/column.ts"],"sourcesContent":["import { pick } from 'remeda'\nimport { replaceNullToUndefined } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed, Config } from 'src/types'\n\nexport const columnConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const pickedConfig = pick(vseed, [\n 'backgroundColor',\n 'color',\n 'label',\n 'legend',\n 'regionPadding',\n 'tooltip',\n 'xAxis',\n 'yAxis',\n 'crosshairRect',\n 'stackCornerRadius',\n 'barMaxWidth',\n 'barGapInGroup',\n 'brush',\n 'dimensionLinkage',\n 'player',\n 'animation',\n ]) as Config['column']\n\n const config = replaceNullToUndefined(pickedConfig)\n\n result.config = {\n ...result.config,\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n"],"names":["columnConfig","advancedVSeed","context","vseed","chartType","result","pickedConfig","pick","config","replaceNullToUndefined"],"mappings":";;AAIO,MAAMA,eAA6B,CAACC,eAAeC;IACxD,MAAM,EAAEC,KAAK,EAAE,GAAGD;IAClB,MAAM,EAAEE,SAAS,EAAE,GAAGD;IACtB,MAAME,SAAS;QACb,GAAGJ,aAAa;IAClB;IAEA,MAAMK,eAAeC,KAAKJ,OAAO;QAC/B;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;KACD;IAED,MAAMK,SAASC,uBAAuBH;IAEtCD,OAAO,MAAM,GAAG;QACd,GAAGA,OAAO,MAAM;QAChB,CAACD,UAAU,EAAE;YACX,GAAGI,MAAM;QACX;IACF;IAEA,OAAOH;AACT"}
@@ -18,7 +18,8 @@ const lineConfig = (advancedVSeed, context)=>{
18
18
  'crosshairLine',
19
19
  'brush',
20
20
  'dimensionLinkage',
21
- 'player'
21
+ 'player',
22
+ 'animation'
22
23
  ]);
23
24
  const config = replaceNullToUndefined(pickedConfig);
24
25
  result.config = {
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/advanced/chart/pipes/config/line.js","sources":["../../../../../../../src/pipeline/advanced/chart/pipes/config/line.ts"],"sourcesContent":["import { pick } from 'remeda'\nimport { replaceNullToUndefined } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed, Config } from 'src/types'\n\nexport const lineConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const pickedConfig = pick(vseed, [\n 'backgroundColor',\n 'color',\n 'label',\n 'legend',\n 'regionPadding',\n 'tooltip',\n 'xAxis',\n 'yAxis',\n 'crosshairLine',\n 'brush',\n 'dimensionLinkage',\n 'player',\n ]) as Config['line']\n\n const config = replaceNullToUndefined(pickedConfig)\n\n result.config = {\n ...result.config,\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n"],"names":["lineConfig","advancedVSeed","context","vseed","chartType","result","pickedConfig","pick","config","replaceNullToUndefined"],"mappings":";;AAIO,MAAMA,aAA2B,CAACC,eAAeC;IACtD,MAAM,EAAEC,KAAK,EAAE,GAAGD;IAClB,MAAM,EAAEE,SAAS,EAAE,GAAGD;IACtB,MAAME,SAAS;QACb,GAAGJ,aAAa;IAClB;IAEA,MAAMK,eAAeC,KAAKJ,OAAO;QAC/B;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;KACD;IAED,MAAMK,SAASC,uBAAuBH;IAEtCD,OAAO,MAAM,GAAG;QACd,GAAGA,OAAO,MAAM;QAChB,CAACD,UAAU,EAAE;YACX,GAAGI,MAAM;QACX;IACF;IAEA,OAAOH;AACT"}
1
+ {"version":3,"file":"pipeline/advanced/chart/pipes/config/line.js","sources":["../../../../../../../src/pipeline/advanced/chart/pipes/config/line.ts"],"sourcesContent":["import { pick } from 'remeda'\nimport { replaceNullToUndefined } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed, Config } from 'src/types'\n\nexport const lineConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const pickedConfig = pick(vseed, [\n 'backgroundColor',\n 'color',\n 'label',\n 'legend',\n 'regionPadding',\n 'tooltip',\n 'xAxis',\n 'yAxis',\n 'crosshairLine',\n 'brush',\n 'dimensionLinkage',\n 'player',\n 'animation',\n ]) as Config['line']\n\n const config = replaceNullToUndefined(pickedConfig)\n\n result.config = {\n ...result.config,\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n"],"names":["lineConfig","advancedVSeed","context","vseed","chartType","result","pickedConfig","pick","config","replaceNullToUndefined"],"mappings":";;AAIO,MAAMA,aAA2B,CAACC,eAAeC;IACtD,MAAM,EAAEC,KAAK,EAAE,GAAGD;IAClB,MAAM,EAAEE,SAAS,EAAE,GAAGD;IACtB,MAAME,SAAS;QACb,GAAGJ,aAAa;IAClB;IAEA,MAAMK,eAAeC,KAAKJ,OAAO;QAC/B;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;KACD;IAED,MAAMK,SAASC,uBAAuBH;IAEtCD,OAAO,MAAM,GAAG;QACd,GAAGA,OAAO,MAAM;QAChB,CAACD,UAAU,EAAE;YACX,GAAGI,MAAM;QACX;IACF;IAEA,OAAOH;AACT"}
@@ -13,7 +13,8 @@ const pieConfig = (advancedVSeed, context)=>{
13
13
  'legend',
14
14
  'tooltip',
15
15
  'player',
16
- 'brush'
16
+ 'brush',
17
+ 'animation'
17
18
  ]);
18
19
  const config = replaceNullToUndefined(pickedConfig);
19
20
  result.config = {
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/advanced/chart/pipes/config/pie.js","sources":["../../../../../../../src/pipeline/advanced/chart/pipes/config/pie.ts"],"sourcesContent":["import { pick } from 'remeda'\nimport { replaceNullToUndefined } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed, Config } from 'src/types'\n\nexport const pieConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const pickedConfig = pick(vseed, [\n 'backgroundColor',\n 'color',\n 'label',\n 'legend',\n 'tooltip',\n 'player',\n 'brush',\n ]) as Config['pie']\n\n const config = replaceNullToUndefined(pickedConfig)\n\n result.config = {\n ...result.config,\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n"],"names":["pieConfig","advancedVSeed","context","vseed","chartType","result","pickedConfig","pick","config","replaceNullToUndefined"],"mappings":";;AAIO,MAAMA,YAA0B,CAACC,eAAeC;IACrD,MAAM,EAAEC,KAAK,EAAE,GAAGD;IAClB,MAAM,EAAEE,SAAS,EAAE,GAAGD;IACtB,MAAME,SAAS;QACb,GAAGJ,aAAa;IAClB;IAEA,MAAMK,eAAeC,KAAKJ,OAAO;QAC/B;QACA;QACA;QACA;QACA;QACA;QACA;KACD;IAED,MAAMK,SAASC,uBAAuBH;IAEtCD,OAAO,MAAM,GAAG;QACd,GAAGA,OAAO,MAAM;QAChB,CAACD,UAAU,EAAE;YACX,GAAGI,MAAM;QACX;IACF;IAEA,OAAOH;AACT"}
1
+ {"version":3,"file":"pipeline/advanced/chart/pipes/config/pie.js","sources":["../../../../../../../src/pipeline/advanced/chart/pipes/config/pie.ts"],"sourcesContent":["import { pick } from 'remeda'\nimport { replaceNullToUndefined } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed, Config } from 'src/types'\n\nexport const pieConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const pickedConfig = pick(vseed, [\n 'backgroundColor',\n 'color',\n 'label',\n 'legend',\n 'tooltip',\n 'player',\n 'brush',\n 'animation',\n ]) as Config['pie']\n\n const config = replaceNullToUndefined(pickedConfig)\n\n result.config = {\n ...result.config,\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n"],"names":["pieConfig","advancedVSeed","context","vseed","chartType","result","pickedConfig","pick","config","replaceNullToUndefined"],"mappings":";;AAIO,MAAMA,YAA0B,CAACC,eAAeC;IACrD,MAAM,EAAEC,KAAK,EAAE,GAAGD;IAClB,MAAM,EAAEE,SAAS,EAAE,GAAGD;IACtB,MAAME,SAAS;QACb,GAAGJ,aAAa;IAClB;IAEA,MAAMK,eAAeC,KAAKJ,OAAO;QAC/B;QACA;QACA;QACA;QACA;QACA;QACA;QACA;KACD;IAED,MAAMK,SAASC,uBAAuBH;IAEtCD,OAAO,MAAM,GAAG;QACd,GAAGA,OAAO,MAAM;QAChB,CAACD,UAAU,EAAE;YACX,GAAGI,MAAM;QACX;IACF;IAEA,OAAOH;AACT"}
@@ -19,7 +19,8 @@ const scatterConfig = (advancedVSeed, context)=>{
19
19
  'crosshairLine',
20
20
  'player',
21
21
  'brush',
22
- 'dimensionLinkage'
22
+ 'dimensionLinkage',
23
+ 'animation'
23
24
  ]);
24
25
  const config = replaceNullToUndefined(pickedConfig);
25
26
  result.config = {
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/advanced/chart/pipes/config/scatter.js","sources":["../../../../../../../src/pipeline/advanced/chart/pipes/config/scatter.ts"],"sourcesContent":["import { pick } from 'remeda'\nimport { replaceNullToUndefined } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed, Config } from 'src/types'\n\nexport const scatterConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const pickedConfig = pick(vseed, [\n 'backgroundColor',\n 'color',\n 'label',\n 'legend',\n 'tooltip',\n 'xAxis',\n 'yAxis',\n 'sizeRange',\n 'size',\n 'crosshairLine',\n 'player',\n 'brush',\n 'dimensionLinkage',\n ]) as Config['line']\n\n const config = replaceNullToUndefined(pickedConfig)\n\n result.config = {\n ...result.config,\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n"],"names":["scatterConfig","advancedVSeed","context","vseed","chartType","result","pickedConfig","pick","config","replaceNullToUndefined"],"mappings":";;AAIO,MAAMA,gBAA8B,CAACC,eAAeC;IACzD,MAAM,EAAEC,KAAK,EAAE,GAAGD;IAClB,MAAM,EAAEE,SAAS,EAAE,GAAGD;IACtB,MAAME,SAAS;QACb,GAAGJ,aAAa;IAClB;IAEA,MAAMK,eAAeC,KAAKJ,OAAO;QAC/B;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;KACD;IAED,MAAMK,SAASC,uBAAuBH;IAEtCD,OAAO,MAAM,GAAG;QACd,GAAGA,OAAO,MAAM;QAChB,CAACD,UAAU,EAAE;YACX,GAAGI,MAAM;QACX;IACF;IAEA,OAAOH;AACT"}
1
+ {"version":3,"file":"pipeline/advanced/chart/pipes/config/scatter.js","sources":["../../../../../../../src/pipeline/advanced/chart/pipes/config/scatter.ts"],"sourcesContent":["import { pick } from 'remeda'\nimport { replaceNullToUndefined } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed, Config } from 'src/types'\n\nexport const scatterConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const pickedConfig = pick(vseed, [\n 'backgroundColor',\n 'color',\n 'label',\n 'legend',\n 'tooltip',\n 'xAxis',\n 'yAxis',\n 'sizeRange',\n 'size',\n 'crosshairLine',\n 'player',\n 'brush',\n 'dimensionLinkage',\n 'animation',\n ]) as Config['line']\n\n const config = replaceNullToUndefined(pickedConfig)\n\n result.config = {\n ...result.config,\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n"],"names":["scatterConfig","advancedVSeed","context","vseed","chartType","result","pickedConfig","pick","config","replaceNullToUndefined"],"mappings":";;AAIO,MAAMA,gBAA8B,CAACC,eAAeC;IACzD,MAAM,EAAEC,KAAK,EAAE,GAAGD;IAClB,MAAM,EAAEE,SAAS,EAAE,GAAGD;IACtB,MAAME,SAAS;QACb,GAAGJ,aAAa;IAClB;IAEA,MAAMK,eAAeC,KAAKJ,OAAO;QAC/B;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;KACD;IAED,MAAMK,SAASC,uBAAuBH;IAEtCD,OAAO,MAAM,GAAG;QACd,GAAGA,OAAO,MAAM;QAChB,CAACD,UAAU,EAAE;YACX,GAAGI,MAAM;QACX;IACF;IAEA,OAAOH;AACT"}
@@ -1,7 +1,8 @@
1
- import { annotationArea, annotationDifferenceLine, annotationHorizontalLine, annotationPoint, annotationVerticalLine, areaStyle, backgroundColor, brush, color, colorAdapter, colorAreaStyleFill, colorLegend, colorLineStyleFill, colorPointStyleFill, datasetPivot, datasetXY, dimensionLinkage, discreteLegend, fontFamilyTheme, initArea, initPivot, label, lineStyle, linearColor, pivotAdapter, pivotAxisStyle, pivotColorLegend, pivotColumnDimensions, pivotDiscreteLegend, pivotGridStyle, pivotIndicators, pivotIndicatorsAsRow, pivotRowDimensions, pivotTitle, pointStateDimensionHover, pointStyle, progressive, regionPadding, splitLine, stackInverse, tooltip, verticalCrosshairLine, xBand, yLinear } from "../pipes/index.js";
1
+ import { animation, annotationArea, annotationDifferenceLine, annotationHorizontalLine, annotationPoint, annotationVerticalLine, areaStyle, backgroundColor, brush, color, colorAdapter, colorAreaStyleFill, colorLegend, colorLineStyleFill, colorPointStyleFill, datasetPivot, datasetXY, dimensionLinkage, discreteLegend, fontFamilyTheme, initArea, initPivot, label, lineStyle, linearColor, pivotAdapter, pivotAxisStyle, pivotColorLegend, pivotColumnDimensions, pivotDiscreteLegend, pivotGridStyle, pivotIndicators, pivotIndicatorsAsRow, pivotRowDimensions, pivotTitle, pointStateDimensionHover, pointStyle, progressive, regionPadding, splitLine, stackInverse, tooltip, verticalCrosshairLine, xBand, yLinear } from "../pipes/index.js";
2
2
  const area_area = [
3
3
  fontFamilyTheme,
4
4
  initArea,
5
+ animation,
5
6
  regionPadding,
6
7
  stackInverse,
7
8
  colorAdapter(color, linearColor),
@@ -36,6 +37,7 @@ const pivotArea = [
36
37
  pivotIndicators([
37
38
  fontFamilyTheme,
38
39
  initArea,
40
+ animation,
39
41
  regionPadding,
40
42
  colorAdapter(color, linearColor),
41
43
  backgroundColor,
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipeline/area.js","sources":["../../../../../../src/pipeline/spec/chart/pipeline/area.ts"],"sourcesContent":["import { type PivotChartSpecPipeline, type VChartSpecPipeline } from 'src/types'\nimport {\n xBand,\n yLinear,\n initArea,\n stackInverse,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotAdapter,\n initPivot,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n annotationPoint,\n annotationDifferenceLine,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n pointStyle,\n lineStyle,\n areaStyle,\n verticalCrosshairLine,\n pointStateDimensionHover,\n datasetXY,\n progressive,\n colorAdapter,\n linearColor,\n colorLegend,\n colorPointStyleFill,\n colorLineStyleFill,\n colorAreaStyleFill,\n pivotColorLegend,\n pivotAxisStyle,\n pivotTitle,\n splitLine,\n dimensionLinkage,\n brush,\n fontFamilyTheme,\n regionPadding,\n} from '../pipes'\n\nconst area: VChartSpecPipeline = [\n fontFamilyTheme,\n initArea,\n regionPadding,\n stackInverse,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n brush,\n tooltip({ titleEncoding: 'x' }),\n colorAdapter(discreteLegend, colorLegend),\n verticalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n annotationPoint,\n annotationDifferenceLine,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n splitLine,\n]\n\nconst pivotArea: PivotChartSpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n fontFamilyTheme,\n initArea,\n regionPadding,\n colorAdapter(color, linearColor),\n backgroundColor,\n stackInverse,\n datasetXY,\n progressive,\n xBand,\n pivotAxisStyle(yLinear),\n label,\n brush,\n tooltip({ titleEncoding: 'x' as const }),\n verticalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n annotationPoint,\n annotationDifferenceLine,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n splitLine,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n dimensionLinkage,\n]\n\nexport const areaSpecPipeline = [pivotAdapter(area, pivotArea)]\n"],"names":["area","fontFamilyTheme","initArea","regionPadding","stackInverse","colorAdapter","color","linearColor","backgroundColor","datasetXY","progressive","xBand","yLinear","label","brush","tooltip","discreteLegend","colorLegend","verticalCrosshairLine","colorPointStyleFill","pointStyle","pointStateDimensionHover","colorLineStyleFill","lineStyle","colorAreaStyleFill","areaStyle","annotationPoint","annotationDifferenceLine","annotationVerticalLine","annotationHorizontalLine","annotationArea","splitLine","pivotArea","initPivot","pivotGridStyle","pivotIndicatorsAsRow","datasetPivot","pivotIndicators","pivotAxisStyle","pivotRowDimensions","pivotColumnDimensions","pivotTitle","pivotDiscreteLegend","pivotColorLegend","dimensionLinkage","areaSpecPipeline","pivotAdapter"],"mappings":";AAgDA,MAAMA,YAA2B;IAC/BC;IACAC;IACAC;IACAC;IACAC,aAAaC,OAAOC;IACpBC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC,QAAQ;QAAE,eAAe;IAAI;IAC7BV,aAAaW,gBAAgBC;IAC7BC;IACAC,oBAAoBC;IACpBC;IACAC,mBAAmBC;IACnBC,mBAAmBC;IACnBC;IACAC;IACAC;IACAC;IACAC;IACAC;CACD;AAED,MAAMC,YAAoC;IACxCC;IACAC;IACAC;IACAC;IACAC,gBAAgB;QACdpC;QACAC;QACAC;QACAE,aAAaC,OAAOC;QACpBC;QACAJ;QACAK;QACAC;QACAC;QACA2B,eAAe1B;QACfC;QACAC;QACAC,QAAQ;YAAE,eAAe;QAAa;QACtCG;QACAC,oBAAoBC;QACpBC;QACAC,mBAAmBC;QACnBC,mBAAmBC;QACnBC;QACAC;QACAC;QACAC;QACAC;QACAC;KACD;IACDQ;IACAC;IACAC;IACApC,aAAaqC,qBAAqBC;IAClCC;CACD;AAEM,MAAMC,mBAAmB;IAACC,aAAa9C,WAAMgC;CAAW"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipeline/area.js","sources":["../../../../../../src/pipeline/spec/chart/pipeline/area.ts"],"sourcesContent":["import { type PivotChartSpecPipeline, type VChartSpecPipeline } from 'src/types'\nimport {\n xBand,\n yLinear,\n initArea,\n animation,\n stackInverse,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotAdapter,\n initPivot,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n annotationPoint,\n annotationDifferenceLine,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n pointStyle,\n lineStyle,\n areaStyle,\n verticalCrosshairLine,\n pointStateDimensionHover,\n datasetXY,\n progressive,\n colorAdapter,\n linearColor,\n colorLegend,\n colorPointStyleFill,\n colorLineStyleFill,\n colorAreaStyleFill,\n pivotColorLegend,\n pivotAxisStyle,\n pivotTitle,\n splitLine,\n dimensionLinkage,\n brush,\n fontFamilyTheme,\n regionPadding,\n} from '../pipes'\n\nconst area: VChartSpecPipeline = [\n fontFamilyTheme,\n initArea,\n animation,\n regionPadding,\n stackInverse,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n brush,\n tooltip({ titleEncoding: 'x' }),\n colorAdapter(discreteLegend, colorLegend),\n verticalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n annotationPoint,\n annotationDifferenceLine,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n splitLine,\n]\n\nconst pivotArea: PivotChartSpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n fontFamilyTheme,\n initArea,\n animation,\n regionPadding,\n colorAdapter(color, linearColor),\n backgroundColor,\n stackInverse,\n datasetXY,\n progressive,\n xBand,\n pivotAxisStyle(yLinear),\n label,\n brush,\n tooltip({ titleEncoding: 'x' as const }),\n verticalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n annotationPoint,\n annotationDifferenceLine,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n splitLine,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n dimensionLinkage,\n]\n\nexport const areaSpecPipeline = [pivotAdapter(area, pivotArea)]\n"],"names":["area","fontFamilyTheme","initArea","animation","regionPadding","stackInverse","colorAdapter","color","linearColor","backgroundColor","datasetXY","progressive","xBand","yLinear","label","brush","tooltip","discreteLegend","colorLegend","verticalCrosshairLine","colorPointStyleFill","pointStyle","pointStateDimensionHover","colorLineStyleFill","lineStyle","colorAreaStyleFill","areaStyle","annotationPoint","annotationDifferenceLine","annotationVerticalLine","annotationHorizontalLine","annotationArea","splitLine","pivotArea","initPivot","pivotGridStyle","pivotIndicatorsAsRow","datasetPivot","pivotIndicators","pivotAxisStyle","pivotRowDimensions","pivotColumnDimensions","pivotTitle","pivotDiscreteLegend","pivotColorLegend","dimensionLinkage","areaSpecPipeline","pivotAdapter"],"mappings":";AAiDA,MAAMA,YAA2B;IAC/BC;IACAC;IACAC;IACAC;IACAC;IACAC,aAAaC,OAAOC;IACpBC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC,QAAQ;QAAE,eAAe;IAAI;IAC7BV,aAAaW,gBAAgBC;IAC7BC;IACAC,oBAAoBC;IACpBC;IACAC,mBAAmBC;IACnBC,mBAAmBC;IACnBC;IACAC;IACAC;IACAC;IACAC;IACAC;CACD;AAED,MAAMC,YAAoC;IACxCC;IACAC;IACAC;IACAC;IACAC,gBAAgB;QACdrC;QACAC;QACAC;QACAC;QACAE,aAAaC,OAAOC;QACpBC;QACAJ;QACAK;QACAC;QACAC;QACA2B,eAAe1B;QACfC;QACAC;QACAC,QAAQ;YAAE,eAAe;QAAa;QACtCG;QACAC,oBAAoBC;QACpBC;QACAC,mBAAmBC;QACnBC,mBAAmBC;QACnBC;QACAC;QACAC;QACAC;QACAC;QACAC;KACD;IACDQ;IACAC;IACAC;IACApC,aAAaqC,qBAAqBC;IAClCC;CACD;AAEM,MAAMC,mBAAmB;IAACC,aAAa/C,WAAMiC;CAAW"}
@@ -1,7 +1,8 @@
1
- import { annotationArea, annotationHorizontalLine, annotationPoint, annotationVerticalLine, areaStyle, backgroundColor, brush, color, colorAdapter, colorAreaStyleFill, colorLegend, colorLineStyleFill, colorPointStyleFill, datasetPivot, datasetXY, dimensionLinkage, discreteLegend, fontFamilyTheme, initArea, initPivot, label, lineStyle, linearColor, percent, pivotAdapter, pivotAxisStyle, pivotColorLegend, pivotColumnDimensions, pivotDiscreteLegend, pivotGridStyle, pivotIndicators, pivotIndicatorsAsRow, pivotRowDimensions, pivotTitle, pointStateDimensionHover, pointStyle, progressive, regionPadding, stackInverse, tooltip, verticalCrosshairLine, xBand, yLinear } from "../pipes/index.js";
1
+ import { animation, annotationArea, annotationHorizontalLine, annotationPoint, annotationVerticalLine, areaStyle, backgroundColor, brush, color, colorAdapter, colorAreaStyleFill, colorLegend, colorLineStyleFill, colorPointStyleFill, datasetPivot, datasetXY, dimensionLinkage, discreteLegend, fontFamilyTheme, initArea, initPivot, label, lineStyle, linearColor, percent, pivotAdapter, pivotAxisStyle, pivotColorLegend, pivotColumnDimensions, pivotDiscreteLegend, pivotGridStyle, pivotIndicators, pivotIndicatorsAsRow, pivotRowDimensions, pivotTitle, pointStateDimensionHover, pointStyle, progressive, regionPadding, stackInverse, tooltip, verticalCrosshairLine, xBand, yLinear } from "../pipes/index.js";
2
2
  const areaPercent = [
3
3
  fontFamilyTheme,
4
4
  initArea,
5
+ animation,
5
6
  regionPadding,
6
7
  stackInverse,
7
8
  colorAdapter(color, linearColor),
@@ -35,6 +36,7 @@ const pivotAreaPercent = [
35
36
  pivotIndicators([
36
37
  fontFamilyTheme,
37
38
  initArea,
39
+ animation,
38
40
  regionPadding,
39
41
  stackInverse,
40
42
  colorAdapter(color, linearColor),
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipeline/areaPercent.js","sources":["../../../../../../src/pipeline/spec/chart/pipeline/areaPercent.ts"],"sourcesContent":["import type { PivotChartSpecPipeline, VChartSpecPipeline } from 'src/types'\nimport {\n percent,\n datasetXY,\n xBand,\n yLinear,\n initArea,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotAdapter,\n initPivot,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n stackInverse,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n pointStyle,\n lineStyle,\n areaStyle,\n verticalCrosshairLine,\n progressive,\n colorLegend,\n colorAdapter,\n linearColor,\n pivotColorLegend,\n pointStateDimensionHover,\n colorPointStyleFill,\n colorLineStyleFill,\n colorAreaStyleFill,\n pivotAxisStyle,\n pivotTitle,\n dimensionLinkage,\n brush,\n fontFamilyTheme,\n regionPadding,\n} from '../pipes'\n\nconst areaPercent: VChartSpecPipeline = [\n fontFamilyTheme,\n initArea,\n regionPadding,\n stackInverse,\n colorAdapter(color, linearColor),\n backgroundColor,\n percent,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n brush,\n tooltip({ titleEncoding: 'x' }),\n colorAdapter(discreteLegend, colorLegend),\n verticalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotAreaPercent: PivotChartSpecPipeline = [\n initPivot,\n\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n fontFamilyTheme,\n initArea,\n regionPadding,\n stackInverse,\n colorAdapter(color, linearColor),\n backgroundColor,\n percent,\n datasetXY,\n progressive,\n xBand,\n pivotAxisStyle(yLinear),\n label,\n brush,\n tooltip({ titleEncoding: 'x' }),\n verticalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n dimensionLinkage,\n]\n\nexport const areaPercentSpecPipeline = [pivotAdapter(areaPercent, pivotAreaPercent)]\n"],"names":["areaPercent","fontFamilyTheme","initArea","regionPadding","stackInverse","colorAdapter","color","linearColor","backgroundColor","percent","datasetXY","progressive","xBand","yLinear","label","brush","tooltip","discreteLegend","colorLegend","verticalCrosshairLine","colorPointStyleFill","pointStyle","pointStateDimensionHover","colorLineStyleFill","lineStyle","colorAreaStyleFill","areaStyle","annotationPoint","annotationVerticalLine","annotationHorizontalLine","annotationArea","pivotAreaPercent","initPivot","pivotGridStyle","pivotIndicatorsAsRow","datasetPivot","pivotIndicators","pivotAxisStyle","pivotRowDimensions","pivotColumnDimensions","pivotTitle","pivotDiscreteLegend","pivotColorLegend","dimensionLinkage","areaPercentSpecPipeline","pivotAdapter"],"mappings":";AA+CA,MAAMA,cAAkC;IACtCC;IACAC;IACAC;IACAC;IACAC,aAAaC,OAAOC;IACpBC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC,QAAQ;QAAE,eAAe;IAAI;IAC7BX,aAAaY,gBAAgBC;IAC7BC;IACAC,oBAAoBC;IACpBC;IACAC,mBAAmBC;IACnBC,mBAAmBC;IACnBC;IACAC;IACAC;IACAC;CACD;AAED,MAAMC,mBAA2C;IAC/CC;IAEAC;IACAC;IACAC;IACAC,gBAAgB;QACdnC;QACAC;QACAC;QACAC;QACAC,aAAaC,OAAOC;QACpBC;QACAC;QACAC;QACAC;QACAC;QACAyB,eAAexB;QACfC;QACAC;QACAC,QAAQ;YAAE,eAAe;QAAI;QAC7BG;QACAC,oBAAoBC;QACpBC;QACAC,mBAAmBC;QACnBC,mBAAmBC;QACnBC;QACAC;QACAC;QACAC;KACD;IACDQ;IACAC;IACAC;IACAnC,aAAaoC,qBAAqBC;IAClCC;CACD;AAEM,MAAMC,0BAA0B;IAACC,aAAa7C,aAAa+B;CAAkB"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipeline/areaPercent.js","sources":["../../../../../../src/pipeline/spec/chart/pipeline/areaPercent.ts"],"sourcesContent":["import type { PivotChartSpecPipeline, VChartSpecPipeline } from 'src/types'\nimport {\n percent,\n datasetXY,\n xBand,\n yLinear,\n initArea,\n animation,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotAdapter,\n initPivot,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n stackInverse,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n pointStyle,\n lineStyle,\n areaStyle,\n verticalCrosshairLine,\n progressive,\n colorLegend,\n colorAdapter,\n linearColor,\n pivotColorLegend,\n pointStateDimensionHover,\n colorPointStyleFill,\n colorLineStyleFill,\n colorAreaStyleFill,\n pivotAxisStyle,\n pivotTitle,\n dimensionLinkage,\n brush,\n fontFamilyTheme,\n regionPadding,\n} from '../pipes'\n\nconst areaPercent: VChartSpecPipeline = [\n fontFamilyTheme,\n initArea,\n animation,\n regionPadding,\n stackInverse,\n colorAdapter(color, linearColor),\n backgroundColor,\n percent,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n brush,\n tooltip({ titleEncoding: 'x' }),\n colorAdapter(discreteLegend, colorLegend),\n verticalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotAreaPercent: PivotChartSpecPipeline = [\n initPivot,\n\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n fontFamilyTheme,\n initArea,\n animation,\n regionPadding,\n stackInverse,\n colorAdapter(color, linearColor),\n backgroundColor,\n percent,\n datasetXY,\n progressive,\n xBand,\n pivotAxisStyle(yLinear),\n label,\n brush,\n tooltip({ titleEncoding: 'x' }),\n verticalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n dimensionLinkage,\n]\n\nexport const areaPercentSpecPipeline = [pivotAdapter(areaPercent, pivotAreaPercent)]\n"],"names":["areaPercent","fontFamilyTheme","initArea","animation","regionPadding","stackInverse","colorAdapter","color","linearColor","backgroundColor","percent","datasetXY","progressive","xBand","yLinear","label","brush","tooltip","discreteLegend","colorLegend","verticalCrosshairLine","colorPointStyleFill","pointStyle","pointStateDimensionHover","colorLineStyleFill","lineStyle","colorAreaStyleFill","areaStyle","annotationPoint","annotationVerticalLine","annotationHorizontalLine","annotationArea","pivotAreaPercent","initPivot","pivotGridStyle","pivotIndicatorsAsRow","datasetPivot","pivotIndicators","pivotAxisStyle","pivotRowDimensions","pivotColumnDimensions","pivotTitle","pivotDiscreteLegend","pivotColorLegend","dimensionLinkage","areaPercentSpecPipeline","pivotAdapter"],"mappings":";AAgDA,MAAMA,cAAkC;IACtCC;IACAC;IACAC;IACAC;IACAC;IACAC,aAAaC,OAAOC;IACpBC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC,QAAQ;QAAE,eAAe;IAAI;IAC7BX,aAAaY,gBAAgBC;IAC7BC;IACAC,oBAAoBC;IACpBC;IACAC,mBAAmBC;IACnBC,mBAAmBC;IACnBC;IACAC;IACAC;IACAC;CACD;AAED,MAAMC,mBAA2C;IAC/CC;IAEAC;IACAC;IACAC;IACAC,gBAAgB;QACdpC;QACAC;QACAC;QACAC;QACAC;QACAC,aAAaC,OAAOC;QACpBC;QACAC;QACAC;QACAC;QACAC;QACAyB,eAAexB;QACfC;QACAC;QACAC,QAAQ;YAAE,eAAe;QAAI;QAC7BG;QACAC,oBAAoBC;QACpBC;QACAC,mBAAmBC;QACnBC,mBAAmBC;QACnBC;QACAC;QACAC;QACAC;KACD;IACDQ;IACAC;IACAC;IACAnC,aAAaoC,qBAAqBC;IAClCC;CACD;AAEM,MAAMC,0BAA0B;IAACC,aAAa9C,aAAagC;CAAkB"}
@@ -1,7 +1,8 @@
1
- import { annotationAreaBand, annotationDifferenceLine, annotationHorizontalLine, annotationPoint, annotationVerticalLine, backgroundColor, barMaxWidth, barStyle, brush, color, colorAdapter, colorBarStyleFill, colorLegend, datasetPivot, datasetYX, dimensionLinkage, discreteLegend, fontFamilyTheme, horizontalCrosshairRect, initBar, initPivot, label, linearColor, pivotAdapter, pivotAxisStyle, pivotColorLegend, pivotColumnDimensions, pivotDiscreteLegend, pivotGridStyle, pivotIndicators, pivotIndicatorsAsCol, pivotRowDimensions, pivotTitle, progressive, regionPadding, stackCornerRadius, tooltip, xLinear, yBand } from "../pipes/index.js";
1
+ import { animation, annotationAreaBand, annotationDifferenceLine, annotationHorizontalLine, annotationPoint, annotationVerticalLine, backgroundColor, barMaxWidth, barStyle, brush, color, colorAdapter, colorBarStyleFill, colorLegend, datasetPivot, datasetYX, dimensionLinkage, discreteLegend, fontFamilyTheme, horizontalCrosshairRect, initBar, initPivot, label, linearColor, pivotAdapter, pivotAxisStyle, pivotColorLegend, pivotColumnDimensions, pivotDiscreteLegend, pivotGridStyle, pivotIndicators, pivotIndicatorsAsCol, pivotRowDimensions, pivotTitle, progressive, regionPadding, stackCornerRadius, tooltip, xLinear, yBand } from "../pipes/index.js";
2
2
  const bar = [
3
3
  fontFamilyTheme,
4
4
  initBar,
5
+ animation,
5
6
  regionPadding,
6
7
  stackCornerRadius,
7
8
  barMaxWidth,
@@ -33,6 +34,7 @@ const pivotBar = [
33
34
  pivotIndicators([
34
35
  fontFamilyTheme,
35
36
  initBar,
37
+ animation,
36
38
  regionPadding,
37
39
  stackCornerRadius,
38
40
  barMaxWidth,
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipeline/bar.js","sources":["../../../../../../src/pipeline/spec/chart/pipeline/bar.ts"],"sourcesContent":["import type { PivotChartSpecPipeline, VChartSpecPipeline } from 'src/types'\nimport {\n initBar,\n datasetYX,\n xLinear,\n yBand,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n pivotAdapter,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotIndicatorsAsCol,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationDifferenceLine,\n annotationAreaBand,\n horizontalCrosshairRect,\n stackCornerRadius,\n progressive,\n colorAdapter,\n linearColor,\n colorLegend,\n colorBarStyleFill,\n pivotColorLegend,\n barMaxWidth,\n pivotAxisStyle,\n pivotTitle,\n dimensionLinkage,\n brush,\n fontFamilyTheme,\n regionPadding,\n} from '../pipes'\n\nconst bar: VChartSpecPipeline = [\n fontFamilyTheme,\n initBar,\n regionPadding,\n stackCornerRadius,\n barMaxWidth,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetYX,\n progressive,\n xLinear,\n yBand,\n\n label,\n brush,\n tooltip({ titleEncoding: 'y' }),\n colorAdapter(discreteLegend, colorLegend),\n horizontalCrosshairRect,\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationDifferenceLine,\n annotationAreaBand,\n]\n\nconst pivotBar: PivotChartSpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsCol,\n datasetPivot,\n pivotIndicators([\n fontFamilyTheme,\n initBar,\n regionPadding,\n stackCornerRadius,\n barMaxWidth,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetYX,\n progressive,\n xLinear,\n pivotAxisStyle(yBand),\n label,\n brush,\n tooltip({ titleEncoding: 'y' }),\n colorBarStyleFill(barStyle),\n horizontalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationDifferenceLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n dimensionLinkage,\n]\n\nexport const barSpecPipeline = [pivotAdapter(bar, pivotBar)]\n"],"names":["bar","fontFamilyTheme","initBar","regionPadding","stackCornerRadius","barMaxWidth","colorAdapter","color","linearColor","backgroundColor","datasetYX","progressive","xLinear","yBand","label","brush","tooltip","discreteLegend","colorLegend","horizontalCrosshairRect","colorBarStyleFill","barStyle","annotationPoint","annotationVerticalLine","annotationHorizontalLine","annotationDifferenceLine","annotationAreaBand","pivotBar","initPivot","pivotGridStyle","pivotIndicatorsAsCol","datasetPivot","pivotIndicators","pivotAxisStyle","pivotRowDimensions","pivotColumnDimensions","pivotTitle","pivotDiscreteLegend","pivotColorLegend","dimensionLinkage","barSpecPipeline","pivotAdapter"],"mappings":";AA2CA,MAAMA,MAA0B;IAC9BC;IACAC;IACAC;IACAC;IACAC;IACAC,aAAaC,OAAOC;IACpBC;IACAC;IACAC;IACAC;IACAC;IAEAC;IACAC;IACAC,QAAQ;QAAE,eAAe;IAAI;IAC7BV,aAAaW,gBAAgBC;IAC7BC;IACAC,kBAAkBC;IAClBC;IACAC;IACAC;IACAC;IACAC;CACD;AAED,MAAMC,WAAmC;IACvCC;IACAC;IACAC;IACAC;IACAC,gBAAgB;QACd/B;QACAC;QACAC;QACAC;QACAC;QACAC,aAAaC,OAAOC;QACpBC;QACAC;QACAC;QACAC;QACAqB,eAAepB;QACfC;QACAC;QACAC,QAAQ;YAAE,eAAe;QAAI;QAC7BI,kBAAkBC;QAClBF;QACAG;QACAC;QACAC;QACAC;QACAC;KACD;IACDQ;IACAC;IACAC;IACA9B,aAAa+B,qBAAqBC;IAClCC;CACD;AAEM,MAAMC,kBAAkB;IAACC,aAAazC,KAAK2B;CAAU"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipeline/bar.js","sources":["../../../../../../src/pipeline/spec/chart/pipeline/bar.ts"],"sourcesContent":["import type { PivotChartSpecPipeline, VChartSpecPipeline } from 'src/types'\nimport {\n initBar,\n animation,\n datasetYX,\n xLinear,\n yBand,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n pivotAdapter,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotIndicatorsAsCol,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationDifferenceLine,\n annotationAreaBand,\n horizontalCrosshairRect,\n stackCornerRadius,\n progressive,\n colorAdapter,\n linearColor,\n colorLegend,\n colorBarStyleFill,\n pivotColorLegend,\n barMaxWidth,\n pivotAxisStyle,\n pivotTitle,\n dimensionLinkage,\n brush,\n fontFamilyTheme,\n regionPadding,\n} from '../pipes'\n\nconst bar: VChartSpecPipeline = [\n fontFamilyTheme,\n initBar,\n animation,\n regionPadding,\n stackCornerRadius,\n barMaxWidth,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetYX,\n progressive,\n xLinear,\n yBand,\n\n label,\n brush,\n tooltip({ titleEncoding: 'y' }),\n colorAdapter(discreteLegend, colorLegend),\n horizontalCrosshairRect,\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationDifferenceLine,\n annotationAreaBand,\n]\n\nconst pivotBar: PivotChartSpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsCol,\n datasetPivot,\n pivotIndicators([\n fontFamilyTheme,\n initBar,\n animation,\n regionPadding,\n stackCornerRadius,\n barMaxWidth,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetYX,\n progressive,\n xLinear,\n pivotAxisStyle(yBand),\n label,\n brush,\n tooltip({ titleEncoding: 'y' }),\n colorBarStyleFill(barStyle),\n horizontalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationDifferenceLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n dimensionLinkage,\n]\n\nexport const barSpecPipeline = [pivotAdapter(bar, pivotBar)]\n"],"names":["bar","fontFamilyTheme","initBar","animation","regionPadding","stackCornerRadius","barMaxWidth","colorAdapter","color","linearColor","backgroundColor","datasetYX","progressive","xLinear","yBand","label","brush","tooltip","discreteLegend","colorLegend","horizontalCrosshairRect","colorBarStyleFill","barStyle","annotationPoint","annotationVerticalLine","annotationHorizontalLine","annotationDifferenceLine","annotationAreaBand","pivotBar","initPivot","pivotGridStyle","pivotIndicatorsAsCol","datasetPivot","pivotIndicators","pivotAxisStyle","pivotRowDimensions","pivotColumnDimensions","pivotTitle","pivotDiscreteLegend","pivotColorLegend","dimensionLinkage","barSpecPipeline","pivotAdapter"],"mappings":";AA4CA,MAAMA,MAA0B;IAC9BC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC,aAAaC,OAAOC;IACpBC;IACAC;IACAC;IACAC;IACAC;IAEAC;IACAC;IACAC,QAAQ;QAAE,eAAe;IAAI;IAC7BV,aAAaW,gBAAgBC;IAC7BC;IACAC,kBAAkBC;IAClBC;IACAC;IACAC;IACAC;IACAC;CACD;AAED,MAAMC,WAAmC;IACvCC;IACAC;IACAC;IACAC;IACAC,gBAAgB;QACdhC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC,aAAaC,OAAOC;QACpBC;QACAC;QACAC;QACAC;QACAqB,eAAepB;QACfC;QACAC;QACAC,QAAQ;YAAE,eAAe;QAAI;QAC7BI,kBAAkBC;QAClBF;QACAG;QACAC;QACAC;QACAC;QACAC;KACD;IACDQ;IACAC;IACAC;IACA9B,aAAa+B,qBAAqBC;IAClCC;CACD;AAEM,MAAMC,kBAAkB;IAACC,aAAa1C,KAAK4B;CAAU"}
@@ -1,7 +1,8 @@
1
- import { annotationAreaBand, annotationDifferenceLine, annotationHorizontalLine, annotationPoint, annotationVerticalLine, backgroundColor, barGapInGroup, barMaxWidth, barStyle, brush, color, colorAdapter, colorBarStyleFill, colorLegend, datasetPivot, datasetYX, dimensionLinkage, discreteLegend, fontFamilyTheme, horizontalCrosshairRect, initBarParallel, initPivot, label, linearColor, pivotAdapter, pivotAxisStyle, pivotColorLegend, pivotColumnDimensions, pivotDiscreteLegend, pivotGridStyle, pivotIndicators, pivotIndicatorsAsCol, pivotRowDimensions, pivotTitle, progressive, regionPadding, stackCornerRadius, tooltip, xLinear, yBand } from "../pipes/index.js";
1
+ import { animation, annotationAreaBand, annotationDifferenceLine, annotationHorizontalLine, annotationPoint, annotationVerticalLine, backgroundColor, barGapInGroup, barMaxWidth, barStyle, brush, color, colorAdapter, colorBarStyleFill, colorLegend, datasetPivot, datasetYX, dimensionLinkage, discreteLegend, fontFamilyTheme, horizontalCrosshairRect, initBarParallel, initPivot, label, linearColor, pivotAdapter, pivotAxisStyle, pivotColorLegend, pivotColumnDimensions, pivotDiscreteLegend, pivotGridStyle, pivotIndicators, pivotIndicatorsAsCol, pivotRowDimensions, pivotTitle, progressive, regionPadding, stackCornerRadius, tooltip, xLinear, yBand } from "../pipes/index.js";
2
2
  const barParallel = [
3
3
  fontFamilyTheme,
4
4
  initBarParallel,
5
+ animation,
5
6
  regionPadding,
6
7
  stackCornerRadius,
7
8
  barMaxWidth,
@@ -34,6 +35,7 @@ const pivotBarParallel = [
34
35
  pivotIndicators([
35
36
  fontFamilyTheme,
36
37
  initBarParallel,
38
+ animation,
37
39
  regionPadding,
38
40
  stackCornerRadius,
39
41
  barMaxWidth,
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipeline/barParallel.js","sources":["../../../../../../src/pipeline/spec/chart/pipeline/barParallel.ts"],"sourcesContent":["import type { PivotChartSpecPipeline, VChartSpecPipeline } from 'src/types'\nimport {\n datasetYX,\n xLinear,\n yBand,\n initBarParallel,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n initPivot,\n datasetPivot,\n pivotDiscreteLegend,\n pivotIndicators,\n pivotAdapter,\n pivotIndicatorsAsCol,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationDifferenceLine,\n annotationAreaBand,\n horizontalCrosshairRect,\n stackCornerRadius,\n progressive,\n linearColor,\n colorAdapter,\n colorLegend,\n colorBarStyleFill,\n pivotColorLegend,\n barMaxWidth,\n barGapInGroup,\n pivotAxisStyle,\n pivotTitle,\n dimensionLinkage,\n brush,\n fontFamilyTheme,\n regionPadding,\n} from '../pipes'\n\nconst barParallel: VChartSpecPipeline = [\n fontFamilyTheme,\n initBarParallel,\n regionPadding,\n stackCornerRadius,\n barMaxWidth,\n barGapInGroup,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetYX,\n progressive,\n xLinear,\n yBand,\n label,\n brush,\n tooltip({ titleEncoding: 'y' }),\n colorAdapter(discreteLegend, colorLegend),\n horizontalCrosshairRect,\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationDifferenceLine,\n annotationAreaBand,\n]\n\nconst pivotBarParallel: PivotChartSpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsCol,\n datasetPivot,\n pivotIndicators([\n fontFamilyTheme,\n initBarParallel,\n regionPadding,\n stackCornerRadius,\n barMaxWidth,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetYX,\n xLinear,\n pivotAxisStyle(yBand),\n brush,\n label,\n tooltip({ titleEncoding: 'y' }),\n colorBarStyleFill(barStyle),\n horizontalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationDifferenceLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n dimensionLinkage,\n]\n\nexport const barParallelSpecPipeline = [pivotAdapter(barParallel, pivotBarParallel)]\n"],"names":["barParallel","fontFamilyTheme","initBarParallel","regionPadding","stackCornerRadius","barMaxWidth","barGapInGroup","colorAdapter","color","linearColor","backgroundColor","datasetYX","progressive","xLinear","yBand","label","brush","tooltip","discreteLegend","colorLegend","horizontalCrosshairRect","colorBarStyleFill","barStyle","annotationPoint","annotationVerticalLine","annotationHorizontalLine","annotationDifferenceLine","annotationAreaBand","pivotBarParallel","initPivot","pivotGridStyle","pivotIndicatorsAsCol","datasetPivot","pivotIndicators","pivotAxisStyle","pivotRowDimensions","pivotColumnDimensions","pivotTitle","pivotDiscreteLegend","pivotColorLegend","dimensionLinkage","barParallelSpecPipeline","pivotAdapter"],"mappings":";AA4CA,MAAMA,cAAkC;IACtCC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC,aAAaC,OAAOC;IACpBC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC,QAAQ;QAAE,eAAe;IAAI;IAC7BV,aAAaW,gBAAgBC;IAC7BC;IACAC,kBAAkBC;IAClBC;IACAC;IACAC;IACAC;IACAC;CACD;AAED,MAAMC,mBAA2C;IAC/CC;IACAC;IACAC;IACAC;IACAC,gBAAgB;QACdhC;QACAC;QACAC;QACAC;QACAC;QACAE,aAAaC,OAAOC;QACpBC;QACAC;QACAE;QACAqB,eAAepB;QACfE;QACAD;QACAE,QAAQ;YAAE,eAAe;QAAI;QAC7BI,kBAAkBC;QAClBF;QACAG;QACAC;QACAC;QACAC;QACAC;KACD;IACDQ;IACAC;IACAC;IACA9B,aAAa+B,qBAAqBC;IAClCC;CACD;AAEM,MAAMC,0BAA0B;IAACC,aAAa1C,aAAa4B;CAAkB"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipeline/barParallel.js","sources":["../../../../../../src/pipeline/spec/chart/pipeline/barParallel.ts"],"sourcesContent":["import type { PivotChartSpecPipeline, VChartSpecPipeline } from 'src/types'\nimport {\n datasetYX,\n xLinear,\n yBand,\n initBarParallel,\n animation,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n initPivot,\n datasetPivot,\n pivotDiscreteLegend,\n pivotIndicators,\n pivotAdapter,\n pivotIndicatorsAsCol,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationDifferenceLine,\n annotationAreaBand,\n horizontalCrosshairRect,\n stackCornerRadius,\n progressive,\n linearColor,\n colorAdapter,\n colorLegend,\n colorBarStyleFill,\n pivotColorLegend,\n barMaxWidth,\n barGapInGroup,\n pivotAxisStyle,\n pivotTitle,\n dimensionLinkage,\n brush,\n fontFamilyTheme,\n regionPadding,\n} from '../pipes'\n\nconst barParallel: VChartSpecPipeline = [\n fontFamilyTheme,\n initBarParallel,\n animation,\n regionPadding,\n stackCornerRadius,\n barMaxWidth,\n barGapInGroup,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetYX,\n progressive,\n xLinear,\n yBand,\n label,\n brush,\n tooltip({ titleEncoding: 'y' }),\n colorAdapter(discreteLegend, colorLegend),\n horizontalCrosshairRect,\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationDifferenceLine,\n annotationAreaBand,\n]\n\nconst pivotBarParallel: PivotChartSpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsCol,\n datasetPivot,\n pivotIndicators([\n fontFamilyTheme,\n initBarParallel,\n animation,\n regionPadding,\n stackCornerRadius,\n barMaxWidth,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetYX,\n xLinear,\n pivotAxisStyle(yBand),\n brush,\n label,\n tooltip({ titleEncoding: 'y' }),\n colorBarStyleFill(barStyle),\n horizontalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationDifferenceLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotTitle,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n dimensionLinkage,\n]\n\nexport const barParallelSpecPipeline = [pivotAdapter(barParallel, pivotBarParallel)]\n"],"names":["barParallel","fontFamilyTheme","initBarParallel","animation","regionPadding","stackCornerRadius","barMaxWidth","barGapInGroup","colorAdapter","color","linearColor","backgroundColor","datasetYX","progressive","xLinear","yBand","label","brush","tooltip","discreteLegend","colorLegend","horizontalCrosshairRect","colorBarStyleFill","barStyle","annotationPoint","annotationVerticalLine","annotationHorizontalLine","annotationDifferenceLine","annotationAreaBand","pivotBarParallel","initPivot","pivotGridStyle","pivotIndicatorsAsCol","datasetPivot","pivotIndicators","pivotAxisStyle","pivotRowDimensions","pivotColumnDimensions","pivotTitle","pivotDiscreteLegend","pivotColorLegend","dimensionLinkage","barParallelSpecPipeline","pivotAdapter"],"mappings":";AA6CA,MAAMA,cAAkC;IACtCC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC,aAAaC,OAAOC;IACpBC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC,QAAQ;QAAE,eAAe;IAAI;IAC7BV,aAAaW,gBAAgBC;IAC7BC;IACAC,kBAAkBC;IAClBC;IACAC;IACAC;IACAC;IACAC;CACD;AAED,MAAMC,mBAA2C;IAC/CC;IACAC;IACAC;IACAC;IACAC,gBAAgB;QACdjC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAE,aAAaC,OAAOC;QACpBC;QACAC;QACAE;QACAqB,eAAepB;QACfE;QACAD;QACAE,QAAQ;YAAE,eAAe;QAAI;QAC7BI,kBAAkBC;QAClBF;QACAG;QACAC;QACAC;QACAC;QACAC;KACD;IACDQ;IACAC;IACAC;IACA9B,aAAa+B,qBAAqBC;IAClCC;CACD;AAEM,MAAMC,0BAA0B;IAACC,aAAa3C,aAAa6B;CAAkB"}
@@ -1,7 +1,8 @@
1
- import { annotationAreaBand, annotationHorizontalLine, annotationPoint, annotationVerticalLine, backgroundColor, barMaxWidth, barStyle, brush, color, colorAdapter, colorBarStyleFill, colorLegend, datasetPivot, datasetYX, dimensionLinkage, discreteLegend, fontFamilyTheme, horizontalCrosshairRect, initBar, initPivot, label, linearColor, percent, pivotAdapter, pivotAxisStyle, pivotColorLegend, pivotColumnDimensions, pivotDiscreteLegend, pivotGridStyle, pivotIndicators, pivotIndicatorsAsCol, pivotRowDimensions, pivotTitle, progressive, regionPadding, stackCornerRadius, tooltip, xLinear, yBand } from "../pipes/index.js";
1
+ import { animation, annotationAreaBand, annotationHorizontalLine, annotationPoint, annotationVerticalLine, backgroundColor, barMaxWidth, barStyle, brush, color, colorAdapter, colorBarStyleFill, colorLegend, datasetPivot, datasetYX, dimensionLinkage, discreteLegend, fontFamilyTheme, horizontalCrosshairRect, initBar, initPivot, label, linearColor, percent, pivotAdapter, pivotAxisStyle, pivotColorLegend, pivotColumnDimensions, pivotDiscreteLegend, pivotGridStyle, pivotIndicators, pivotIndicatorsAsCol, pivotRowDimensions, pivotTitle, progressive, regionPadding, stackCornerRadius, tooltip, xLinear, yBand } from "../pipes/index.js";
2
2
  const barPercent = [
3
3
  fontFamilyTheme,
4
4
  initBar,
5
+ animation,
5
6
  regionPadding,
6
7
  stackCornerRadius,
7
8
  barMaxWidth,
@@ -33,6 +34,7 @@ const pivotBarPercent = [
33
34
  pivotIndicators([
34
35
  fontFamilyTheme,
35
36
  initBar,
37
+ animation,
36
38
  regionPadding,
37
39
  stackCornerRadius,
38
40
  barMaxWidth,