@visactor/vseed 0.3.1 → 0.3.3

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 (314) hide show
  1. package/dist/cjs/index.cjs +1 -1
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/esm/builder/builder/builder.d.ts +1176 -0
  4. package/dist/esm/dataReshape/constant.d.ts +1 -0
  5. package/dist/esm/dataReshape/constant.js +2 -1
  6. package/dist/esm/dataReshape/constant.js.map +1 -1
  7. package/dist/esm/dataReshape/dataReshapeByEncoding.d.ts +1 -1
  8. package/dist/esm/dataReshape/dataReshapeByEncoding.js.map +1 -1
  9. package/dist/esm/dataReshape/foldMeasures.js +12 -11
  10. package/dist/esm/dataReshape/foldMeasures.js.map +1 -1
  11. package/dist/esm/pipeline/advanced/chart/pipeline/scatter.js +3 -1
  12. package/dist/esm/pipeline/advanced/chart/pipeline/scatter.js.map +1 -1
  13. package/dist/esm/pipeline/advanced/chart/pipes/config/column.js +1 -0
  14. package/dist/esm/pipeline/advanced/chart/pipes/config/column.js.map +1 -1
  15. package/dist/esm/pipeline/advanced/chart/pipes/config/heatmap.d.ts +2 -0
  16. package/dist/esm/pipeline/advanced/chart/pipes/config/heatmap.js +31 -0
  17. package/dist/esm/pipeline/advanced/chart/pipes/config/heatmap.js.map +1 -0
  18. package/dist/esm/pipeline/advanced/chart/pipes/config/histogram.js +1 -0
  19. package/dist/esm/pipeline/advanced/chart/pipes/config/histogram.js.map +1 -1
  20. package/dist/esm/pipeline/advanced/chart/pipes/config/index.d.ts +2 -2
  21. package/dist/esm/pipeline/advanced/chart/pipes/config/index.js +1 -1
  22. package/dist/esm/pipeline/advanced/chart/pipes/config/index.js.map +1 -1
  23. package/dist/esm/pipeline/advanced/chart/pipes/config/line.js +1 -0
  24. package/dist/esm/pipeline/advanced/chart/pipes/config/line.js.map +1 -1
  25. package/dist/esm/pipeline/advanced/chart/pipes/config/pie.js +2 -1
  26. package/dist/esm/pipeline/advanced/chart/pipes/config/pie.js.map +1 -1
  27. package/dist/esm/pipeline/advanced/chart/pipes/config/scatter.js +1 -0
  28. package/dist/esm/pipeline/advanced/chart/pipes/config/scatter.js.map +1 -1
  29. package/dist/esm/pipeline/advanced/chart/pipes/dimensions/addPivotDimensionsForScatter.d.ts +2 -0
  30. package/dist/esm/pipeline/advanced/chart/pipes/dimensions/addPivotDimensionsForScatter.js +29 -0
  31. package/dist/esm/pipeline/advanced/chart/pipes/dimensions/addPivotDimensionsForScatter.js.map +1 -0
  32. package/dist/esm/pipeline/advanced/chart/pipes/dimensions/index.d.ts +1 -0
  33. package/dist/esm/pipeline/advanced/chart/pipes/dimensions/index.js +1 -0
  34. package/dist/esm/pipeline/advanced/chart/pipes/encoding/bar.js +2 -1
  35. package/dist/esm/pipeline/advanced/chart/pipes/encoding/bar.js.map +1 -1
  36. package/dist/esm/pipeline/advanced/chart/pipes/encoding/boxplot.js +2 -1
  37. package/dist/esm/pipeline/advanced/chart/pipes/encoding/boxplot.js.map +1 -1
  38. package/dist/esm/pipeline/advanced/chart/pipes/encoding/column.js +2 -1
  39. package/dist/esm/pipeline/advanced/chart/pipes/encoding/column.js.map +1 -1
  40. package/dist/esm/pipeline/advanced/chart/pipes/encoding/dualAxis.js +2 -1
  41. package/dist/esm/pipeline/advanced/chart/pipes/encoding/dualAxis.js.map +1 -1
  42. package/dist/esm/pipeline/advanced/chart/pipes/encoding/funnel.js +2 -1
  43. package/dist/esm/pipeline/advanced/chart/pipes/encoding/funnel.js.map +1 -1
  44. package/dist/esm/pipeline/advanced/chart/pipes/encoding/heatmap.js +2 -6
  45. package/dist/esm/pipeline/advanced/chart/pipes/encoding/heatmap.js.map +1 -1
  46. package/dist/esm/pipeline/advanced/chart/pipes/encoding/histogram.js +2 -1
  47. package/dist/esm/pipeline/advanced/chart/pipes/encoding/histogram.js.map +1 -1
  48. package/dist/esm/pipeline/advanced/chart/pipes/encoding/line.js +2 -1
  49. package/dist/esm/pipeline/advanced/chart/pipes/encoding/line.js.map +1 -1
  50. package/dist/esm/pipeline/advanced/chart/pipes/encoding/pie.js +2 -1
  51. package/dist/esm/pipeline/advanced/chart/pipes/encoding/pie.js.map +1 -1
  52. package/dist/esm/pipeline/advanced/chart/pipes/encoding/radar.js +2 -1
  53. package/dist/esm/pipeline/advanced/chart/pipes/encoding/radar.js.map +1 -1
  54. package/dist/esm/pipeline/advanced/chart/pipes/encoding/rose.js +2 -1
  55. package/dist/esm/pipeline/advanced/chart/pipes/encoding/rose.js.map +1 -1
  56. package/dist/esm/pipeline/advanced/chart/pipes/encoding/scatter.js +14 -4
  57. package/dist/esm/pipeline/advanced/chart/pipes/encoding/scatter.js.map +1 -1
  58. package/dist/esm/pipeline/advanced/chart/pipes/measures/buildMeasuresForScatter.js +16 -24
  59. package/dist/esm/pipeline/advanced/chart/pipes/measures/buildMeasuresForScatter.js.map +1 -1
  60. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.js.map +1 -1
  61. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.js +7 -1
  62. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.js.map +1 -1
  63. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithEncoding.js.map +1 -1
  64. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithHistogramEncoding.js +2 -1
  65. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithHistogramEncoding.js.map +1 -1
  66. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithScatterEncoding.js +10 -6
  67. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithScatterEncoding.js.map +1 -1
  68. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithBoxplotEncoding.js.map +1 -1
  69. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.js +12 -3
  70. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.js.map +1 -1
  71. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithEncoding.js +4 -2
  72. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithEncoding.js.map +1 -1
  73. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithHistogramEncoding.js +2 -1
  74. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithHistogramEncoding.js.map +1 -1
  75. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithScatterEncoding.js +5 -2
  76. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithScatterEncoding.js.map +1 -1
  77. package/dist/esm/pipeline/advanced/table/pipes/default/defaultDimensions.js.map +1 -1
  78. package/dist/esm/pipeline/advanced/table/pipes/default/defaultMeasures.js.map +1 -1
  79. package/dist/esm/pipeline/spec/chart/pipeline/area.js +3 -1
  80. package/dist/esm/pipeline/spec/chart/pipeline/area.js.map +1 -1
  81. package/dist/esm/pipeline/spec/chart/pipeline/areaPercent.js +3 -1
  82. package/dist/esm/pipeline/spec/chart/pipeline/areaPercent.js.map +1 -1
  83. package/dist/esm/pipeline/spec/chart/pipeline/bar.js +3 -1
  84. package/dist/esm/pipeline/spec/chart/pipeline/bar.js.map +1 -1
  85. package/dist/esm/pipeline/spec/chart/pipeline/barParallel.js +3 -1
  86. package/dist/esm/pipeline/spec/chart/pipeline/barParallel.js.map +1 -1
  87. package/dist/esm/pipeline/spec/chart/pipeline/barPercent.js +3 -1
  88. package/dist/esm/pipeline/spec/chart/pipeline/barPercent.js.map +1 -1
  89. package/dist/esm/pipeline/spec/chart/pipeline/column.js +3 -1
  90. package/dist/esm/pipeline/spec/chart/pipeline/column.js.map +1 -1
  91. package/dist/esm/pipeline/spec/chart/pipeline/columnParallel.js +3 -1
  92. package/dist/esm/pipeline/spec/chart/pipeline/columnParallel.js.map +1 -1
  93. package/dist/esm/pipeline/spec/chart/pipeline/columnPercent.js +3 -1
  94. package/dist/esm/pipeline/spec/chart/pipeline/columnPercent.js.map +1 -1
  95. package/dist/esm/pipeline/spec/chart/pipeline/donut.js +3 -1
  96. package/dist/esm/pipeline/spec/chart/pipeline/donut.js.map +1 -1
  97. package/dist/esm/pipeline/spec/chart/pipeline/dualAxis.js +3 -1
  98. package/dist/esm/pipeline/spec/chart/pipeline/dualAxis.js.map +1 -1
  99. package/dist/esm/pipeline/spec/chart/pipeline/funnel.js +3 -2
  100. package/dist/esm/pipeline/spec/chart/pipeline/funnel.js.map +1 -1
  101. package/dist/esm/pipeline/spec/chart/pipeline/heatmap.js +8 -5
  102. package/dist/esm/pipeline/spec/chart/pipeline/heatmap.js.map +1 -1
  103. package/dist/esm/pipeline/spec/chart/pipeline/histogram.js +3 -1
  104. package/dist/esm/pipeline/spec/chart/pipeline/histogram.js.map +1 -1
  105. package/dist/esm/pipeline/spec/chart/pipeline/line.js +3 -1
  106. package/dist/esm/pipeline/spec/chart/pipeline/line.js.map +1 -1
  107. package/dist/esm/pipeline/spec/chart/pipeline/pie.js +3 -1
  108. package/dist/esm/pipeline/spec/chart/pipeline/pie.js.map +1 -1
  109. package/dist/esm/pipeline/spec/chart/pipeline/scatter.js +3 -1
  110. package/dist/esm/pipeline/spec/chart/pipeline/scatter.js.map +1 -1
  111. package/dist/esm/pipeline/spec/chart/pipes/axes/xBand.js +2 -2
  112. package/dist/esm/pipeline/spec/chart/pipes/axes/xBand.js.map +1 -1
  113. package/dist/esm/pipeline/spec/chart/pipes/axes/yBand.js +2 -2
  114. package/dist/esm/pipeline/spec/chart/pipes/axes/yBand.js.map +1 -1
  115. package/dist/esm/pipeline/spec/chart/pipes/brush/brush.d.ts +2 -0
  116. package/dist/esm/pipeline/spec/chart/pipes/brush/brush.js +37 -0
  117. package/dist/esm/pipeline/spec/chart/pipes/brush/brush.js.map +1 -0
  118. package/dist/esm/pipeline/spec/chart/pipes/brush/index.d.ts +1 -0
  119. package/dist/esm/pipeline/spec/chart/pipes/brush/index.js +1 -0
  120. package/dist/esm/pipeline/spec/chart/pipes/color/colorAdapter.js +3 -3
  121. package/dist/esm/pipeline/spec/chart/pipes/color/colorAdapter.js.map +1 -1
  122. package/dist/esm/pipeline/spec/chart/pipes/color/index.d.ts +0 -1
  123. package/dist/esm/pipeline/spec/chart/pipes/color/index.js +1 -2
  124. package/dist/esm/pipeline/spec/chart/pipes/dual/adjustXField.d.ts +2 -0
  125. package/dist/esm/pipeline/spec/chart/pipes/dual/adjustXField.js +17 -0
  126. package/dist/esm/pipeline/spec/chart/pipes/dual/adjustXField.js.map +1 -0
  127. package/dist/esm/pipeline/spec/chart/pipes/dual/dualChartType.js +3 -5
  128. package/dist/esm/pipeline/spec/chart/pipes/dual/dualChartType.js.map +1 -1
  129. package/dist/esm/pipeline/spec/chart/pipes/dual/index.d.ts +1 -0
  130. package/dist/esm/pipeline/spec/chart/pipes/dual/index.js +2 -1
  131. package/dist/esm/pipeline/spec/chart/pipes/index.d.ts +1 -0
  132. package/dist/esm/pipeline/spec/chart/pipes/index.js +1 -0
  133. package/dist/esm/pipeline/spec/chart/pipes/label/label.d.ts +1 -0
  134. package/dist/esm/pipeline/spec/chart/pipes/label/label.js +2 -0
  135. package/dist/esm/pipeline/spec/chart/pipes/label/label.js.map +1 -1
  136. package/dist/esm/pipeline/spec/chart/pipes/legend/colorLegend.js.map +1 -1
  137. package/dist/esm/pipeline/spec/chart/pipes/legend/pivotColorLegend.js +2 -2
  138. package/dist/esm/pipeline/spec/chart/pipes/legend/pivotColorLegend.js.map +1 -1
  139. package/dist/esm/pipeline/spec/chart/pipes/markStyle/cellStyle.js +17 -8
  140. package/dist/esm/pipeline/spec/chart/pipes/markStyle/cellStyle.js.map +1 -1
  141. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/heatmapColorDomain.d.ts +2 -0
  142. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/heatmapColorDomain.js +18 -0
  143. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/heatmapColorDomain.js.map +1 -0
  144. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/index.d.ts +1 -0
  145. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/index.js +2 -1
  146. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotAxisStyle.js +13 -7
  147. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotAxisStyle.js.map +1 -1
  148. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotColumnDimensions.js +12 -3
  149. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotColumnDimensions.js.map +1 -1
  150. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotGridStyle.js +2 -2
  151. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotGridStyle.js.map +1 -1
  152. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotIndicators.js.map +1 -1
  153. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotRowDimensions.js +12 -3
  154. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotRowDimensions.js.map +1 -1
  155. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotTitle.js +4 -2
  156. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotTitle.js.map +1 -1
  157. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.d.ts +1 -1
  158. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.js +14 -8
  159. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.js.map +1 -1
  160. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipBoxplot.js +8 -2
  161. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipBoxplot.js.map +1 -1
  162. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js +2 -2
  163. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js.map +1 -1
  164. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipScatter.d.ts +1 -1
  165. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipScatter.js +9 -2
  166. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipScatter.js.map +1 -1
  167. package/dist/esm/pipeline/utils/chatType.js +24 -4
  168. package/dist/esm/pipeline/utils/chatType.js.map +1 -1
  169. package/dist/esm/pipeline/utils/measures/typeGuard.d.ts +1 -1
  170. package/dist/esm/pipeline/utils/measures/typeGuard.js +30 -6
  171. package/dist/esm/pipeline/utils/measures/typeGuard.js.map +1 -1
  172. package/dist/esm/theme/common/axes.js +0 -4
  173. package/dist/esm/theme/common/axes.js.map +1 -1
  174. package/dist/esm/theme/common/brush.d.ts +3 -0
  175. package/dist/esm/theme/common/brush.js +21 -0
  176. package/dist/esm/theme/common/brush.js.map +1 -0
  177. package/dist/esm/theme/common/heatmapCell.js +4 -2
  178. package/dist/esm/theme/common/heatmapCell.js.map +1 -1
  179. package/dist/esm/theme/common/index.d.ts +1 -0
  180. package/dist/esm/theme/common/index.js +1 -0
  181. package/dist/esm/theme/common/label.d.ts +18 -0
  182. package/dist/esm/theme/common/label.js +9 -1
  183. package/dist/esm/theme/common/label.js.map +1 -1
  184. package/dist/esm/theme/dark/dark.js +4 -2
  185. package/dist/esm/theme/dark/dark.js.map +1 -1
  186. package/dist/esm/theme/light/light.js +4 -2
  187. package/dist/esm/theme/light/light.js.map +1 -1
  188. package/dist/esm/types/advancedVSeed.d.ts +392 -0
  189. package/dist/esm/types/chartType/area/area.d.ts +6 -1
  190. package/dist/esm/types/chartType/area/zArea.d.ts +4 -0
  191. package/dist/esm/types/chartType/area/zArea.js +2 -1
  192. package/dist/esm/types/chartType/area/zArea.js.map +1 -1
  193. package/dist/esm/types/chartType/areaPercent/areaPercent.d.ts +6 -1
  194. package/dist/esm/types/chartType/areaPercent/zAreaPercent.d.ts +4 -0
  195. package/dist/esm/types/chartType/areaPercent/zAreaPercent.js +2 -1
  196. package/dist/esm/types/chartType/areaPercent/zAreaPercent.js.map +1 -1
  197. package/dist/esm/types/chartType/bar/bar.d.ts +6 -1
  198. package/dist/esm/types/chartType/bar/zBar.d.ts +4 -0
  199. package/dist/esm/types/chartType/bar/zBar.js +2 -1
  200. package/dist/esm/types/chartType/bar/zBar.js.map +1 -1
  201. package/dist/esm/types/chartType/barParallel/barParallel.d.ts +6 -1
  202. package/dist/esm/types/chartType/barParallel/zBarParallel.d.ts +4 -0
  203. package/dist/esm/types/chartType/barParallel/zBarParallel.js +2 -1
  204. package/dist/esm/types/chartType/barParallel/zBarParallel.js.map +1 -1
  205. package/dist/esm/types/chartType/barPercent/barPercent.d.ts +6 -1
  206. package/dist/esm/types/chartType/barPercent/zBarPercent.d.ts +4 -0
  207. package/dist/esm/types/chartType/barPercent/zBarPercent.js +2 -1
  208. package/dist/esm/types/chartType/barPercent/zBarPercent.js.map +1 -1
  209. package/dist/esm/types/chartType/boxPlot/boxPlot.d.ts +6 -1
  210. package/dist/esm/types/chartType/boxPlot/zBoxPlot.d.ts +4 -0
  211. package/dist/esm/types/chartType/boxPlot/zBoxPlot.js +2 -1
  212. package/dist/esm/types/chartType/boxPlot/zBoxPlot.js.map +1 -1
  213. package/dist/esm/types/chartType/column/column.d.ts +6 -1
  214. package/dist/esm/types/chartType/column/zColumn.d.ts +4 -0
  215. package/dist/esm/types/chartType/column/zColumn.js +2 -1
  216. package/dist/esm/types/chartType/column/zColumn.js.map +1 -1
  217. package/dist/esm/types/chartType/columnParallel/columnParallel.d.ts +6 -1
  218. package/dist/esm/types/chartType/columnParallel/zColumnParallel.d.ts +4 -0
  219. package/dist/esm/types/chartType/columnParallel/zColumnParallel.js +2 -1
  220. package/dist/esm/types/chartType/columnParallel/zColumnParallel.js.map +1 -1
  221. package/dist/esm/types/chartType/columnPercent/columnPercent.d.ts +6 -1
  222. package/dist/esm/types/chartType/columnPercent/zColumnPercent.d.ts +4 -0
  223. package/dist/esm/types/chartType/columnPercent/zColumnPercent.js +2 -1
  224. package/dist/esm/types/chartType/columnPercent/zColumnPercent.js.map +1 -1
  225. package/dist/esm/types/chartType/donut/donut.d.ts +6 -0
  226. package/dist/esm/types/chartType/donut/zDonut.d.ts +4 -0
  227. package/dist/esm/types/chartType/donut/zDonut.js +2 -1
  228. package/dist/esm/types/chartType/donut/zDonut.js.map +1 -1
  229. package/dist/esm/types/chartType/dualAxis/dualAxis.d.ts +6 -1
  230. package/dist/esm/types/chartType/dualAxis/zDualAxis.d.ts +4 -0
  231. package/dist/esm/types/chartType/dualAxis/zDualAxis.js +2 -1
  232. package/dist/esm/types/chartType/dualAxis/zDualAxis.js.map +1 -1
  233. package/dist/esm/types/chartType/funnel/funnel.d.ts +6 -0
  234. package/dist/esm/types/chartType/funnel/zFunnel.d.ts +4 -0
  235. package/dist/esm/types/chartType/funnel/zFunnel.js +2 -1
  236. package/dist/esm/types/chartType/funnel/zFunnel.js.map +1 -1
  237. package/dist/esm/types/chartType/heatmap/heatmap.d.ts +6 -0
  238. package/dist/esm/types/chartType/heatmap/zHeatmap.d.ts +4 -0
  239. package/dist/esm/types/chartType/heatmap/zHeatmap.js +2 -1
  240. package/dist/esm/types/chartType/heatmap/zHeatmap.js.map +1 -1
  241. package/dist/esm/types/chartType/histogram/histogram.d.ts +6 -1
  242. package/dist/esm/types/chartType/histogram/zHistogram.d.ts +4 -0
  243. package/dist/esm/types/chartType/histogram/zHistogram.js +2 -1
  244. package/dist/esm/types/chartType/histogram/zHistogram.js.map +1 -1
  245. package/dist/esm/types/chartType/line/line.d.ts +6 -1
  246. package/dist/esm/types/chartType/line/zLine.d.ts +4 -0
  247. package/dist/esm/types/chartType/line/zLine.js +2 -1
  248. package/dist/esm/types/chartType/line/zLine.js.map +1 -1
  249. package/dist/esm/types/chartType/pie/pie.d.ts +6 -0
  250. package/dist/esm/types/chartType/pie/zPie.d.ts +4 -0
  251. package/dist/esm/types/chartType/pie/zPie.js +2 -1
  252. package/dist/esm/types/chartType/pie/zPie.js.map +1 -1
  253. package/dist/esm/types/chartType/radar/radar.d.ts +6 -0
  254. package/dist/esm/types/chartType/radar/zRadar.d.ts +4 -0
  255. package/dist/esm/types/chartType/radar/zRadar.js +2 -1
  256. package/dist/esm/types/chartType/radar/zRadar.js.map +1 -1
  257. package/dist/esm/types/chartType/rose/rose.d.ts +6 -0
  258. package/dist/esm/types/chartType/rose/zRose.d.ts +4 -0
  259. package/dist/esm/types/chartType/rose/zRose.js +2 -1
  260. package/dist/esm/types/chartType/rose/zRose.js.map +1 -1
  261. package/dist/esm/types/chartType/roseParallel/roseParallel.d.ts +6 -0
  262. package/dist/esm/types/chartType/roseParallel/zRoseParallel.d.ts +4 -0
  263. package/dist/esm/types/chartType/roseParallel/zRoseParallel.js +2 -1
  264. package/dist/esm/types/chartType/roseParallel/zRoseParallel.js.map +1 -1
  265. package/dist/esm/types/chartType/scatter/scatter.d.ts +6 -1
  266. package/dist/esm/types/chartType/scatter/zScatter.d.ts +4 -0
  267. package/dist/esm/types/chartType/scatter/zScatter.js +2 -1
  268. package/dist/esm/types/chartType/scatter/zScatter.js.map +1 -1
  269. package/dist/esm/types/properties/brush/brush.d.ts +13 -0
  270. package/dist/esm/types/properties/brush/brush.js +0 -0
  271. package/dist/esm/types/properties/brush/index.d.ts +4 -0
  272. package/dist/esm/types/properties/brush/index.js +2 -0
  273. package/dist/esm/types/properties/brush/zBrush.d.ts +19 -0
  274. package/dist/esm/types/properties/brush/zBrush.js +21 -0
  275. package/dist/esm/types/properties/brush/zBrush.js.map +1 -0
  276. package/dist/esm/types/properties/config/area.d.ts +26 -0
  277. package/dist/esm/types/properties/config/area.js +3 -1
  278. package/dist/esm/types/properties/config/area.js.map +1 -1
  279. package/dist/esm/types/properties/config/bar.d.ts +39 -0
  280. package/dist/esm/types/properties/config/bar.js +3 -1
  281. package/dist/esm/types/properties/config/bar.js.map +1 -1
  282. package/dist/esm/types/properties/config/column.d.ts +39 -0
  283. package/dist/esm/types/properties/config/column.js +3 -1
  284. package/dist/esm/types/properties/config/column.js.map +1 -1
  285. package/dist/esm/types/properties/config/config.d.ts +196 -0
  286. package/dist/esm/types/properties/config/heatmap/heatmap.d.ts +4 -0
  287. package/dist/esm/types/properties/config/heatmap/zHeatmap.d.ts +1 -0
  288. package/dist/esm/types/properties/config/heatmap/zHeatmap.js +2 -1
  289. package/dist/esm/types/properties/config/heatmap/zHeatmap.js.map +1 -1
  290. package/dist/esm/types/properties/config/heatmap.d.ts +14 -0
  291. package/dist/esm/types/properties/config/heatmap.js +3 -1
  292. package/dist/esm/types/properties/config/heatmap.js.map +1 -1
  293. package/dist/esm/types/properties/config/histogram.d.ts +13 -0
  294. package/dist/esm/types/properties/config/histogram.js +3 -1
  295. package/dist/esm/types/properties/config/histogram.js.map +1 -1
  296. package/dist/esm/types/properties/config/line.d.ts +13 -0
  297. package/dist/esm/types/properties/config/line.js +3 -1
  298. package/dist/esm/types/properties/config/line.js.map +1 -1
  299. package/dist/esm/types/properties/config/pie.d.ts +39 -0
  300. package/dist/esm/types/properties/config/pie.js +3 -1
  301. package/dist/esm/types/properties/config/pie.js.map +1 -1
  302. package/dist/esm/types/properties/config/scatter.d.ts +13 -0
  303. package/dist/esm/types/properties/config/scatter.js +3 -1
  304. package/dist/esm/types/properties/config/scatter.js.map +1 -1
  305. package/dist/esm/types/properties/index.d.ts +1 -0
  306. package/dist/esm/types/properties/index.js +1 -0
  307. package/dist/esm/types/properties/theme/customTheme.d.ts +392 -0
  308. package/dist/esm/types/zVseed.d.ts +80 -0
  309. package/dist/umd/index.js +528 -187
  310. package/dist/umd/index.js.map +1 -1
  311. package/package.json +3 -3
  312. package/dist/esm/pipeline/spec/chart/pipes/color/colorCellStyleFill.d.ts +0 -2
  313. package/dist/esm/pipeline/spec/chart/pipes/color/colorCellStyleFill.js +0 -17
  314. package/dist/esm/pipeline/spec/chart/pipes/color/colorCellStyleFill.js.map +0 -1
package/dist/umd/index.js CHANGED
@@ -117,6 +117,7 @@
117
117
  FoldMeasureName: ()=>FoldMeasureName,
118
118
  darkTheme: ()=>darkTheme,
119
119
  isVTable: ()=>isVTable,
120
+ zBrush: ()=>zBrush,
120
121
  BoxPlotPivotIndicator: ()=>BoxPlotPivotIndicator,
121
122
  ORIGINAL_DATA: ()=>ORIGINAL_DATA,
122
123
  zMeasureSelector: ()=>zMeasureSelector,
@@ -137,6 +138,7 @@
137
138
  zSelectors: ()=>zSelectors,
138
139
  FoldYMeasureId: ()=>FoldYMeasureId,
139
140
  findMeasureById: ()=>findMeasureById,
141
+ zBrushConfig: ()=>zBrushConfig,
140
142
  AngleEncoding: ()=>AngleEncoding,
141
143
  areaPercentAdvancedPipeline: ()=>areaPercentAdvancedPipeline,
142
144
  zBackgroundColor: ()=>zBackgroundColor,
@@ -228,6 +230,7 @@
228
230
  registerAreaPercent: ()=>registerAreaPercent,
229
231
  zMeasureEncoding: ()=>zMeasureEncoding,
230
232
  zBarPercent: ()=>zBarPercent,
233
+ DimAxisType: ()=>DimAxisType,
231
234
  zTheme: ()=>zTheme,
232
235
  zDatum: ()=>zDatum,
233
236
  barAdvancedPipeline: ()=>barAdvancedPipeline,
@@ -526,31 +529,6 @@
526
529
  next: t
527
530
  });
528
531
  }
529
- const isMeasure = (measure)=>!('children' in measure);
530
- const isMeasureGroup = (measure)=>'children' in measure;
531
- const isMeasures = (measures)=>measures.every(isMeasure);
532
- const isPositionMeasure = (measure)=>!measure.encoding || ![
533
- 'color',
534
- 'size',
535
- 'label',
536
- 'tooltip',
537
- 'detail'
538
- ].includes(measure.encoding);
539
- const isMeasureTreeWithParentId = (measures)=>{
540
- if (!measures) return false;
541
- return measures.some((measure)=>'parentId' in measure);
542
- };
543
- const isCommonMeasureEncoding = (encoding)=>[
544
- 'color',
545
- 'label',
546
- 'tooltip'
547
- ].includes(encoding);
548
- const ensureParentIdInitialized = (parentId, measuresByView, parentIds)=>{
549
- if (!measuresByView[parentId]) {
550
- measuresByView[parentId] = [];
551
- parentIds.push(parentId);
552
- }
553
- };
554
532
  const DEFAULT_PARENT_ID = '__DefaultParentId__';
555
533
  const ChartTypeEnum = {
556
534
  Table: 'table',
@@ -577,6 +555,54 @@
577
555
  Histogram: 'histogram'
578
556
  };
579
557
  const DATUM_HIDE_KEY = '__VSEED_HideItem__';
558
+ const isMeasure = (measure)=>!('children' in measure);
559
+ const isMeasureGroup = (measure)=>'children' in measure;
560
+ const isMeasures = (measures)=>measures.every(isMeasure);
561
+ const isPositionMeasure = (measure, chartType)=>{
562
+ if (!measure.encoding) return true;
563
+ if (chartType === ChartTypeEnum.Funnel) return 'size' === measure.encoding;
564
+ if (chartType === ChartTypeEnum.Heatmap) return 'color' === measure.encoding;
565
+ if ([
566
+ ChartTypeEnum.Pie,
567
+ ChartTypeEnum.Donut,
568
+ ChartTypeEnum.Rose,
569
+ ChartTypeEnum.RoseParallel
570
+ ].includes(chartType)) return 'angle' === measure.encoding;
571
+ if (chartType === ChartTypeEnum.DualAxis) return [
572
+ 'primaryYAxis',
573
+ 'secondaryYAxis'
574
+ ].includes(measure.encoding);
575
+ if (ChartTypeEnum.Radar === chartType) return 'radius' === measure.encoding;
576
+ if ([
577
+ ChartTypeEnum.Line,
578
+ ChartTypeEnum.Area,
579
+ ChartTypeEnum.AreaPercent,
580
+ ChartTypeEnum.Column,
581
+ ChartTypeEnum.ColumnParallel,
582
+ ChartTypeEnum.ColumnPercent
583
+ ].includes(chartType)) return 'yAxis' === measure.encoding;
584
+ if ([
585
+ ChartTypeEnum.Bar,
586
+ ChartTypeEnum.BarParallel,
587
+ ChartTypeEnum.BarPercent
588
+ ].includes(chartType)) return 'xAxis' === measure.encoding;
589
+ return chartType === ChartTypeEnum.Boxplot && 'value' === measure.encoding;
590
+ };
591
+ const isMeasureTreeWithParentId = (measures)=>{
592
+ if (!measures) return false;
593
+ return measures.some((measure)=>'parentId' in measure);
594
+ };
595
+ const isCommonMeasureEncoding = (encoding)=>[
596
+ 'color',
597
+ 'label',
598
+ 'tooltip'
599
+ ].includes(encoding);
600
+ const ensureParentIdInitialized = (parentId, measuresByView, parentIds)=>{
601
+ if (!measuresByView[parentId]) {
602
+ measuresByView[parentId] = [];
603
+ parentIds.push(parentId);
604
+ }
605
+ };
580
606
  const isTable = (vseed)=>vseed.chartType === ChartTypeEnum.Table;
581
607
  const isPivotTable = (vseed)=>vseed.chartType === ChartTypeEnum.PivotTable;
582
608
  const isRadar = (vseed)=>vseed.chartType === ChartTypeEnum.Radar;
@@ -595,12 +621,32 @@
595
621
  return isCombination(vseed);
596
622
  };
597
623
  const chatType_isPivot = (vseed)=>{
598
- const { dimensions = [] } = vseed;
599
- return dimensions && dimensions.some((dimension)=>'row' === dimension.encoding || 'column' === dimension.encoding);
624
+ const { dimensions = [], measures = [] } = vseed;
625
+ if (dimensions && dimensions.some((dimension)=>'row' === dimension.encoding || 'column' === dimension.encoding)) return true;
626
+ if (vseed.chartType === ChartTypeEnum.Scatter) {
627
+ const xCount = measures.filter((m)=>'xAxis' === m.encoding).length;
628
+ const yCount = measures.filter((m)=>'yAxis' === m.encoding).length;
629
+ const otherCount = measures.filter((m)=>![
630
+ 'size',
631
+ 'xAxis',
632
+ 'yAxis'
633
+ ].includes(m.encoding) && !isCommonMeasureEncoding(m.encoding)).length;
634
+ let finalXCount;
635
+ let finalYCount;
636
+ if (xCount > 0) {
637
+ finalXCount = xCount;
638
+ finalYCount = yCount + otherCount;
639
+ } else {
640
+ finalXCount = otherCount > 0 ? 1 : 0;
641
+ finalYCount = yCount + Math.max(otherCount - 1, 0);
642
+ }
643
+ if (finalXCount > 1 || finalYCount > 1) return true;
644
+ }
645
+ return false;
600
646
  };
601
647
  const isCombination = (vseed)=>{
602
648
  if (isMeasureTreeWithParentId(vseed.measures)) {
603
- const parentIds = vseed.measures?.filter(isPositionMeasure).map((measure)=>measure.parentId || DEFAULT_PARENT_ID);
649
+ const parentIds = vseed.measures?.filter((m)=>isPositionMeasure(m, vseed.chartType)).map((measure)=>measure.parentId || DEFAULT_PARENT_ID);
604
650
  return parentIds && chunk_QJLMYOTX_i(parentIds).length > 1;
605
651
  }
606
652
  const { measures = [] } = vseed;
@@ -1639,6 +1685,7 @@
1639
1685
  const MeasureName = FoldMeasureName;
1640
1686
  const FoldPrimaryMeasureValue = '__MeaPrimaryValue__';
1641
1687
  const FoldSecondaryMeasureValue = '__MeaSecondaryValue__';
1688
+ const DimAxisType = '__Dim_AxisType__';
1642
1689
  const FoldXMeasureValue = '__MeaXValue__';
1643
1690
  const FoldYMeasureValue = '__MeaYValue__';
1644
1691
  const FoldXMeasureId = '__MeaXId__';
@@ -1738,14 +1785,10 @@
1738
1785
  };
1739
1786
  const result = new Array(dataset.length * measures.length);
1740
1787
  let index = 0;
1741
- const ids = measures.map((d)=>d.id);
1742
1788
  for(let i = 0; i < dataset.length; i++)for(let j = 0; j < measures.length; j++){
1743
1789
  const datum = chunk_KI5X74E2_y({
1744
1790
  ...dataset[i]
1745
- }, [
1746
- ...ids,
1747
- ...omitIds
1748
- ]);
1791
+ }, omitIds);
1749
1792
  datum[ORIGINAL_DATA] = dataset[i];
1750
1793
  const measure = measures[j];
1751
1794
  const { id, alias } = measure;
@@ -1753,7 +1796,17 @@
1753
1796
  datum[measureId] = id;
1754
1797
  datum[measureName] = alias || id;
1755
1798
  datum[measureValue] = dataset[i][id];
1756
- if (colorMeasureId) {
1799
+ const valueNumber = Number(datum[id]);
1800
+ foldInfo.statistics.min = Math.min(foldInfo.statistics.min, valueNumber);
1801
+ foldInfo.statistics.max = Math.max(foldInfo.statistics.max, valueNumber);
1802
+ foldInfo.statistics.sum += valueNumber;
1803
+ foldInfo.statistics.count++;
1804
+ if ('color' === measure.encoding) {
1805
+ foldInfo.statistics.colorMin = foldInfo.statistics.min;
1806
+ foldInfo.statistics.colorMax = foldInfo.statistics.max;
1807
+ datum[ColorEncoding] = valueNumber;
1808
+ datum[ColorIdEncoding] = measure.id;
1809
+ } else if (colorMeasureId) {
1757
1810
  const value = datum[ORIGINAL_DATA][colorMeasureId];
1758
1811
  datum[ColorEncoding] = value;
1759
1812
  datum[ColorIdEncoding] = colorMeasureId;
@@ -1761,11 +1814,6 @@
1761
1814
  foldInfo.statistics.colorMin = Math.min(foldInfo.statistics.colorMin, valueNumber);
1762
1815
  foldInfo.statistics.colorMax = Math.max(foldInfo.statistics.colorMax, valueNumber);
1763
1816
  }
1764
- const valueNumber = Number(datum[id]);
1765
- foldInfo.statistics.min = Math.min(foldInfo.statistics.min, valueNumber);
1766
- foldInfo.statistics.max = Math.max(foldInfo.statistics.max, valueNumber);
1767
- foldInfo.statistics.sum += valueNumber;
1768
- foldInfo.statistics.count++;
1769
1817
  foldInfo.foldMap[id] = alias;
1770
1818
  result[index++] = datum;
1771
1819
  }
@@ -2331,7 +2379,8 @@
2331
2379
  encoding.tooltip = chunk_QJLMYOTX_i([
2332
2380
  ...encoding.tooltip || [],
2333
2381
  ...label,
2334
- ...tooltip
2382
+ ...tooltip,
2383
+ ...color
2335
2384
  ]);
2336
2385
  };
2337
2386
  const pickDimensionsForReshape = (advancedVSeed)=>{
@@ -2446,10 +2495,10 @@
2446
2495
  };
2447
2496
  }
2448
2497
  const isLinearColor = (advancedVSeed, vseed)=>{
2449
- const { encoding } = advancedVSeed;
2498
+ const { encoding, chartType } = advancedVSeed;
2450
2499
  const measureIdList = (vseed.measures || advancedVSeed.measures).map((measure)=>measure.id);
2451
- const { color } = encoding;
2452
- return color?.length === 1 && measureIdList.includes(color[0]);
2500
+ const { color = [] } = encoding;
2501
+ return 'heatmap' === chartType ? color.length >= 1 && color.every((c)=>measureIdList.includes(c)) : 1 === color.length && measureIdList.includes(color[0]);
2453
2502
  };
2454
2503
  const getColorMeasureId = (advancedVSeed, vseed)=>{
2455
2504
  if (isLinearColor(advancedVSeed, vseed)) {
@@ -2464,11 +2513,13 @@
2464
2513
  };
2465
2514
  const { vseed } = context;
2466
2515
  const { dataset, chartType } = vseed;
2467
- const { encoding } = advancedVSeed;
2516
+ const { encoding, reshapeMeasures = [] } = advancedVSeed;
2517
+ const allMeasuresIds = (reshapeMeasures[0] ?? []).map((m)=>m.id);
2468
2518
  const colorMeasureId = getColorMeasureId(advancedVSeed, vseed);
2469
2519
  const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, T(advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? [], (item)=>item.id), T(advancedVSeed.reshapeMeasures?.[0] ?? [], (item)=>item.id), encoding, {
2470
2520
  colorItemAsId: false,
2471
- colorMeasureId
2521
+ colorMeasureId,
2522
+ omitIds: allMeasuresIds
2472
2523
  });
2473
2524
  return {
2474
2525
  ...result,
@@ -2600,6 +2651,7 @@
2600
2651
  'xAxis',
2601
2652
  'yAxis',
2602
2653
  'crosshairLine',
2654
+ 'brush',
2603
2655
  'dimensionLinkage'
2604
2656
  ]);
2605
2657
  const config = replaceNullToUndefined(pickedConfig);
@@ -2842,8 +2894,8 @@
2842
2894
  ].find((f)=>f.id === id)?.alias || '';
2843
2895
  return alias;
2844
2896
  }).join(' & ');
2845
- const isNull = (value)=>null === value;
2846
- const common_isNull = isNull;
2897
+ const isNil = (value)=>null == value;
2898
+ const common_isNil = isNil;
2847
2899
  const bandAxisStyle = (config)=>{
2848
2900
  const { visible = true, label, tick, title, grid, line, labelAutoHide, labelAutoHideGap, labelAutoLimit, labelAutoLimitLength = 80, labelAutoRotate, labelAutoRotateAngleRange } = config;
2849
2901
  return {
@@ -2927,7 +2979,7 @@
2927
2979
  0.075,
2928
2980
  0.1
2929
2981
  ];
2930
- if (common_isNull(bandAxis.title?.text)) bandAxis.title.text = defaultTitleText(measures, dimensions, encoding.x);
2982
+ if (common_isNil(bandAxis.title?.text)) bandAxis.title.text = defaultTitleText(measures, dimensions, encoding.x);
2931
2983
  if (onlyMeasureId && bandAxis.label) {
2932
2984
  const allDatasetReshapeInfo = pivotAllDatasetReshapeInfo || datasetReshapeInfo;
2933
2985
  const colorIdMap = allDatasetReshapeInfo.reduce((prev, cur)=>({
@@ -3061,6 +3113,40 @@
3061
3113
  ];
3062
3114
  return result;
3063
3115
  };
3116
+ const brush_brush = (spec, context)=>{
3117
+ const result = {
3118
+ ...spec
3119
+ };
3120
+ const { advancedVSeed, vseed } = context;
3121
+ const { brush = {}, chartType } = vseed;
3122
+ const theme = advancedVSeed.config?.[chartType]?.brush ?? {};
3123
+ const enable = brush.enable ?? theme?.enable;
3124
+ if (false === enable) return result;
3125
+ result.brush = {
3126
+ visible: true,
3127
+ removeOnClick: brush.removeOnClick,
3128
+ inBrush: {
3129
+ opacity: theme.inBrushStyle?.opacity,
3130
+ stroke: theme.inBrushStyle?.stroke,
3131
+ lineWidth: theme.inBrushStyle?.lineWidth
3132
+ },
3133
+ outOfBrush: {
3134
+ opacity: theme.outOfBrushStyle?.opacity,
3135
+ stroke: theme.outOfBrushStyle?.stroke,
3136
+ lineWidth: theme.outOfBrushStyle?.lineWidth
3137
+ }
3138
+ };
3139
+ if (result.label && false !== result.label.visible) {
3140
+ if (!result.label.state) result.label.state = {};
3141
+ result.label.state.outOfBrush = {
3142
+ opacity: result.brush.outOfBrush.opacity
3143
+ };
3144
+ result.label.state.inBrush = {
3145
+ opacity: result.brush.inBrush.opacity
3146
+ };
3147
+ }
3148
+ return result;
3149
+ };
3064
3150
  const verticalCrosshairLine = (spec, context)=>{
3065
3151
  const result = {
3066
3152
  ...spec
@@ -3596,6 +3682,7 @@
3596
3682
  if (wrap) return result;
3597
3683
  return result.join(' ');
3598
3684
  },
3685
+ syncState: true,
3599
3686
  position: labelPosition,
3600
3687
  style: {
3601
3688
  stroke: labelStroke,
@@ -3606,6 +3693,7 @@
3606
3693
  },
3607
3694
  smartInvert: labelColorSmartInvert
3608
3695
  };
3696
+ if (labelColorSmartInvert) result.style.lineWidth = 2;
3609
3697
  if (labelOverlap) result.overlap = {
3610
3698
  hideOnHit: true,
3611
3699
  clampForce: true
@@ -3700,7 +3788,7 @@
3700
3788
  ...spec
3701
3789
  };
3702
3790
  const { advancedVSeed, vseed } = context;
3703
- const { measures = [], datasetReshapeInfo, chartType, dimensions = [], encoding } = advancedVSeed;
3791
+ const { measures = [], datasetReshapeInfo, chartType, dimensions = [], encoding, reshapeMeasures = [] } = advancedVSeed;
3704
3792
  const baseConfig = advancedVSeed.config[chartType];
3705
3793
  const { tooltip = {
3706
3794
  enable: true
@@ -3720,28 +3808,34 @@
3720
3808
  title: {
3721
3809
  visible: true
3722
3810
  },
3723
- content: createDimensionContent(dimensions, measures, foldInfo, unfoldInfo)
3811
+ content: createDimensionContent(encoding.tooltip || [], measures, foldInfo, unfoldInfo, reshapeMeasures.length > 1)
3724
3812
  },
3725
3813
  updateElement: updateTooltipElement
3726
3814
  };
3727
3815
  return result;
3728
3816
  };
3729
- const createDimensionContent = (dimensions = [], measures = [], foldInfo, unfoldInfo)=>{
3817
+ const createDimensionContent = (tooltip, measures = [], foldInfo, unfoldInfo, hasMultiMeasureGroup)=>{
3730
3818
  const { measureId, measureValue, foldMap } = foldInfo;
3731
3819
  const { encodingColor } = unfoldInfo;
3820
+ const hasMeasureTooltip = tooltip.some((d)=>measures.find((item)=>item.id === d));
3732
3821
  return [
3733
3822
  {
3734
3823
  visible: true,
3735
3824
  shapeType: 'rectRound',
3736
3825
  hasShape: true,
3737
- key: dimensions.some((d)=>'color' === d.encoding) ? (v)=>{
3738
- const datum = v;
3739
- const key = datum && datum[encodingColor] || '';
3740
- return unfoldInfo.colorIdMap[key].alias ?? key;
3741
- } : (v)=>{
3826
+ key: hasMeasureTooltip ? (v)=>{
3742
3827
  const datum = v;
3743
3828
  const key = datum && datum[measureId] || '';
3744
3829
  return foldMap[key] ?? key;
3830
+ } : (v)=>{
3831
+ const datum = v;
3832
+ const key = datum && datum[encodingColor] || '';
3833
+ const colorKey = `${unfoldInfo.colorIdMap[key].alias ?? key}`;
3834
+ if (hasMultiMeasureGroup) {
3835
+ const mId = datum && datum[measureId] || '';
3836
+ return `${colorKey}-${foldMap[mId] ?? mId}`;
3837
+ }
3838
+ return colorKey;
3745
3839
  },
3746
3840
  value: (v)=>{
3747
3841
  const datum = v;
@@ -4299,8 +4393,6 @@
4299
4393
  return fuzzy ? "number" === type : "number" === type || isType(value, "Number");
4300
4394
  };
4301
4395
  const common_isNumber = isNumber;
4302
- const isNil = (value)=>null == value;
4303
- const common_isNil = isNil;
4304
4396
  const clamp_clamp = function(input, min, max) {
4305
4397
  return input < min ? min : input > max ? max : input;
4306
4398
  };
@@ -4911,9 +5003,9 @@
4911
5003
  borderColor,
4912
5004
  color: bodyFontColor,
4913
5005
  borderLineWidth: (arg)=>{
4914
- const noYAxis = 'pie' === chartType || 'rose' === chartType || 'donut' === chartType || 'funnel' === chartType || 'radar' === chartType || 'roseParallel' === chartType;
5006
+ const noYAxis = 'pie' === chartType || 'rose' === chartType || 'donut' === chartType || 'radar' === chartType || 'roseParallel' === chartType;
4915
5007
  return [
4916
- 0 === arg.row ? outlineBorderLineWidth : 1,
5008
+ 0 === arg.row || 'funnel' === chartType && 1 === arg.row && arg.table.rowCount <= 2 ? outlineBorderLineWidth : 1,
4917
5009
  outlineBorderLineWidth,
4918
5010
  0,
4919
5011
  0 === arg.col || noYAxis && 1 === arg.col && arg.table.colCount <= 2 ? outlineBorderLineWidth : 1
@@ -5206,7 +5298,7 @@
5206
5298
  const result = axisStyle(spec, context);
5207
5299
  if (result.axes) {
5208
5300
  const { advancedVSeed } = context;
5209
- const { config, chartType, encoding, reshapeMeasures } = advancedVSeed;
5301
+ const { config, chartType, encoding, reshapeMeasures, datasetReshapeInfo } = advancedVSeed;
5210
5302
  const themConfig = config?.[chartType]?.pivotGrid ?? {};
5211
5303
  result.axes.forEach((axis)=>{
5212
5304
  axis.domainLine = {
@@ -5215,11 +5307,16 @@
5215
5307
  if (themConfig.chartGridColor && axis.grid && axis.grid.visible && axis.grid.style) axis.grid.style.stroke = themConfig.chartGridColor;
5216
5308
  if (themConfig.axisLabelColor && axis.label && axis.label.visible && axis.label.style) axis.label.style.fill = themConfig.axisLabelColor;
5217
5309
  if ('band' === axis.type) {
5218
- if ('left' === axis.orient || 'right' === axis.orient) axis.innerOffset = {
5219
- top: 2,
5220
- bottom: 2
5221
- };
5222
- else if ('top' === axis.orient || 'bottom' === axis.orient) axis.innerOffset = {
5310
+ if ('left' === axis.orient || 'right' === axis.orient) {
5311
+ axis.innerOffset = {
5312
+ top: 2,
5313
+ bottom: 2
5314
+ };
5315
+ if (reshapeMeasures && reshapeMeasures.length > 1 && chartType === ChartTypeEnum.Heatmap && common_isNil(axis.title.text)) {
5316
+ axis.title.visible = true;
5317
+ axis.title.text = Object.values(datasetReshapeInfo[0].foldInfo.foldMap)[0];
5318
+ }
5319
+ } else if ('top' === axis.orient || 'bottom' === axis.orient) axis.innerOffset = {
5223
5320
  left: 2,
5224
5321
  right: 2
5225
5322
  };
@@ -5237,12 +5334,20 @@
5237
5334
  };
5238
5335
  const { advancedVSeed } = context;
5239
5336
  const dimensions = advancedVSeed.dimensions;
5337
+ const measures = advancedVSeed.measures ?? [];
5240
5338
  if (!dimensions) return result;
5241
5339
  const rowDimensions = dimensions.filter((dim)=>'row' === dim.encoding);
5242
- const rows = rowDimensions.map((dim)=>({
5340
+ const rows = rowDimensions.map((dim)=>{
5341
+ const baseConfig = {
5243
5342
  dimensionKey: dim.id,
5244
- title: dim.alias || dim.id
5245
- }));
5343
+ title: dim.alias ?? dim.id
5344
+ };
5345
+ if (dim.id === FoldYMeasureId) baseConfig.headerFormat = (title)=>{
5346
+ const measure = measures.find((m)=>m.id === title);
5347
+ return measure ? measure.alias ?? measure.id : title;
5348
+ };
5349
+ return baseConfig;
5350
+ });
5246
5351
  return {
5247
5352
  ...result,
5248
5353
  rows: rows
@@ -5254,12 +5359,20 @@
5254
5359
  };
5255
5360
  const { advancedVSeed } = context;
5256
5361
  const dimensions = advancedVSeed.dimensions;
5362
+ const measures = advancedVSeed.measures ?? [];
5257
5363
  if (!dimensions) return result;
5258
5364
  const columnDimensions = dimensions.filter((dim)=>'column' === dim.encoding);
5259
- const columns = columnDimensions.map((dim)=>({
5365
+ const columns = columnDimensions.map((dim)=>{
5366
+ const baseConfig = {
5260
5367
  dimensionKey: dim.id,
5261
- title: dim.alias || dim.id
5262
- }));
5368
+ title: dim.alias ?? dim.id
5369
+ };
5370
+ if (dim.id === FoldXMeasureId) baseConfig.headerFormat = (title)=>{
5371
+ const measure = measures.find((m)=>m.id === title);
5372
+ return measure ? measure.alias ?? measure.id : title;
5373
+ };
5374
+ return baseConfig;
5375
+ });
5263
5376
  return {
5264
5377
  ...result,
5265
5378
  columns: columns
@@ -5272,8 +5385,9 @@
5272
5385
  const { advancedVSeed } = context;
5273
5386
  const { config, chartType } = advancedVSeed;
5274
5387
  const themConfig = config?.[chartType]?.pivotGrid ?? {};
5275
- if (result.columns && result.columns.length > 0) result.title = {
5276
- text: spec.columns.map((entry)=>entry.title).join('/'),
5388
+ const columns = result.columns?.filter((c)=>c.dimensionKey !== FoldXMeasureId);
5389
+ if (columns && columns.length > 0) result.title = {
5390
+ text: columns.map((entry)=>entry.title).join('/'),
5277
5391
  align: 'center',
5278
5392
  orient: 'top',
5279
5393
  padding: [
@@ -5415,8 +5529,8 @@
5415
5529
  const baseConfig = advancedVSeed.config[chartType];
5416
5530
  if (!baseConfig || !baseConfig.legend) return result;
5417
5531
  const { datasetReshapeInfo } = advancedVSeed;
5418
- const max = Math.max(...datasetReshapeInfo.map((d)=>d.foldInfo.statistics.colorMin));
5419
- const min = Math.min(...datasetReshapeInfo.map((d)=>d.foldInfo.statistics.colorMax));
5532
+ const max = Math.max(...datasetReshapeInfo.map((d)=>d.foldInfo.statistics.colorMax));
5533
+ const min = Math.min(...datasetReshapeInfo.map((d)=>d.foldInfo.statistics.colorMin));
5420
5534
  const { legend, color } = baseConfig;
5421
5535
  const { colorScheme, linearColorScheme } = color;
5422
5536
  const { enable, position = 'bottom', labelFontColor, labelColor, labelFontSize = 12, labelFontWeight = 400 } = legend || {};
@@ -5546,6 +5660,7 @@
5546
5660
  progressive,
5547
5661
  xBand,
5548
5662
  yLinear,
5663
+ brush_brush,
5549
5664
  verticalCrosshairLine,
5550
5665
  colorAdapter(discreteLegend, colorLegend),
5551
5666
  colorPointStyleFill(pointStyle_pointStyle),
@@ -5572,6 +5687,7 @@
5572
5687
  progressive,
5573
5688
  xBand,
5574
5689
  pivotAxisStyle(yLinear),
5690
+ brush_brush,
5575
5691
  verticalCrosshairLine,
5576
5692
  colorPointStyleFill(pointStyle_pointStyle),
5577
5693
  pointStateDimensionHover,
@@ -5661,7 +5777,8 @@
5661
5777
  encoding.tooltip = chunk_QJLMYOTX_i([
5662
5778
  ...encoding.tooltip || [],
5663
5779
  ...label,
5664
- ...tooltip
5780
+ ...tooltip,
5781
+ ...color
5665
5782
  ]);
5666
5783
  };
5667
5784
  const columnConfig = (advancedVSeed, context)=>{
@@ -5682,6 +5799,7 @@
5682
5799
  'stackCornerRadius',
5683
5800
  'barMaxWidth',
5684
5801
  'barGapInGroup',
5802
+ 'brush',
5685
5803
  'dimensionLinkage'
5686
5804
  ]);
5687
5805
  const config = replaceNullToUndefined(pickedConfig);
@@ -6531,6 +6649,7 @@
6531
6649
  xBand,
6532
6650
  yLinear,
6533
6651
  label_label,
6652
+ brush_brush,
6534
6653
  tooltip_tooltip,
6535
6654
  verticalCrosshairRect,
6536
6655
  colorAdapter(discreteLegend, colorLegend),
@@ -6557,6 +6676,7 @@
6557
6676
  progressive,
6558
6677
  xBand,
6559
6678
  pivotAxisStyle(yLinear),
6679
+ brush_brush,
6560
6680
  label_label,
6561
6681
  tooltip_tooltip,
6562
6682
  verticalCrosshairRect,
@@ -6591,7 +6711,8 @@
6591
6711
  'color',
6592
6712
  'label',
6593
6713
  'legend',
6594
- 'tooltip'
6714
+ 'tooltip',
6715
+ 'brush'
6595
6716
  ]);
6596
6717
  const config = replaceNullToUndefined(pickedConfig);
6597
6718
  result.config = {
@@ -6614,7 +6735,6 @@
6614
6735
  const roseParallelConfig = pieConfig;
6615
6736
  const radarConfig = pieConfig;
6616
6737
  const funnelConfig = pieConfig;
6617
- const heatmapConfig = pieConfig;
6618
6738
  const columnParallelAdvancedPipeline = [
6619
6739
  initAdvancedVSeed_initAdvancedVSeed,
6620
6740
  default_defaultMeasures_defaultMeasures,
@@ -6736,6 +6856,7 @@
6736
6856
  xBand,
6737
6857
  yLinear,
6738
6858
  label_label,
6859
+ brush_brush,
6739
6860
  tooltip_tooltip,
6740
6861
  colorAdapter(discreteLegend, colorLegend),
6741
6862
  verticalCrosshairRect,
@@ -6760,6 +6881,7 @@
6760
6881
  progressive,
6761
6882
  xBand,
6762
6883
  pivotAxisStyle(yLinear),
6884
+ brush_brush,
6763
6885
  label_label,
6764
6886
  tooltip_tooltip,
6765
6887
  verticalCrosshairRect,
@@ -6833,6 +6955,7 @@
6833
6955
  xBand,
6834
6956
  yLinear,
6835
6957
  label_label,
6958
+ brush_brush,
6836
6959
  tooltip_tooltip,
6837
6960
  colorAdapter(discreteLegend, colorLegend),
6838
6961
  verticalCrosshairRect,
@@ -6859,6 +6982,7 @@
6859
6982
  progressive,
6860
6983
  xBand,
6861
6984
  pivotAxisStyle(yLinear),
6985
+ brush_brush,
6862
6986
  label_label,
6863
6987
  tooltip_tooltip,
6864
6988
  verticalCrosshairRect,
@@ -6945,7 +7069,8 @@
6945
7069
  encoding.tooltip = chunk_QJLMYOTX_i([
6946
7070
  ...encoding.tooltip || [],
6947
7071
  ...label,
6948
- ...tooltip
7072
+ ...tooltip,
7073
+ ...color
6949
7074
  ]);
6950
7075
  };
6951
7076
  const sortYBandAxis = (advancedVSeed, context)=>{
@@ -7117,7 +7242,7 @@
7117
7242
  0.075,
7118
7243
  0.1
7119
7244
  ];
7120
- if (common_isNull(bandAxis.title?.text)) bandAxis.title.text = defaultTitleText(measures, dimensions, encoding.y);
7245
+ if (common_isNil(bandAxis.title?.text)) bandAxis.title.text = defaultTitleText(measures, dimensions, encoding.y);
7121
7246
  if (onlyMeasureId && bandAxis.label) {
7122
7247
  const allDatasetReshapeInfo = pivotAllDatasetReshapeInfo || datasetReshapeInfo;
7123
7248
  const colorIdMap = allDatasetReshapeInfo.reduce((prev, cur)=>({
@@ -7186,6 +7311,7 @@
7186
7311
  xLinear,
7187
7312
  yBand,
7188
7313
  label_label,
7314
+ brush_brush,
7189
7315
  tooltip_tooltip,
7190
7316
  colorAdapter(discreteLegend, colorLegend),
7191
7317
  horizontalCrosshairRect,
@@ -7211,6 +7337,7 @@
7211
7337
  xLinear,
7212
7338
  pivotAxisStyle(yBand),
7213
7339
  label_label,
7340
+ brush_brush,
7214
7341
  tooltip_tooltip,
7215
7342
  colorBarStyleFill(barStyle_barStyle),
7216
7343
  horizontalCrosshairRect,
@@ -7303,6 +7430,7 @@
7303
7430
  xLinear,
7304
7431
  yBand,
7305
7432
  label_label,
7433
+ brush_brush,
7306
7434
  tooltip_tooltip,
7307
7435
  colorAdapter(discreteLegend, colorLegend),
7308
7436
  horizontalCrosshairRect,
@@ -7326,6 +7454,7 @@
7326
7454
  datasetYX,
7327
7455
  xLinear,
7328
7456
  pivotAxisStyle(yBand),
7457
+ brush_brush,
7329
7458
  label_label,
7330
7459
  tooltip_tooltip,
7331
7460
  colorBarStyleFill(barStyle_barStyle),
@@ -7391,6 +7520,7 @@
7391
7520
  xLinear,
7392
7521
  yBand,
7393
7522
  label_label,
7523
+ brush_brush,
7394
7524
  tooltip_tooltip,
7395
7525
  colorAdapter(discreteLegend, colorLegend),
7396
7526
  horizontalCrosshairRect,
@@ -7415,6 +7545,7 @@
7415
7545
  datasetYX,
7416
7546
  xLinear,
7417
7547
  pivotAxisStyle(yBand),
7548
+ brush_brush,
7418
7549
  label_label,
7419
7550
  tooltip_tooltip,
7420
7551
  colorBarStyleFill(barStyle_barStyle),
@@ -7583,6 +7714,7 @@
7583
7714
  xBand,
7584
7715
  yLinear,
7585
7716
  label_label,
7717
+ brush_brush,
7586
7718
  tooltip_tooltip,
7587
7719
  colorAdapter(discreteLegend, colorLegend),
7588
7720
  verticalCrosshairLine,
@@ -7611,6 +7743,7 @@
7611
7743
  xBand,
7612
7744
  pivotAxisStyle(yLinear),
7613
7745
  label_label,
7746
+ brush_brush,
7614
7747
  tooltip_tooltip,
7615
7748
  verticalCrosshairLine,
7616
7749
  colorPointStyleFill(pointStyle_pointStyle),
@@ -7678,6 +7811,7 @@
7678
7811
  xBand,
7679
7812
  yLinear,
7680
7813
  label_label,
7814
+ brush_brush,
7681
7815
  tooltip_tooltip,
7682
7816
  colorAdapter(discreteLegend, colorLegend),
7683
7817
  verticalCrosshairLine,
@@ -7706,6 +7840,7 @@
7706
7840
  xBand,
7707
7841
  pivotAxisStyle(yLinear),
7708
7842
  label_label,
7843
+ brush_brush,
7709
7844
  tooltip_tooltip,
7710
7845
  verticalCrosshairLine,
7711
7846
  colorPointStyleFill(pointStyle_pointStyle),
@@ -7732,38 +7867,56 @@
7732
7867
  };
7733
7868
  const buildMeasuresForScatter = (advancedVSeed)=>{
7734
7869
  const { measures = [] } = advancedVSeed;
7735
- const measuresByView = {};
7736
- const parentIds = [];
7870
+ const encodedMeasures = [];
7737
7871
  for(let index = 0; index < measures.length; index++){
7738
7872
  const item = measures[index];
7739
7873
  const encoding = item.encoding;
7740
- const parentId = item.parentId || DEFAULT_PARENT_ID;
7741
7874
  const isYAxis = 'yAxis' === encoding;
7742
7875
  const isXAxis = 'xAxis' === encoding;
7743
7876
  const isOtherEncoding = item.encoding && isCommonMeasureEncoding(encoding);
7744
- ensureParentIdInitialized(parentId, measuresByView, parentIds);
7745
- if (isYAxis) measuresByView[parentId].push(item);
7746
- else if (isXAxis) measuresByView[parentId].push(item);
7877
+ if (isYAxis) encodedMeasures.push(item);
7878
+ else if (isXAxis) encodedMeasures.push(item);
7747
7879
  else if (!isOtherEncoding && 'size' !== encoding) {
7748
- const xCount = measuresByView[parentId].filter((m)=>'xAxis' === m.encoding).length;
7880
+ const xCount = encodedMeasures.filter((m)=>'xAxis' === m.encoding).length;
7749
7881
  item.encoding = 0 === xCount ? 'xAxis' : 'yAxis';
7750
- measuresByView[parentId].push(item);
7882
+ encodedMeasures.push(item);
7751
7883
  }
7752
7884
  }
7753
- advancedVSeed.reshapeMeasures = parentIds.map((pid)=>{
7754
- const basicMeasures = measuresByView[pid];
7755
- const xCount = basicMeasures.filter((m)=>'xAxis' === m.encoding).length;
7756
- const yCount = basicMeasures.filter((m)=>'yAxis' === m.encoding).length;
7757
- if (0 === yCount && xCount > 0) {
7758
- const cloneMeasure = chunk_BCBB46UE_d(basicMeasures[0]);
7759
- cloneMeasure.encoding = 'yAxis';
7760
- return [
7761
- ...basicMeasures,
7762
- cloneMeasure
7763
- ];
7885
+ const xCount = encodedMeasures.filter((m)=>'xAxis' === m.encoding).length;
7886
+ const yCount = encodedMeasures.filter((m)=>'yAxis' === m.encoding).length;
7887
+ if (0 === yCount && xCount > 0) {
7888
+ const cloneMeasure = chunk_BCBB46UE_d(encodedMeasures[0]);
7889
+ cloneMeasure.encoding = 'yAxis';
7890
+ encodedMeasures.push(cloneMeasure);
7891
+ }
7892
+ advancedVSeed.reshapeMeasures = encodedMeasures.length > 0 ? [
7893
+ encodedMeasures
7894
+ ] : [];
7895
+ return advancedVSeed;
7896
+ };
7897
+ const addPivotDimensionsForScatter = (advancedVSeed)=>{
7898
+ const { reshapeMeasures = [] } = advancedVSeed;
7899
+ if (reshapeMeasures[0]?.length >= 2) {
7900
+ const dimensions = advancedVSeed.dimensions ?? [];
7901
+ const xMeasures = reshapeMeasures[0].filter((m)=>'xAxis' === m.encoding);
7902
+ const yMeasures = reshapeMeasures[0].filter((m)=>'yAxis' === m.encoding);
7903
+ if (xMeasures.length > 1 || yMeasures.length > 1) {
7904
+ dimensions.push({
7905
+ id: FoldXMeasureId,
7906
+ alias: ' ',
7907
+ encoding: 'column'
7908
+ });
7909
+ dimensions.push({
7910
+ id: FoldYMeasureId,
7911
+ alias: ' ',
7912
+ encoding: 'row'
7913
+ });
7764
7914
  }
7765
- return basicMeasures;
7766
- }).filter((m)=>m.length > 0);
7915
+ return {
7916
+ ...advancedVSeed,
7917
+ dimensions
7918
+ };
7919
+ }
7767
7920
  return advancedVSeed;
7768
7921
  };
7769
7922
  const defaultEncodingForScatter = (advancedVSeed)=>{
@@ -7794,7 +7947,11 @@
7794
7947
  const dimensionsWithoutMeasureId = dimensions.filter((item)=>item.id !== MeasureId);
7795
7948
  const uniqueDimIds = chunk_QJLMYOTX_i(dimensionsWithoutMeasureId.map((d)=>d.id));
7796
7949
  encoding.detail = encoding.color;
7797
- encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureId);
7950
+ encoding.tooltip = uniqueDimIds.filter((d)=>![
7951
+ MeasureId,
7952
+ FoldYMeasureId,
7953
+ FoldXMeasureId
7954
+ ].includes(d));
7798
7955
  encoding.label = [];
7799
7956
  encoding.row = [];
7800
7957
  encoding.column = [];
@@ -7806,7 +7963,11 @@
7806
7963
  MeasureId
7807
7964
  ];
7808
7965
  encoding.tooltip = chunk_QJLMYOTX_i(dimensions.map((item)=>item.id));
7809
- encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureId);
7966
+ encoding.tooltip = encoding.tooltip.filter((d)=>![
7967
+ MeasureId,
7968
+ FoldYMeasureId,
7969
+ FoldXMeasureId
7970
+ ].includes(d));
7810
7971
  encoding.label = chunk_QJLMYOTX_i(dimensions.filter((item)=>'label' === item.encoding).map((item)=>item.id));
7811
7972
  encoding.label = encoding.label.filter((d)=>d !== MeasureId);
7812
7973
  };
@@ -7829,7 +7990,9 @@
7829
7990
  encoding.tooltip = chunk_QJLMYOTX_i([
7830
7991
  ...encoding.tooltip || [],
7831
7992
  ...label,
7832
- ...tooltip
7993
+ ...tooltip,
7994
+ ...color,
7995
+ ...encoding.size
7833
7996
  ]);
7834
7997
  };
7835
7998
  const scatterConfig = (advancedVSeed, context)=>{
@@ -7849,6 +8012,7 @@
7849
8012
  'sizeRange',
7850
8013
  'size',
7851
8014
  'crosshairLine',
8015
+ 'brush',
7852
8016
  'dimensionLinkage'
7853
8017
  ]);
7854
8018
  const config = replaceNullToUndefined(pickedConfig);
@@ -7871,6 +8035,7 @@
7871
8035
  const measures = reshapeMeasures?.[0] ?? [];
7872
8036
  const foldInfoList = [];
7873
8037
  const unfoldInfoList = [];
8038
+ const sizeEncodingIds = encoding?.size ?? [];
7874
8039
  const datasets = [];
7875
8040
  const xMeasures = measures.filter((m)=>'xAxis' === m.encoding);
7876
8041
  const yMeasures = measures.filter((m)=>'yAxis' === m.encoding);
@@ -7878,7 +8043,8 @@
7878
8043
  foldMeasureValue: FoldXMeasureValue,
7879
8044
  foldMeasureId: FoldXMeasureId,
7880
8045
  colorItemAsId: true,
7881
- colorMeasureId: getColorMeasureId(advancedVSeed, vseed)
8046
+ colorMeasureId: getColorMeasureId(advancedVSeed, vseed),
8047
+ omitIds: xMeasures.map((m)=>m.id).filter((id)=>!sizeEncodingIds.includes(id))
7882
8048
  });
7883
8049
  datasets.push(xResult.dataset);
7884
8050
  foldInfoList.push(xResult.foldInfo);
@@ -7887,7 +8053,8 @@
7887
8053
  foldMeasureValue: FoldYMeasureValue,
7888
8054
  foldMeasureId: FoldYMeasureId,
7889
8055
  colorItemAsId: true,
7890
- colorMeasureId: getColorMeasureId(advancedVSeed, vseed)
8056
+ colorMeasureId: getColorMeasureId(advancedVSeed, vseed),
8057
+ omitIds: yMeasures.map((m)=>m.id).filter((id)=>!sizeEncodingIds.includes(id))
7891
8058
  });
7892
8059
  datasets[0] = yResult.dataset;
7893
8060
  foldInfoList.push(yResult.foldInfo);
@@ -7923,7 +8090,8 @@
7923
8090
  const { encoding, chartType } = advancedVSeed;
7924
8091
  const reshapeMeasures = advancedVSeed.reshapeMeasures ?? [];
7925
8092
  const dimensions = advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? [];
7926
- const allMeasuresIds = reshapeMeasures.flatMap((measureGroup)=>measureGroup.map((m)=>m.id));
8093
+ let allMeasuresIds = chunk_QJLMYOTX_i(reshapeMeasures.flatMap((measureGroup)=>measureGroup.map((m)=>m.id)));
8094
+ if (encoding?.size?.length) allMeasuresIds = allMeasuresIds.filter((mId)=>!encoding.size.includes(mId));
7927
8095
  const datasetList = [];
7928
8096
  const datasetReshapeInfo = [];
7929
8097
  reshapeMeasures.forEach((measures, index)=>{
@@ -7934,6 +8102,7 @@
7934
8102
  const yMeasures = measures.filter((m)=>'yAxis' === m.encoding);
7935
8103
  const xResult = dataReshapeByEncoding(dataset, dimensions, xMeasures, encoding, {
7936
8104
  foldMeasureValue: `${FoldXMeasureValue}${index}`,
8105
+ foldMeasureId: FoldXMeasureId,
7937
8106
  colorItemAsId: true,
7938
8107
  colorMeasureId: getColorMeasureId(advancedVSeed, vseed),
7939
8108
  omitIds: allMeasuresIds
@@ -7943,6 +8112,7 @@
7943
8112
  unfoldInfoList.push(xResult.unfoldInfo);
7944
8113
  const yResult = dataReshapeByEncoding(dataset, dimensions, yMeasures, encoding, {
7945
8114
  foldMeasureValue: `${FoldYMeasureValue}${index}`,
8115
+ foldMeasureId: FoldYMeasureId,
7946
8116
  colorItemAsId: true,
7947
8117
  colorMeasureId: getColorMeasureId(advancedVSeed, vseed),
7948
8118
  omitIds: allMeasuresIds
@@ -7966,10 +8136,10 @@
7966
8136
  unfoldInfo: unfoldInfo
7967
8137
  };
7968
8138
  datasetReshapeInfo.push(reshapeInfo);
7969
- datasetList.push(datasets[0].map((d, index)=>({
7970
- ...d,
7971
- ...datasets[1]?.[index] || {}
7972
- })));
8139
+ datasetList.push(datasets[0].flatMap((d)=>datasets[1].filter((yDatum)=>yDatum[ORIGINAL_DATA] === d[ORIGINAL_DATA]).map((yDatum)=>({
8140
+ ...d,
8141
+ ...yDatum
8142
+ }))));
7973
8143
  });
7974
8144
  return {
7975
8145
  ...result,
@@ -7984,9 +8154,11 @@
7984
8154
  defaultMeasureId_defaultMeasureId,
7985
8155
  encodingAdapter([
7986
8156
  buildMeasuresForScatter,
8157
+ addPivotDimensionsForScatter,
7987
8158
  defaultEncodingForScatter
7988
8159
  ], [
7989
8160
  buildMeasuresForScatter,
8161
+ addPivotDimensionsForScatter,
7990
8162
  encodingForScatter,
7991
8163
  pickDimensionsForReshape
7992
8164
  ]),
@@ -8088,7 +8260,8 @@
8088
8260
  title: {
8089
8261
  visible: false
8090
8262
  },
8091
- content: tooltipScatter_createMarkContent(encoding.tooltip || [], dimensions, vseed.measures, locale, foldInfoList)
8263
+ content: tooltipScatter_createMarkContent(encoding.tooltip || [], dimensions, vseed.measures, locale, foldInfoList),
8264
+ updateContent: (prev = [])=>T(prev, (entry)=>`${String(entry.key)}::${String(entry.value)}`)
8092
8265
  },
8093
8266
  dimension: {
8094
8267
  visible: false
@@ -8135,7 +8308,13 @@
8135
8308
  visible: true,
8136
8309
  hasShape: true,
8137
8310
  shapeType: 'rectRound',
8138
- key: Object.values(foldInfo.foldMap)[0],
8311
+ key: (v)=>{
8312
+ const { measureId, foldMap } = foldInfo;
8313
+ const datum = v;
8314
+ if (!datum) return '';
8315
+ const id = datum[measureId];
8316
+ return foldMap[id] ?? id;
8317
+ },
8139
8318
  value: (v)=>{
8140
8319
  const { measureId, measureValue } = foldInfo;
8141
8320
  const datum = v;
@@ -8653,6 +8832,7 @@
8653
8832
  progressive,
8654
8833
  xLinear,
8655
8834
  yLinear,
8835
+ brush_brush,
8656
8836
  scatterSize,
8657
8837
  labelScatter,
8658
8838
  tooltipScatter,
@@ -8683,6 +8863,7 @@
8683
8863
  progressive,
8684
8864
  xLinear,
8685
8865
  pivotAxisStyle(yLinear),
8866
+ brush_brush,
8686
8867
  scatterSize,
8687
8868
  labelScatter,
8688
8869
  tooltipScatter,
@@ -8804,7 +8985,8 @@
8804
8985
  encoding.tooltip = chunk_QJLMYOTX_i([
8805
8986
  ...encoding.tooltip || [],
8806
8987
  ...label,
8807
- ...tooltip
8988
+ ...tooltip,
8989
+ ...color
8808
8990
  ]);
8809
8991
  };
8810
8992
  const reshapeWithDualEncoding = (advancedVSeed, context)=>{
@@ -8816,6 +8998,7 @@
8816
8998
  const { encoding, chartType } = advancedVSeed;
8817
8999
  const measures = advancedVSeed.reshapeMeasures?.[0] ?? [];
8818
9000
  const dimensions = advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? [];
9001
+ const allMeasuresIds = measures.map((m)=>m.id);
8819
9002
  const foldInfoList = [];
8820
9003
  const unfoldInfoList = [];
8821
9004
  const datasets = [];
@@ -8829,7 +9012,11 @@
8829
9012
  const primaryResult = dataReshapeByEncoding(dataset, T(dimensions, (item)=>item.id), T(primaryMeasures.filter((m)=>m.chartType === chartType), (item)=>item.id), encoding, {
8830
9013
  colorItemAsId: false,
8831
9014
  foldMeasureValue: FoldPrimaryMeasureValue,
8832
- colorMeasureId: getColorMeasureId(advancedVSeed, vseed)
9015
+ colorMeasureId: getColorMeasureId(advancedVSeed, vseed),
9016
+ omitIds: allMeasuresIds
9017
+ });
9018
+ primaryResult.dataset.forEach((row)=>{
9019
+ row[DimAxisType] = 'primaryYAxis';
8833
9020
  });
8834
9021
  datasets.push(primaryResult.dataset);
8835
9022
  foldInfoList.push(primaryResult.foldInfo);
@@ -8839,7 +9026,11 @@
8839
9026
  const secondaryResult = dataReshapeByEncoding(dataset, T(dimensions, (item)=>item.id), T(secondaryMeasures.filter((m)=>m.chartType === chartType), (item)=>item.id), encoding, {
8840
9027
  colorItemAsId: false,
8841
9028
  foldMeasureValue: FoldSecondaryMeasureValue,
8842
- colorMeasureId: getColorMeasureId(advancedVSeed, vseed)
9029
+ colorMeasureId: getColorMeasureId(advancedVSeed, vseed),
9030
+ omitIds: allMeasuresIds
9031
+ });
9032
+ secondaryResult.dataset.forEach((row)=>{
9033
+ row[DimAxisType] = 'secondaryYAxis';
8843
9034
  });
8844
9035
  datasets.push(secondaryResult.dataset);
8845
9036
  foldInfoList.push(secondaryResult.foldInfo);
@@ -8896,6 +9087,9 @@
8896
9087
  colorMeasureId: getColorMeasureId(advancedVSeed, vseed),
8897
9088
  omitIds: allMeasuresIds
8898
9089
  });
9090
+ primaryResult.dataset.forEach((row)=>{
9091
+ row[DimAxisType] = 'primaryYAxis';
9092
+ });
8899
9093
  datasets.push(primaryResult.dataset);
8900
9094
  foldInfoList.push(primaryResult.foldInfo);
8901
9095
  unfoldInfoList.push(primaryResult.unfoldInfo);
@@ -8907,6 +9101,9 @@
8907
9101
  colorMeasureId: getColorMeasureId(advancedVSeed, vseed),
8908
9102
  omitIds: allMeasuresIds
8909
9103
  });
9104
+ secondaryResult.dataset.forEach((row)=>{
9105
+ row[DimAxisType] = 'secondaryYAxis';
9106
+ });
8910
9107
  datasets.push(secondaryResult.dataset);
8911
9108
  foldInfoList.push(secondaryResult.foldInfo);
8912
9109
  unfoldInfoList.push(secondaryResult.unfoldInfo);
@@ -9087,6 +9284,7 @@
9087
9284
  break;
9088
9285
  case 'column':
9089
9286
  result.type = 'bar';
9287
+ result.stack = true;
9090
9288
  result.zIndex = 1000;
9091
9289
  break;
9092
9290
  case 'columnParallel':
@@ -9126,11 +9324,8 @@
9126
9324
  zIndex: 1001
9127
9325
  };
9128
9326
  const { advancedVSeed } = context;
9129
- const { datasetReshapeInfo, reshapeMeasures = [] } = advancedVSeed;
9130
- const index = datasetReshapeInfo[0].index;
9131
- const chartTypes = reshapeMeasures[index].map((m)=>m.chartType);
9132
- const type = chartTypes.every((ct)=>'column' === ct) && reshapeMeasures[index].length > 1 && reshapeMeasures[index].some((m)=>'primaryYAxis' === m.encoding) && reshapeMeasures[index].some((m)=>'secondaryYAxis' === m.encoding) ? 'columnParallel' : options.chartType;
9133
- applyChartType(result, type, datasetReshapeInfo);
9327
+ const { datasetReshapeInfo } = advancedVSeed;
9328
+ applyChartType(result, options.chartType, datasetReshapeInfo);
9134
9329
  return result;
9135
9330
  };
9136
9331
  const datasetDualAxis = (options)=>(spec, context)=>{
@@ -9192,7 +9387,7 @@
9192
9387
  ...spec
9193
9388
  };
9194
9389
  const { advancedVSeed, vseed } = context;
9195
- const { measures = [], datasetReshapeInfo, chartType, dimensions = [], encoding } = advancedVSeed;
9390
+ const { measures = [], datasetReshapeInfo, chartType, dimensions = [], encoding, reshapeMeasures = [] } = advancedVSeed;
9196
9391
  const baseConfig = advancedVSeed.config[chartType];
9197
9392
  const { tooltip = {
9198
9393
  enable: true
@@ -9211,7 +9406,7 @@
9211
9406
  title: {
9212
9407
  visible: true
9213
9408
  },
9214
- content: createDimensionContent(dimensions, measures, options.foldInfo, unfoldInfo)
9409
+ content: createDimensionContent(encoding.tooltip || [], measures, options.foldInfo, unfoldInfo, reshapeMeasures.length > 1)
9215
9410
  }
9216
9411
  };
9217
9412
  return result;
@@ -9248,6 +9443,19 @@
9248
9443
  if ('area' === spec.type) return pipe(spec, context);
9249
9444
  return spec;
9250
9445
  };
9446
+ const adjustXField = (spec)=>{
9447
+ const result = {
9448
+ ...spec
9449
+ };
9450
+ const chartTypes = (spec.series ?? []).map((s)=>s.type);
9451
+ if (chartTypes.length > 1 && chartTypes.filter((type)=>'bar' === type).length > 1) result.series.forEach((s)=>{
9452
+ if ('bar' === s.type && !Array.isArray(s.xField)) s.xField = [
9453
+ s.xField,
9454
+ DimAxisType
9455
+ ];
9456
+ });
9457
+ return result;
9458
+ };
9251
9459
  const yLinearPrimary = (spec, context)=>{
9252
9460
  const result = {
9253
9461
  ...spec
@@ -9370,21 +9578,21 @@
9370
9578
  };
9371
9579
  const isObjectLike = (value)=>"object" == typeof value && null !== value;
9372
9580
  const common_isObjectLike = isObjectLike;
9373
- const isPlainObject = function(value) {
9581
+ const isPlainObject_isPlainObject = function(value) {
9374
9582
  if (!common_isObjectLike(value) || !isType(value, "Object")) return !1;
9375
9583
  if (null === Object.getPrototypeOf(value)) return !0;
9376
9584
  let proto = value;
9377
9585
  for(; null !== Object.getPrototypeOf(proto);)proto = Object.getPrototypeOf(proto);
9378
9586
  return Object.getPrototypeOf(value) === proto;
9379
9587
  };
9380
- const common_isPlainObject = isPlainObject;
9588
+ const isPlainObject = isPlainObject_isPlainObject;
9381
9589
  const isString = (value, fuzzy = !1)=>{
9382
9590
  const type = typeof value;
9383
9591
  return fuzzy ? "string" === type : "string" === type || isType(value, "String");
9384
9592
  };
9385
9593
  const common_isString = isString;
9386
9594
  function pickWithout(obj, keys) {
9387
- if (!obj || !common_isPlainObject(obj)) return obj;
9595
+ if (!obj || !isPlainObject(obj)) return obj;
9388
9596
  const result = {};
9389
9597
  return Object.keys(obj).forEach((k)=>{
9390
9598
  const v = obj[k];
@@ -9429,6 +9637,7 @@
9429
9637
  lineStyleFilter(colorLineStyleFill(lineStyle_lineStyle)),
9430
9638
  areaStyleFilter(colorAreaStyleFill(areaStyle_areaStyle))
9431
9639
  ]),
9640
+ adjustXField,
9432
9641
  xBand,
9433
9642
  yLinearPrimary,
9434
9643
  yLinearSecondary,
@@ -9465,6 +9674,7 @@
9465
9674
  lineStyleFilter(colorLineStyleFill(lineStyle_lineStyle)),
9466
9675
  areaStyleFilter(colorAreaStyleFill(areaStyle_areaStyle))
9467
9676
  ]),
9677
+ adjustXField,
9468
9678
  xBand,
9469
9679
  yLinearPrimary,
9470
9680
  pivotAxisStyle(yLinearSecondary),
@@ -9552,7 +9762,8 @@
9552
9762
  encoding.tooltip = chunk_QJLMYOTX_i([
9553
9763
  ...encoding.tooltip || [],
9554
9764
  ...label,
9555
- ...tooltip
9765
+ ...tooltip,
9766
+ ...color
9556
9767
  ]);
9557
9768
  };
9558
9769
  const pieAdvancedPipeline = [
@@ -9679,6 +9890,7 @@
9679
9890
  background_backgroundColor,
9680
9891
  datasetXY,
9681
9892
  progressive,
9893
+ brush_brush,
9682
9894
  colorPieStyleFill(pieStyle),
9683
9895
  colorAdapter(discreteLegend, colorLegend),
9684
9896
  labelPie,
@@ -9700,6 +9912,7 @@
9700
9912
  background_backgroundColor,
9701
9913
  datasetXY,
9702
9914
  progressive,
9915
+ brush_brush,
9703
9916
  colorPieStyleFill(pieStyle),
9704
9917
  labelPie,
9705
9918
  tooltip_tooltip,
@@ -9776,6 +9989,7 @@
9776
9989
  background_backgroundColor,
9777
9990
  datasetXY,
9778
9991
  progressive,
9992
+ brush_brush,
9779
9993
  labelPie,
9780
9994
  colorPieStyleFill(pieStyle),
9781
9995
  colorAdapter(discreteLegend, colorLegend),
@@ -9798,6 +10012,7 @@
9798
10012
  background_backgroundColor,
9799
10013
  datasetXY,
9800
10014
  progressive,
10015
+ brush_brush,
9801
10016
  labelPie,
9802
10017
  colorPieStyleFill(pieStyle),
9803
10018
  tooltip_tooltip,
@@ -9882,7 +10097,8 @@
9882
10097
  encoding.tooltip = chunk_QJLMYOTX_i([
9883
10098
  ...encoding.tooltip || [],
9884
10099
  ...label,
9885
- ...tooltip
10100
+ ...tooltip,
10101
+ ...color
9886
10102
  ]);
9887
10103
  };
9888
10104
  const roseAdvancedPipeline = [
@@ -10231,7 +10447,8 @@
10231
10447
  encoding.tooltip = chunk_QJLMYOTX_i([
10232
10448
  ...encoding.tooltip || [],
10233
10449
  ...label,
10234
- ...tooltip
10450
+ ...tooltip,
10451
+ ...color
10235
10452
  ]);
10236
10453
  };
10237
10454
  const radarAdvancedPipeline = [
@@ -10446,7 +10663,8 @@
10446
10663
  encoding.tooltip = chunk_QJLMYOTX_i([
10447
10664
  ...encoding.tooltip || [],
10448
10665
  ...label,
10449
- ...tooltip
10666
+ ...tooltip,
10667
+ ...color
10450
10668
  ]);
10451
10669
  };
10452
10670
  const funnelAdvancedPipeline = [
@@ -10571,11 +10789,12 @@
10571
10789
  const pivotFunnel = [
10572
10790
  initPivot,
10573
10791
  pivotGridStyle,
10574
- pivotIndicatorsAsRow,
10792
+ pivotIndicatorsAsCol,
10575
10793
  pivotHideIndicatorName,
10576
10794
  datasetPivot,
10577
10795
  pivotIndicators_pivotIndicators([
10578
10796
  initFunnel,
10797
+ addRegionPadding,
10579
10798
  background_backgroundColor,
10580
10799
  datasetXY,
10581
10800
  colorAdapter(color_color, linearColor),
@@ -10654,15 +10873,11 @@
10654
10873
  };
10655
10874
  const heatmap_generateDefaultMeasureEncoding = (measures, encoding)=>{
10656
10875
  const colorDims = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding || !item.encoding).map((item)=>item.id));
10657
- if (colorDims.length > 0) encoding.color = [
10658
- colorDims[0]
10659
- ];
10876
+ if (colorDims.length > 0) encoding.color = colorDims;
10660
10877
  };
10661
10878
  const heatmap_generateMeasureEncoding = (measures, encoding)=>{
10662
10879
  const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
10663
- if (color.length > 0) encoding.color = [
10664
- color[0]
10665
- ];
10880
+ if (color.length > 0) encoding.color = color;
10666
10881
  const label = chunk_QJLMYOTX_i(measures.filter((item)=>'label' === item.encoding).map((item)=>item.id));
10667
10882
  encoding.label = chunk_QJLMYOTX_i([
10668
10883
  ...encoding.label || [],
@@ -10675,6 +10890,32 @@
10675
10890
  ...tooltip
10676
10891
  ]);
10677
10892
  };
10893
+ const heatmapConfig = (advancedVSeed, context)=>{
10894
+ const { vseed } = context;
10895
+ const { chartType } = vseed;
10896
+ const result = {
10897
+ ...advancedVSeed
10898
+ };
10899
+ const pickedConfig = chunk_2T7K3PFL_i(vseed, [
10900
+ 'backgroundColor',
10901
+ 'color',
10902
+ 'label',
10903
+ 'legend',
10904
+ 'tooltip',
10905
+ 'xAxis',
10906
+ 'yAxis',
10907
+ 'brush',
10908
+ 'dimensionLinkage'
10909
+ ]);
10910
+ const config = replaceNullToUndefined(pickedConfig);
10911
+ result.config = {
10912
+ ...result.config || {},
10913
+ [chartType]: {
10914
+ ...config
10915
+ }
10916
+ };
10917
+ return result;
10918
+ };
10678
10919
  const heatmapAdvancedPipeline = [
10679
10920
  initAdvancedVSeed_initAdvancedVSeed,
10680
10921
  default_defaultMeasures_defaultMeasures,
@@ -10739,37 +10980,32 @@
10739
10980
  };
10740
10981
  return result;
10741
10982
  };
10742
- const colorCellStyleFill = (stylePipe)=>(spec, context)=>{
10743
- const result = stylePipe(spec, context);
10744
- const { advancedVSeed, vseed } = context;
10745
- const { datasetReshapeInfo } = advancedVSeed;
10746
- const { unfoldInfo } = datasetReshapeInfo[0];
10747
- if (isLinearColor(advancedVSeed, vseed)) {
10748
- if (result?.cell?.style) result.cell.style.fill = {
10749
- field: unfoldInfo.encodingColor,
10750
- scale: 'color'
10751
- };
10752
- }
10753
- return result;
10754
- };
10755
10983
  const markStyle_cellStyle_cellStyle = (spec, context)=>{
10756
- const result = {
10757
- ...spec,
10758
- cell: {
10759
- style: {}
10760
- }
10761
- };
10762
10984
  const { advancedVSeed, vseed } = context;
10763
10985
  const { chartType } = vseed;
10764
10986
  const cell = advancedVSeed.config?.[chartType]?.cell;
10987
+ const { datasetReshapeInfo } = advancedVSeed;
10988
+ const { unfoldInfo } = datasetReshapeInfo[0];
10765
10989
  return {
10766
- ...result,
10990
+ ...spec,
10767
10991
  cell: {
10768
10992
  style: {
10769
10993
  visible: (datum)=>datum?.[DATUM_HIDE_KEY] !== true,
10770
10994
  shape: 'rect',
10771
10995
  stroke: cell?.stroke,
10772
- lineWidth: cell?.lineWidth ?? 1
10996
+ lineWidth: cell?.lineWidth ?? 1,
10997
+ fill: {
10998
+ field: isLinearColor(advancedVSeed, vseed) ? unfoldInfo.encodingColor : unfoldInfo.encodingColorId,
10999
+ scale: 'color'
11000
+ }
11001
+ },
11002
+ state: {
11003
+ hover: {
11004
+ shadowColor: cell?.hoverShadowColor,
11005
+ shadowBlur: 5,
11006
+ shadowOffsetX: 0,
11007
+ shadowOffsetY: 0
11008
+ }
10773
11009
  }
10774
11010
  }
10775
11011
  };
@@ -10865,6 +11101,21 @@
10865
11101
  ...meaContent
10866
11102
  ];
10867
11103
  };
11104
+ const heatmapColorDomain = (spec, context)=>{
11105
+ const { advancedVSeed } = context;
11106
+ const indicators = spec.indicators;
11107
+ if (!indicators || !indicators.length || indicators.every((ind)=>ind.chartSpec.color?.type !== 'linear')) return spec;
11108
+ const { datasetReshapeInfo } = advancedVSeed;
11109
+ const max = Math.max(...datasetReshapeInfo.map((d)=>d.foldInfo.statistics.colorMax));
11110
+ const min = Math.min(...datasetReshapeInfo.map((d)=>d.foldInfo.statistics.colorMin));
11111
+ indicators.forEach((ind)=>{
11112
+ if (ind.chartSpec.color?.type === 'linear') ind.chartSpec.color.domain = [
11113
+ min,
11114
+ max
11115
+ ];
11116
+ });
11117
+ return spec;
11118
+ };
10868
11119
  const initHeatmap = (spec, context)=>{
10869
11120
  const result = {
10870
11121
  ...spec
@@ -10894,8 +11145,9 @@
10894
11145
  colorAdapter(color_color, linearColor),
10895
11146
  label_label,
10896
11147
  heatmapBandAxis,
11148
+ brush_brush,
10897
11149
  colorAdapter(discreteLegend, heatmapColorLegend),
10898
- colorCellStyleFill(markStyle_cellStyle_cellStyle),
11150
+ markStyle_cellStyle_cellStyle,
10899
11151
  tooltipHeatmap,
10900
11152
  annotationPoint_annotationPoint,
10901
11153
  annotationVerticalLine_annotationVerticalLine,
@@ -10908,19 +11160,21 @@
10908
11160
  pivotIndicatorsAsRow,
10909
11161
  datasetPivot,
10910
11162
  pivotIndicators_pivotIndicators([
10911
- pivotAxisStyle(initHeatmap),
11163
+ initHeatmap,
10912
11164
  background_backgroundColor,
10913
11165
  datasetXY,
10914
11166
  colorAdapter(color_color, linearColor),
10915
11167
  label_label,
10916
- heatmapBandAxis,
11168
+ pivotAxisStyle(heatmapBandAxis),
11169
+ brush_brush,
10917
11170
  tooltipHeatmap,
10918
- colorCellStyleFill(markStyle_cellStyle_cellStyle),
11171
+ markStyle_cellStyle_cellStyle,
10919
11172
  annotationPoint_annotationPoint,
10920
11173
  annotationVerticalLine_annotationVerticalLine,
10921
11174
  annotationHorizontalLine_annotationHorizontalLine,
10922
11175
  annotationArea_annotationArea
10923
11176
  ]),
11177
+ heatmapColorDomain,
10924
11178
  pivotRowDimensions,
10925
11179
  pivotColumnDimensions,
10926
11180
  pivotTitle,
@@ -11030,7 +11284,8 @@
11030
11284
  encoding.tooltip = chunk_QJLMYOTX_i([
11031
11285
  ...encoding.tooltip || [],
11032
11286
  ...label,
11033
- ...tooltip
11287
+ ...tooltip,
11288
+ ...color
11034
11289
  ]);
11035
11290
  };
11036
11291
  function toNumber(a) {
@@ -11500,7 +11755,7 @@
11500
11755
  defaultContent
11501
11756
  ];
11502
11757
  };
11503
- const tooltipBoxplot_createDimensionContent = (dimensions, measures, unfoldInfo, medianAlias)=>{
11758
+ const tooltipBoxplot_createDimensionContent = (dimensions, measures, unfoldInfo, medianAlias, hasMultiMeasureGroup)=>{
11504
11759
  const { encodingColor } = unfoldInfo;
11505
11760
  return [
11506
11761
  {
@@ -11510,7 +11765,13 @@
11510
11765
  key: dimensions.some((d)=>'color' === d.encoding) ? (v)=>{
11511
11766
  const datum = v;
11512
11767
  const key = datum && datum[encodingColor] || '';
11513
- return `${unfoldInfo.colorIdMap[key].alias ?? key}(${medianAlias})`;
11768
+ const colorKey = `${unfoldInfo.colorIdMap[key].alias ?? key}(${medianAlias})`;
11769
+ if (hasMultiMeasureGroup) {
11770
+ const id = datum[MeasureId];
11771
+ const measure = findMeasureById(measures, id);
11772
+ return measure ? `${colorKey}-${measure.alias ?? id}` : colorKey;
11773
+ }
11774
+ return colorKey;
11514
11775
  } : (v)=>{
11515
11776
  const datum = v;
11516
11777
  return `${datum[MeasureName] ?? datum[MeasureId]}(${medianAlias})`;
@@ -11744,7 +12005,7 @@
11744
12005
  const length = objValue.length;
11745
12006
  for(; ++index < length;)newValue[index] = objValue[index];
11746
12007
  }
11747
- } else common_isPlainObject(srcValue) ? (newValue = null != objValue ? objValue : {}, "function" != typeof objValue && "object" == typeof objValue || (newValue = {})) : isCommon = !1;
12008
+ } else isPlainObject(srcValue) ? (newValue = null != objValue ? objValue : {}, "function" != typeof objValue && "object" == typeof objValue || (newValue = {})) : isCommon = !1;
11748
12009
  isCommon && baseMerge(newValue, srcValue, shallowArray, skipTargetArray), assignMergeValue(target, key, newValue);
11749
12010
  }
11750
12011
  function assignMergeValue(target, key, value) {
@@ -11778,6 +12039,7 @@
11778
12039
  'binCount',
11779
12040
  'binStep',
11780
12041
  'binValueType',
12042
+ 'brush',
11781
12043
  'dimensionLinkage'
11782
12044
  ]);
11783
12045
  let config = replaceNullToUndefined(pickedConfig);
@@ -11902,7 +12164,8 @@
11902
12164
  encoding.tooltip = chunk_QJLMYOTX_i([
11903
12165
  ...encoding.tooltip || [],
11904
12166
  ...label,
11905
- ...tooltip
12167
+ ...tooltip,
12168
+ ...color
11906
12169
  ]);
11907
12170
  };
11908
12171
  const subBin = (data, options)=>{
@@ -12113,7 +12376,8 @@
12113
12376
  } else if (encoding.x0?.length && encoding.x1?.length && encoding.y?.length) {
12114
12377
  const res = dataReshapeByEncoding(dataset, T(dimensions, (item)=>item.id), measures.filter((item)=>encoding.y?.includes(item.id)).slice(0, 1), encoding, {
12115
12378
  colorItemAsId: false,
12116
- colorMeasureId
12379
+ colorMeasureId,
12380
+ omitIds: []
12117
12381
  });
12118
12382
  res.dataset.forEach((datum)=>{
12119
12383
  datum[BinStartMeasureId] = datum[encoding.x0[0]];
@@ -12216,7 +12480,8 @@
12216
12480
  } else if (encoding.x0?.length && encoding.x1?.length && encoding.y?.length) {
12217
12481
  const res = dataReshapeByEncoding(dataset, T(dimensions, (item)=>item.id), subMeasures.filter((item)=>encoding.y?.includes(item.id)).slice(0, 1), encoding, {
12218
12482
  colorItemAsId: false,
12219
- colorMeasureId
12483
+ colorMeasureId,
12484
+ omitIds: []
12220
12485
  });
12221
12486
  res.dataset.forEach((datum)=>{
12222
12487
  datum[BinStartMeasureId] = datum[encoding.x0[0]];
@@ -12858,6 +13123,7 @@
12858
13123
  histogramXLinear,
12859
13124
  yLinear,
12860
13125
  label_label,
13126
+ brush_brush,
12861
13127
  tooltipHistogram,
12862
13128
  colorAdapter(discreteLegend, colorLegend),
12863
13129
  histogramVerticalCrosshairRect,
@@ -12881,6 +13147,7 @@
12881
13147
  progressive,
12882
13148
  histogramXLinear,
12883
13149
  pivotAxisStyle(yLinear),
13150
+ brush_brush,
12884
13151
  label_label,
12885
13152
  tooltipHistogram,
12886
13153
  colorBarStyleFill(barStyle_barStyle),
@@ -12993,6 +13260,14 @@
12993
13260
  ...getDefaultLabel(),
12994
13261
  labelStroke: '#fff'
12995
13262
  });
13263
+ const getFunnelDarkLabel = ()=>({
13264
+ ...getDefaultLabel(),
13265
+ labelColor: '#fff'
13266
+ });
13267
+ const getFunnelLightLabel = ()=>({
13268
+ ...getDefaultLabel(),
13269
+ labelColor: '#fff'
13270
+ });
12996
13271
  const getDefaultLegend = ()=>({
12997
13272
  enable: true,
12998
13273
  border: true,
@@ -13026,6 +13301,24 @@
13026
13301
  handlerBorderColor: '#fff',
13027
13302
  railBackgroundColor: '#f1f3f4'
13028
13303
  });
13304
+ const getLightBrushConfig = ()=>({
13305
+ enable: false,
13306
+ inBrushStyle: {
13307
+ opacity: 1
13308
+ },
13309
+ outOfBrushStyle: {
13310
+ opacity: 0.2
13311
+ }
13312
+ });
13313
+ const getDarkBrushConfig = ()=>({
13314
+ enable: false,
13315
+ inBrushStyle: {
13316
+ opacity: 1
13317
+ },
13318
+ outOfBrushStyle: {
13319
+ opacity: 0.25
13320
+ }
13321
+ });
13029
13322
  const getDefaultTableConfig = ()=>({
13030
13323
  bodyFontSize: 12,
13031
13324
  bodyBackgroundColor: 'transparent',
@@ -13121,7 +13414,6 @@
13121
13414
  },
13122
13415
  title: {
13123
13416
  visible: false,
13124
- titleText: '',
13125
13417
  titleColor: '#606773',
13126
13418
  titleFontSize: 12,
13127
13419
  titleFontWeight: 400
@@ -13167,7 +13459,6 @@
13167
13459
  },
13168
13460
  title: {
13169
13461
  visible: false,
13170
- titleText: '',
13171
13462
  titleColor: '#606773',
13172
13463
  titleFontSize: 12,
13173
13464
  titleFontWeight: 400
@@ -13205,7 +13496,6 @@
13205
13496
  },
13206
13497
  title: {
13207
13498
  visible: false,
13208
- titleText: '',
13209
13499
  titleColor: '#BBBDC3',
13210
13500
  titleFontSize: 12,
13211
13501
  titleFontWeight: 400
@@ -13251,7 +13541,6 @@
13251
13541
  },
13252
13542
  title: {
13253
13543
  visible: false,
13254
- titleText: '',
13255
13544
  titleColor: '#BBBDC3',
13256
13545
  titleFontSize: 12,
13257
13546
  titleFontWeight: 400
@@ -13380,10 +13669,12 @@
13380
13669
  textColor: '#888C93'
13381
13670
  });
13382
13671
  const getLightHeatmapCellTheme = ()=>({
13383
- stroke: '#fff'
13672
+ stroke: '#fff',
13673
+ hoverShadowColor: '#404349'
13384
13674
  });
13385
13675
  const getDarkHeatmapCellTheme = ()=>({
13386
- stroke: '#404349'
13676
+ stroke: '#404349',
13677
+ hoverShadowColor: '#404349'
13387
13678
  });
13388
13679
  const getDefaultRegressionLine = ()=>({
13389
13680
  lineWidth: 2,
@@ -13499,7 +13790,8 @@
13499
13790
  color: getLightColor(),
13500
13791
  label: getLightLabel(),
13501
13792
  legend: getLightLegend(),
13502
- tooltip: getLightTooltip()
13793
+ tooltip: getLightTooltip(),
13794
+ brush: getLightBrushConfig()
13503
13795
  };
13504
13796
  const tableConfig = getLightTableConfig();
13505
13797
  return {
@@ -13709,6 +14001,7 @@
13709
14001
  },
13710
14002
  funnel: {
13711
14003
  ...baseConfig,
14004
+ label: getFunnelLightLabel(),
13712
14005
  transform: getLightFunnelTransformTheme(),
13713
14006
  pivotGrid: getLightPivotChartGridConfig()
13714
14007
  },
@@ -13769,7 +14062,8 @@
13769
14062
  color: getDarkColor(),
13770
14063
  label: getDarkLabel(),
13771
14064
  legend: getDarkLegend(),
13772
- tooltip: getDarkTooltip()
14065
+ tooltip: getDarkTooltip(),
14066
+ brush: getDarkBrushConfig()
13773
14067
  };
13774
14068
  const tableConfig = getDarkTableConfig();
13775
14069
  return {
@@ -13973,6 +14267,7 @@
13973
14267
  },
13974
14268
  funnel: {
13975
14269
  ...baseConfig,
14270
+ label: getFunnelDarkLabel(),
13976
14271
  transform: getDarkFunnelTransformTheme(),
13977
14272
  pivotGrid: getDarkPivotChartGridConfig()
13978
14273
  },
@@ -18197,6 +18492,23 @@
18197
18492
  showTooltip: schemas_boolean().nullish(),
18198
18493
  showLabel: schemas_boolean().nullish()
18199
18494
  });
18495
+ const zBrushConfig = schemas_object({
18496
+ enable: schemas_boolean().optional().default(false),
18497
+ inBrushStyle: schemas_object({
18498
+ opacity: schemas_number().optional(),
18499
+ stroke: schemas_string().optional(),
18500
+ lineWidth: schemas_number().optional()
18501
+ }).optional(),
18502
+ outOfBrushStyle: schemas_object({
18503
+ opacity: schemas_number().optional(),
18504
+ stroke: schemas_string().optional(),
18505
+ lineWidth: schemas_number().optional()
18506
+ }).optional()
18507
+ });
18508
+ const zBrush = schemas_object({
18509
+ enable: schemas_boolean().optional().default(false),
18510
+ removeOnClick: schemas_boolean().optional().default(true)
18511
+ });
18200
18512
  const zLineConfig = schemas_object({
18201
18513
  backgroundColor: zBackgroundColor.nullish(),
18202
18514
  label: zLabel.nullish(),
@@ -18208,7 +18520,8 @@
18208
18520
  crosshairLine: zCrosshairLine.nullish(),
18209
18521
  pivotGrid: zPivotChartGridConfig.nullish(),
18210
18522
  annotation: zAnnotationConfig.nullish(),
18211
- dimensionLinkage: zDimensionLinkage.nullish()
18523
+ dimensionLinkage: zDimensionLinkage.nullish(),
18524
+ brush: zBrushConfig.nullish()
18212
18525
  });
18213
18526
  const zStackCornerRadius = schemas_number().or(schemas_array(schemas_number())).default([
18214
18527
  3,
@@ -18265,7 +18578,8 @@
18265
18578
  barGapInGroup: zBarGapInGroup.nullish(),
18266
18579
  pivotGrid: zPivotChartGridConfig.nullish(),
18267
18580
  annotation: zAnnotationConfig.nullish(),
18268
- dimensionLinkage: zDimensionLinkage.nullish()
18581
+ dimensionLinkage: zDimensionLinkage.nullish(),
18582
+ brush: zBrushConfig.nullish()
18269
18583
  });
18270
18584
  const zColumnConfig = zColumnParallelConfig.extend({
18271
18585
  regressionLine: zRegressionLine.nullish()
@@ -18283,7 +18597,8 @@
18283
18597
  stackCornerRadius: zStackCornerRadius.nullish(),
18284
18598
  pivotGrid: zPivotChartGridConfig.nullish(),
18285
18599
  annotation: zAnnotationConfig.nullish(),
18286
- dimensionLinkage: zDimensionLinkage.nullish()
18600
+ dimensionLinkage: zDimensionLinkage.nullish(),
18601
+ brush: zBrushConfig.nullish()
18287
18602
  });
18288
18603
  const zBarParallelConfig = zBarConfig;
18289
18604
  const zBarPercentConfig = zBarConfig;
@@ -18298,7 +18613,8 @@
18298
18613
  crosshairLine: zCrosshairLine.nullish(),
18299
18614
  pivotGrid: zPivotChartGridConfig.nullish(),
18300
18615
  annotation: zAnnotationConfig.nullish(),
18301
- dimensionLinkage: zDimensionLinkage.nullish()
18616
+ dimensionLinkage: zDimensionLinkage.nullish(),
18617
+ brush: zBrushConfig.nullish()
18302
18618
  });
18303
18619
  const zAreaPercentConfig = zAreaConfig;
18304
18620
  const zScatterConfig = schemas_object({
@@ -18315,7 +18631,8 @@
18315
18631
  pivotGrid: zPivotChartGridConfig.nullish(),
18316
18632
  annotation: zAnnotationConfig.nullish(),
18317
18633
  regressionLine: zRegressionLine.nullish(),
18318
- dimensionLinkage: zDimensionLinkage.nullish()
18634
+ dimensionLinkage: zDimensionLinkage.nullish(),
18635
+ brush: zBrushConfig.nullish()
18319
18636
  });
18320
18637
  const zDualAxisConfig = schemas_object({
18321
18638
  backgroundColor: zBackgroundColor.nullish(),
@@ -18346,7 +18663,8 @@
18346
18663
  tooltip: zTooltip.nullish(),
18347
18664
  legend: zLegend.nullish(),
18348
18665
  pivotGrid: zPivotChartGridConfig.nullish(),
18349
- cornerRadius: schemas_number().nullish()
18666
+ cornerRadius: schemas_number().nullish(),
18667
+ brush: zBrushConfig.nullish()
18350
18668
  });
18351
18669
  const zDonutConfig = zPieConfig;
18352
18670
  const zRadarConfig = zPieConfig;
@@ -18375,7 +18693,8 @@
18375
18693
  const zHeatmapCell = schemas_object({
18376
18694
  stroke: schemas_string().nullish(),
18377
18695
  lineWidth: schemas_number().nullish(),
18378
- cornerRadius: schemas_number().nullish()
18696
+ cornerRadius: schemas_number().nullish(),
18697
+ hoverShadowColor: schemas_string().nullish()
18379
18698
  });
18380
18699
  const zHeatmapConfig = schemas_object({
18381
18700
  backgroundColor: zBackgroundColor.nullish(),
@@ -18386,7 +18705,8 @@
18386
18705
  pivotGrid: zPivotChartGridConfig.nullish(),
18387
18706
  cell: zHeatmapCell.nullish(),
18388
18707
  xAxis: zXBandAxis.nullish(),
18389
- yAxis: zYBandAxis.nullish()
18708
+ yAxis: zYBandAxis.nullish(),
18709
+ brush: zBrushConfig.nullish()
18390
18710
  });
18391
18711
  const zPivotTableConfig = zTableConfig;
18392
18712
  const zWhiskersConfig = schemas_number().or(schemas_array(schemas_number())).default(1.5);
@@ -18459,7 +18779,8 @@
18459
18779
  binStep: schemas_number().positive().nullish(),
18460
18780
  binValueType: literal('count').or(literal('percentage')).nullish(),
18461
18781
  regressionLine: zRegressionLine.nullish(),
18462
- dimensionLinkage: zDimensionLinkage.nullish()
18782
+ dimensionLinkage: zDimensionLinkage.nullish(),
18783
+ brush: zBrushConfig.nullish()
18463
18784
  });
18464
18785
  const zConfig = schemas_object({
18465
18786
  table: zTableConfig.nullish(),
@@ -18707,6 +19028,7 @@
18707
19028
  label: zLabel.nullish(),
18708
19029
  legend: zLegend.nullish(),
18709
19030
  tooltip: zTooltip.nullish(),
19031
+ brush: zBrush.nullish(),
18710
19032
  xAxis: zXBandAxis.nullish(),
18711
19033
  yAxis: zYLinearAxis.nullish(),
18712
19034
  crosshairLine: zCrosshairLine.nullish(),
@@ -18733,6 +19055,7 @@
18733
19055
  label: zLabel.nullish(),
18734
19056
  legend: zLegend.nullish(),
18735
19057
  tooltip: zTooltip.nullish(),
19058
+ brush: zBrush.nullish(),
18736
19059
  xAxis: zXBandAxis.nullish(),
18737
19060
  yAxis: zYLinearAxis.nullish(),
18738
19061
  sort: zSort.nullish(),
@@ -18761,6 +19084,7 @@
18761
19084
  label: zLabel.nullish(),
18762
19085
  legend: zLegend.nullish(),
18763
19086
  tooltip: zTooltip.nullish(),
19087
+ brush: zBrush.nullish(),
18764
19088
  xAxis: zXBandAxis.nullish(),
18765
19089
  yAxis: zYLinearAxis.nullish(),
18766
19090
  crosshairRect: zCrosshairRect.nullish(),
@@ -18787,6 +19111,7 @@
18787
19111
  label: zLabel.nullish(),
18788
19112
  legend: zLegend.nullish(),
18789
19113
  tooltip: zTooltip.nullish(),
19114
+ brush: zBrush.nullish(),
18790
19115
  xAxis: zXBandAxis.nullish(),
18791
19116
  yAxis: zYLinearAxis.nullish(),
18792
19117
  crosshairRect: zCrosshairRect.nullish(),
@@ -18812,6 +19137,7 @@
18812
19137
  label: zLabel.nullish(),
18813
19138
  legend: zLegend.nullish(),
18814
19139
  tooltip: zTooltip.nullish(),
19140
+ brush: zBrush.nullish(),
18815
19141
  xAxis: zXLinearAxis.nullish(),
18816
19142
  yAxis: zYBandAxis.nullish(),
18817
19143
  crosshairRect: zCrosshairRect.nullish(),
@@ -18837,6 +19163,7 @@
18837
19163
  label: zLabel.nullish(),
18838
19164
  legend: zLegend.nullish(),
18839
19165
  tooltip: zTooltip.nullish(),
19166
+ brush: zBrush.nullish(),
18840
19167
  xAxis: zXLinearAxis.nullish(),
18841
19168
  yAxis: zYBandAxis.nullish(),
18842
19169
  crosshairRect: zCrosshairRect.nullish(),
@@ -18863,6 +19190,7 @@
18863
19190
  label: zLabel.nullish(),
18864
19191
  legend: zLegend.nullish(),
18865
19192
  tooltip: zTooltip.nullish(),
19193
+ brush: zBrush.nullish(),
18866
19194
  xAxis: zXLinearAxis.nullish(),
18867
19195
  yAxis: zYBandAxis.nullish(),
18868
19196
  crosshairRect: zCrosshairRect.nullish(),
@@ -18888,6 +19216,7 @@
18888
19216
  label: zLabel.nullish(),
18889
19217
  legend: zLegend.nullish(),
18890
19218
  tooltip: zTooltip.nullish(),
19219
+ brush: zBrush.nullish(),
18891
19220
  xAxis: zXBandAxis.nullish(),
18892
19221
  yAxis: zYLinearAxis.nullish(),
18893
19222
  crosshairLine: zCrosshairLine.nullish(),
@@ -18913,6 +19242,7 @@
18913
19242
  label: zLabel.nullish(),
18914
19243
  legend: zLegend.nullish(),
18915
19244
  tooltip: zTooltip.nullish(),
19245
+ brush: zBrush.nullish(),
18916
19246
  xAxis: zXBandAxis.nullish(),
18917
19247
  yAxis: zYLinearAxis.nullish(),
18918
19248
  crosshairLine: zCrosshairLine.nullish(),
@@ -18940,6 +19270,7 @@
18940
19270
  label: zLabel.nullish(),
18941
19271
  legend: zLegend.nullish(),
18942
19272
  tooltip: zTooltip.nullish(),
19273
+ brush: zBrush.nullish(),
18943
19274
  xAxis: zXLinearAxis.nullish(),
18944
19275
  yAxis: zYLinearAxis.nullish(),
18945
19276
  crosshairLine: zCrosshairLine.nullish(),
@@ -18970,6 +19301,7 @@
18970
19301
  label: zLabel.nullish(),
18971
19302
  legend: zLegend.nullish(),
18972
19303
  tooltip: zTooltip.nullish(),
19304
+ brush: zBrush.nullish(),
18973
19305
  crosshairRect: zCrosshairRect.nullish(),
18974
19306
  sort: zSort.nullish(),
18975
19307
  sortLegend: zSortLegend.nullish(),
@@ -18998,6 +19330,7 @@
18998
19330
  label: zLabel.nullish(),
18999
19331
  legend: zLegend.nullish(),
19000
19332
  tooltip: zTooltip.nullish(),
19333
+ brush: zBrush.nullish(),
19001
19334
  xAxis: zXLinearAxis.nullish(),
19002
19335
  yAxis: zYLinearAxis.nullish(),
19003
19336
  crosshairRect: zCrosshairRect.nullish(),
@@ -19026,6 +19359,7 @@
19026
19359
  label: zLabel.nullish(),
19027
19360
  legend: zLegend.nullish(),
19028
19361
  tooltip: zTooltip.nullish(),
19362
+ brush: zBrush.nullish(),
19029
19363
  theme: zTheme.nullish(),
19030
19364
  locale: zLocale.nullish()
19031
19365
  });
@@ -19040,6 +19374,7 @@
19040
19374
  label: zLabel.nullish(),
19041
19375
  legend: zLegend.nullish(),
19042
19376
  tooltip: zTooltip.nullish(),
19377
+ brush: zBrush.nullish(),
19043
19378
  theme: zTheme.nullish(),
19044
19379
  locale: zLocale.nullish()
19045
19380
  });
@@ -19054,6 +19389,7 @@
19054
19389
  label: zPieLabel.nullish(),
19055
19390
  legend: zLegend.nullish(),
19056
19391
  tooltip: zTooltip.nullish(),
19392
+ brush: zBrush.nullish(),
19057
19393
  theme: zTheme.nullish(),
19058
19394
  locale: zLocale.nullish()
19059
19395
  });
@@ -19068,6 +19404,7 @@
19068
19404
  label: zPieLabel.nullish(),
19069
19405
  legend: zLegend.nullish(),
19070
19406
  tooltip: zTooltip.nullish(),
19407
+ brush: zBrush.nullish(),
19071
19408
  theme: zTheme.nullish(),
19072
19409
  locale: zLocale.nullish()
19073
19410
  });
@@ -19082,6 +19419,7 @@
19082
19419
  label: zLabel.nullish(),
19083
19420
  legend: zLegend.nullish(),
19084
19421
  tooltip: zTooltip.nullish(),
19422
+ brush: zBrush.nullish(),
19085
19423
  theme: zTheme.nullish(),
19086
19424
  locale: zLocale.nullish()
19087
19425
  });
@@ -19096,6 +19434,7 @@
19096
19434
  label: zLabel.nullish(),
19097
19435
  legend: zColorLegend.nullish(),
19098
19436
  tooltip: zTooltip.nullish(),
19437
+ brush: zBrush.nullish(),
19099
19438
  theme: zTheme.nullish(),
19100
19439
  locale: zLocale.nullish()
19101
19440
  });
@@ -19109,6 +19448,7 @@
19109
19448
  label: zLabel.nullish(),
19110
19449
  legend: zColorLegend.nullish(),
19111
19450
  tooltip: zTooltip.nullish(),
19451
+ brush: zBrush.nullish(),
19112
19452
  theme: zTheme.nullish(),
19113
19453
  locale: zLocale.nullish()
19114
19454
  });
@@ -19123,6 +19463,7 @@
19123
19463
  label: zLabel.nullish(),
19124
19464
  legend: zLegend.nullish(),
19125
19465
  tooltip: zTooltip.nullish(),
19466
+ brush: zBrush.nullish(),
19126
19467
  xAxis: zXBandAxis.nullish(),
19127
19468
  yAxis: zYLinearAxis.nullish(),
19128
19469
  sort: zSort.nullish(),