@visactor/vseed 0.0.36 → 0.0.37
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.
- package/dist/builder/builder/builder.d.ts +8924 -8912
- package/dist/index.cjs +1103 -869
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1071 -855
- package/dist/index.js.map +1 -1
- package/dist/pipeline/advanced/table/pipes/config/index.d.ts +2 -0
- package/dist/pipeline/advanced/table/pipes/config/pivotTableConfig.d.ts +2 -0
- package/dist/pipeline/advanced/table/pipes/config/tableConfig.d.ts +2 -0
- package/dist/pipeline/advanced/table/pipes/index.d.ts +1 -0
- package/dist/pipeline/spec/chart/pipes/series/index.d.ts +1 -1
- package/dist/pipeline/spec/chart/pipes/series/series.d.ts +1 -0
- package/dist/pipeline/spec/table/pipes/columns/dimensionsToColumns.d.ts +2 -0
- package/dist/pipeline/spec/table/pipes/columns/index.d.ts +1 -0
- package/dist/pipeline/spec/table/pipes/columns/measuresToColumns.d.ts +0 -1
- package/dist/pipeline/spec/table/pipes/indicators/index.d.ts +1 -0
- package/dist/pipeline/spec/table/pipes/indicators/pivotDataConfig.d.ts +2 -0
- package/dist/pipeline/utils/dimensions/index.d.ts +1 -0
- package/dist/pipeline/utils/dimensions/typeGuard.d.ts +4 -0
- package/dist/pipeline/utils/measures/index.d.ts +1 -0
- package/dist/pipeline/utils/measures/typeGuard.d.ts +4 -0
- package/dist/types/advancedVSeed.d.ts +3843 -3839
- package/dist/types/chartType/area/zArea.d.ts +569 -569
- package/dist/types/chartType/areaPercent/zAreaPercent.d.ts +569 -569
- package/dist/types/chartType/areaRange/zAreaRange.d.ts +550 -550
- package/dist/types/chartType/bar/bar.d.ts +0 -1183
- package/dist/types/chartType/bar/index.d.ts +2 -1
- package/dist/types/chartType/bar/zBar.d.ts +1183 -0
- package/dist/types/chartType/barParallel/barParallel.d.ts +0 -1183
- package/dist/types/chartType/barParallel/index.d.ts +2 -1
- package/dist/types/chartType/barParallel/zBarParallel.d.ts +1183 -0
- package/dist/types/chartType/barPercent/barPercent.d.ts +0 -1183
- package/dist/types/chartType/barPercent/index.d.ts +2 -1
- package/dist/types/chartType/barPercent/zBarPercent.d.ts +1183 -0
- package/dist/types/chartType/column/column.d.ts +0 -1183
- package/dist/types/chartType/column/index.d.ts +2 -1
- package/dist/types/chartType/column/zColumn.d.ts +1183 -0
- package/dist/types/chartType/columnParallel/columnParallel.d.ts +0 -1183
- package/dist/types/chartType/columnParallel/index.d.ts +2 -1
- package/dist/types/chartType/columnParallel/zColumnParallel.d.ts +1183 -0
- package/dist/types/chartType/columnPercent/columnPercent.d.ts +0 -1183
- package/dist/types/chartType/columnPercent/index.d.ts +2 -1
- package/dist/types/chartType/columnPercent/zColumnPercent.d.ts +1183 -0
- package/dist/types/chartType/donut/donut.d.ts +0 -119
- package/dist/types/chartType/donut/index.d.ts +2 -1
- package/dist/types/chartType/donut/zDonut.d.ts +119 -0
- package/dist/types/chartType/dualAxis/zDualAxis.d.ts +747 -747
- package/dist/types/chartType/funnel/funnel.d.ts +0 -89
- package/dist/types/chartType/funnel/index.d.ts +2 -1
- package/dist/types/chartType/funnel/zFunnel.d.ts +89 -0
- package/dist/types/chartType/heatmap/heatmap.d.ts +0 -89
- package/dist/types/chartType/heatmap/index.d.ts +2 -1
- package/dist/types/chartType/heatmap/zHeatmap.d.ts +89 -0
- package/dist/types/chartType/line/index.d.ts +2 -1
- package/dist/types/chartType/line/line.d.ts +0 -1365
- package/dist/types/chartType/line/zLine.d.ts +1365 -0
- package/dist/types/chartType/pie/index.d.ts +2 -1
- package/dist/types/chartType/pie/pie.d.ts +0 -119
- package/dist/types/chartType/pie/zPie.d.ts +119 -0
- package/dist/types/chartType/pivotTable/index.d.ts +2 -1
- package/dist/types/chartType/pivotTable/pivotTable.d.ts +44 -60
- package/dist/types/chartType/pivotTable/zPivotTable.d.ts +68 -0
- package/dist/types/chartType/radar/index.d.ts +2 -1
- package/dist/types/chartType/radar/radar.d.ts +0 -119
- package/dist/types/chartType/radar/zRadar.d.ts +119 -0
- package/dist/types/chartType/rose/index.d.ts +2 -1
- package/dist/types/chartType/rose/rose.d.ts +0 -119
- package/dist/types/chartType/rose/zRose.d.ts +119 -0
- package/dist/types/chartType/roseParallel/index.d.ts +2 -1
- package/dist/types/chartType/roseParallel/roseParallel.d.ts +0 -119
- package/dist/types/chartType/roseParallel/zRoseParallel.d.ts +119 -0
- package/dist/types/chartType/scatter/index.d.ts +2 -1
- package/dist/types/chartType/scatter/scatter.d.ts +0 -1191
- package/dist/types/chartType/scatter/zScatter.d.ts +1191 -0
- package/dist/types/chartType/table/index.d.ts +2 -1
- package/dist/types/chartType/table/table.d.ts +45 -64
- package/dist/types/chartType/table/zTable.d.ts +68 -0
- package/dist/types/dataSelector/selector.d.ts +16 -16
- package/dist/types/properties/analysis/analysis.d.ts +1 -1
- package/dist/types/properties/analysis/sort.d.ts +2 -4
- package/dist/types/properties/analysis/sortLegend.d.ts +2 -3
- package/dist/types/properties/annotation/annotation.d.ts +308 -308
- package/dist/types/properties/annotation/annotationArea.d.ts +20 -130
- package/dist/types/properties/annotation/annotationHorizontalLine.d.ts +31 -138
- package/dist/types/properties/annotation/annotationPoint.d.ts +20 -114
- package/dist/types/properties/annotation/annotationVerticalLine.d.ts +6 -113
- package/dist/types/properties/annotation/index.d.ts +8 -4
- package/dist/types/properties/annotation/zAnnotationArea.d.ts +110 -0
- package/dist/types/properties/annotation/zAnnotationHorizontalLine.d.ts +107 -0
- package/dist/types/properties/annotation/zAnnotationPoint.d.ts +94 -0
- package/dist/types/properties/annotation/zAnnotationVerticalLine.d.ts +107 -0
- package/dist/types/properties/config/axes/axis.d.ts +44 -44
- package/dist/types/properties/config/axes/bandAxis.d.ts +74 -74
- package/dist/types/properties/config/axes/linearAxis.d.ts +76 -76
- package/dist/types/properties/config/backgroundColor/backgroundColor.d.ts +1 -1
- package/dist/types/properties/config/color/color.d.ts +3 -3
- package/dist/types/properties/config/config.d.ts +3286 -3282
- package/dist/types/properties/config/crosshair/crosshair.d.ts +10 -10
- package/dist/types/properties/config/label/label.d.ts +1 -1
- package/dist/types/properties/config/legend/legend.d.ts +13 -13
- package/dist/types/properties/config/tooltip/tooltip.d.ts +1 -1
- package/dist/types/properties/datasetReshapeInfo/datasetReshapeInfo.d.ts +2 -2
- package/dist/types/properties/encoding/encoding.d.ts +8 -8
- package/dist/types/properties/markStyle/areaStyle.d.ts +20 -20
- package/dist/types/properties/markStyle/barStyle.d.ts +24 -24
- package/dist/types/properties/markStyle/lineStyle.d.ts +24 -24
- package/dist/types/properties/markStyle/markStyle.d.ts +194 -194
- package/dist/types/properties/markStyle/pointStyle.d.ts +35 -35
- package/dist/types/properties/theme/customTheme.d.ts +3334 -3330
- package/dist/types/vseed.d.ts +6781 -6755
- package/dist/umd/index.js +1113 -891
- package/dist/umd/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sources":["webpack://@visactor/vseed/./src/pipeline/utils/pipeline.ts","webpack://@visactor/vseed/./src/builder/builder/buildAdvanced.ts","webpack://@visactor/vseed/./src/builder/builder/buildSpec.ts","webpack://@visactor/vseed/./src/builder/builder/build.ts","webpack://@visactor/vseed/./src/i18n/i18n.ts","webpack://@visactor/vseed/./src/builder/builder/advanced/colorItems.ts","webpack://@visactor/vseed/./src/builder/builder/builder.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/init/initAdvancedVSeed.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/init/autoMeasures.ts","webpack://@visactor/vseed/./src/pipeline/utils/tree/traverse.ts","webpack://@visactor/vseed/./src/pipeline/utils/measures/find.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/init/autoDimensions.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/records/records.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/theme/theme.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipeline/table.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/init/table.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/columns/measuresToColumns.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/theme/bodyStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/theme/headerStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/theme/frameStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/theme/selectionStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipeline/table.ts","webpack://@visactor/vseed/./src/builder/register/chartType/table.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/init/autoPivotMeasures.ts","webpack://@visactor/vseed/./src/pipeline/utils/dimensions/find.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/init/autoPivotDimensions.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipeline/pivotTable.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/init/pivotTable.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/columns/pivotColumns.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/rows/pivotRows.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/indicators/pivotIndicators.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/theme/rowHeaderStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/theme/cornerHeaderStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipeline/pivotTable.ts","webpack://@visactor/vseed/./src/builder/register/chartType/pivotTable.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/init/initAdvancedVSeed.ts","webpack://@visactor/vseed/./src/pipeline/utils/measures/depth.ts","webpack://@visactor/vseed/./src/pipeline/utils/chatType.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/init/autoMeasures.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/init/autoDimensions.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/pivot/pivotAdapter.ts","webpack://@visactor/vseed/./src/dataReshape/constant.ts","webpack://@visactor/vseed/./src/dataReshape/foldMeasures.ts","webpack://@visactor/vseed/./src/dataReshape/unfoldDimensions.ts","webpack://@visactor/vseed/./src/dataReshape/unfoldZeroDimensions.ts","webpack://@visactor/vseed/./src/dataReshape/dataReshapeFor2D1M0Name.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeTo2D1M0Name.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo2D1M0Name.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/encodingXY.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/analysis/sort.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/config/config.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/markStyle/markStyle.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/annotation/annotation.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/line.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/line.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/color.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/backgroundColor/background.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/datasetXY.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/progressive.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/xBand.ts","webpack://@visactor/vseed/./src/pipeline/utils/constant.ts","webpack://@visactor/vseed/./src/pipeline/utils/format/createNumFormatter.ts","webpack://@visactor/vseed/./src/pipeline/utils/format/createFormatter.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/yLinear.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/label/label.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltip.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/crosshair/verticalCrosshairLine.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/legend/discreteLegend.ts","webpack://@visactor/vseed/./src/dataSelector/selector.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/pointStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/pointState.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/lineStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/utils.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/annotationPoint.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/annotationVerticalLine.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/annotationHorizontalLine.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/annotationArea.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/pivot.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/pivotChart/pivotGridStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/pivotChart/pivotIndicators.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/datasetPivot.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/pivotChart/pivotRowDimensions.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/pivotChart/pivotColumnDimensions.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/legend/pivotDiscreteLegend.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/pivotChart/pivotAdapter.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/line.ts","webpack://@visactor/vseed/./src/builder/register/chartType/line.ts","webpack://@visactor/vseed/./src/dataReshape/dataReshapeFor2D1M.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeTo2D1M.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo2D1M.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/column.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/column.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/stack/stackCornerRadius.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/stack/stack.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/crosshair/verticalCrosshairRect.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/barStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/annotationAreaBand.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/column.ts","webpack://@visactor/vseed/./src/builder/register/chartType/column.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/columnParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/columnParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/columnParallel.ts","webpack://@visactor/vseed/./src/builder/register/chartType/columnParallel.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/columnPercent.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/percent/percent.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/columnPercent.ts","webpack://@visactor/vseed/./src/builder/register/chartType/columnPercent.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/encodingYX.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/bar.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/bar.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/datasetYX.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/xLinear.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/yBand.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/crosshair/horizontalCrosshairRect.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/bar.ts","webpack://@visactor/vseed/./src/builder/register/chartType/bar.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/barParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/barParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/barParallel.ts","webpack://@visactor/vseed/./src/builder/register/chartType/barParallel.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/barPercent.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/barPercent.ts","webpack://@visactor/vseed/./src/builder/register/chartType/barPercent.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/area.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/area.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/areaStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/area.ts","webpack://@visactor/vseed/./src/builder/register/chartType/area.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/areaPercent.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/areaPercent.ts","webpack://@visactor/vseed/./src/builder/register/chartType/areaPercent.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/init/autoMeasuresBy2M1Group.ts","webpack://@visactor/vseed/./src/dataReshape/dataReshapeFor1D.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeTo1D.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo1D.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/encodingAreaRange.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/areaRange.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/series/series.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/areaRange.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipDisable.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipAreaRange.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/areaRange.ts","webpack://@visactor/vseed/./src/builder/register/chartType/areaRange.ts","webpack://@visactor/vseed/./src/dataReshape/dataReshapeFor1D2M.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeTo1D2M.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo1D2M.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/encodingYY.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/scatter.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/scatter.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/crosshair/horizontalCrosshairLine.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/scatter.ts","webpack://@visactor/vseed/./src/builder/register/chartType/scatter.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeTo2D2M.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo2D2M.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/encodingXYY.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/config/dualAxis.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/init/autoDualMeasures.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/dualAxis.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/initDualAxis.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dual/dualChartType.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/datasetDualAxis.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/label/labelDualAxis.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/yLinearPrimary.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/yLinearSecondary.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/dualAxis.ts","webpack://@visactor/vseed/./src/builder/register/chartType/dualAxis.ts","webpack://@visactor/vseed/./src/dataReshape/dataReshapeFor1D1M.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeTo1D1M.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo1D1M.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/encodingPie.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/pie.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/pie.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/pie.ts","webpack://@visactor/vseed/./src/builder/register/chartType/pie.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/donut.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/donut.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/donut.ts","webpack://@visactor/vseed/./src/builder/register/chartType/donut.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/encodingRose.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/rose.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/rose.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/radius.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/angle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/rose.ts","webpack://@visactor/vseed/./src/builder/register/chartType/rose.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/roseParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/roseParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/roseParallel.ts","webpack://@visactor/vseed/./src/builder/register/chartType/roseParallel.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/encodingAR.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/radar.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/radar.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/radarAngle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/radarRadius.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/radar.ts","webpack://@visactor/vseed/./src/builder/register/chartType/radar.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/encodingFunnel.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/funnel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/funnel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/linearColor.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/legend/colorLegend.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/funnel.ts","webpack://@visactor/vseed/./src/builder/register/chartType/funnel.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/encodingMatrix.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/heatmap.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/label/labelColorInversion.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/heatmap.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/heatmap.ts","webpack://@visactor/vseed/./src/builder/register/chartType/heatmap.ts","webpack://@visactor/vseed/./src/theme/light.ts","webpack://@visactor/vseed/./src/theme/dark.ts","webpack://@visactor/vseed/./src/builder/register/theme/custom.ts","webpack://@visactor/vseed/./src/builder/register/theme/light.ts","webpack://@visactor/vseed/./src/builder/register/theme/dark.ts","webpack://@visactor/vseed/./src/builder/register/all.ts","webpack://@visactor/vseed/./src/builder/register/custom.ts","webpack://@visactor/vseed/./src/types/properties/chartType/chartType.ts","webpack://@visactor/vseed/./src/types/properties/chartType/dualChartType.ts","webpack://@visactor/vseed/./src/types/properties/dataset/dataset.ts","webpack://@visactor/vseed/./src/types/properties/dimensions/dimensions.ts","webpack://@visactor/vseed/./src/types/properties/measures/format/numFormat.ts","webpack://@visactor/vseed/./src/types/properties/measures/zMeasures.ts","webpack://@visactor/vseed/./src/types/properties/measures/zDualMeasures.ts","webpack://@visactor/vseed/./src/types/properties/datasetReshapeInfo/datasetReshapeInfo.ts","webpack://@visactor/vseed/./src/types/properties/encoding/encoding.ts","webpack://@visactor/vseed/./src/types/properties/config/axes/bandAxis.ts","webpack://@visactor/vseed/./src/types/properties/config/axes/linearAxis.ts","webpack://@visactor/vseed/./src/types/properties/config/crosshair/crosshair.ts","webpack://@visactor/vseed/./src/types/properties/config/stackCornerRadius/stackCornerRadius.ts","webpack://@visactor/vseed/./src/types/properties/config/backgroundColor/backgroundColor.ts","webpack://@visactor/vseed/./src/types/properties/config/color/color.ts","webpack://@visactor/vseed/./src/types/properties/config/label/label.ts","webpack://@visactor/vseed/./src/types/properties/config/legend/legend.ts","webpack://@visactor/vseed/./src/types/properties/config/tooltip/tooltip.ts","webpack://@visactor/vseed/./src/types/properties/config/config.ts","webpack://@visactor/vseed/./src/types/properties/config/axes/axis.ts","webpack://@visactor/vseed/./src/types/properties/theme/customTheme.ts","webpack://@visactor/vseed/./src/types/properties/theme/theme.ts","webpack://@visactor/vseed/./src/types/dataSelector/selector.ts","webpack://@visactor/vseed/./src/types/properties/markStyle/barStyle.ts","webpack://@visactor/vseed/./src/types/properties/markStyle/pointStyle.ts","webpack://@visactor/vseed/./src/types/properties/markStyle/lineStyle.ts","webpack://@visactor/vseed/./src/types/properties/markStyle/areaStyle.ts","webpack://@visactor/vseed/./src/types/properties/markStyle/markStyle.ts","webpack://@visactor/vseed/./src/types/properties/annotation/annotationPoint.ts","webpack://@visactor/vseed/./src/types/properties/annotation/annotationVerticalLine.ts","webpack://@visactor/vseed/./src/types/properties/annotation/annotationHorizontalLine.ts","webpack://@visactor/vseed/./src/types/properties/annotation/annotationArea.ts","webpack://@visactor/vseed/./src/types/properties/annotation/annotation.ts","webpack://@visactor/vseed/./src/types/properties/analysis/sort.ts","webpack://@visactor/vseed/./src/types/properties/analysis/sortLegend.ts","webpack://@visactor/vseed/./src/types/properties/analysis/analysis.ts","webpack://@visactor/vseed/./src/types/i18n/i18n.ts","webpack://@visactor/vseed/./src/types/chartType/table/table.ts","webpack://@visactor/vseed/./src/types/chartType/pivotTable/pivotTable.ts","webpack://@visactor/vseed/./src/types/chartType/line/line.ts","webpack://@visactor/vseed/./src/types/chartType/column/column.ts","webpack://@visactor/vseed/./src/types/chartType/columnParallel/columnParallel.ts","webpack://@visactor/vseed/./src/types/chartType/columnPercent/columnPercent.ts","webpack://@visactor/vseed/./src/types/chartType/bar/bar.ts","webpack://@visactor/vseed/./src/types/chartType/barParallel/barParallel.ts","webpack://@visactor/vseed/./src/types/chartType/barPercent/barPercent.ts","webpack://@visactor/vseed/./src/types/chartType/area/zArea.ts","webpack://@visactor/vseed/./src/types/chartType/areaPercent/zAreaPercent.ts","webpack://@visactor/vseed/./src/types/chartType/areaRange/zAreaRange.ts","webpack://@visactor/vseed/./src/types/chartType/scatter/scatter.ts","webpack://@visactor/vseed/./src/types/chartType/dualAxis/zDualAxis.ts","webpack://@visactor/vseed/./src/types/chartType/rose/rose.ts","webpack://@visactor/vseed/./src/types/chartType/roseParallel/roseParallel.ts","webpack://@visactor/vseed/./src/types/chartType/pie/pie.ts","webpack://@visactor/vseed/./src/types/chartType/donut/donut.ts","webpack://@visactor/vseed/./src/types/chartType/radar/radar.ts","webpack://@visactor/vseed/./src/types/chartType/funnel/funnel.ts","webpack://@visactor/vseed/./src/types/chartType/heatmap/heatmap.ts","webpack://@visactor/vseed/./src/types/vseed.ts","webpack://@visactor/vseed/./src/types/advancedVSeed.ts"],"sourcesContent":["import type { ExecPipelineType, Pipe } from 'src/types'\n\n/**\n * 执行pipeline, 每个pipe负责构建结果的一部分, 构建完成后得到完整的目标结果\n * @param pipeline pipeline数组, 每个pipe负责构建结果的一部分\n * @param initialValue 初始值\n * @param context 上下文\n * @returns 执行后的结果\n */\nexport const execPipeline: ExecPipelineType = <T, U>(\n pipeline: Array<Pipe<T, U>>,\n context: U,\n initialValue: Partial<T> = {},\n): T => {\n const result = pipeline.reduce((prev, cur) => {\n return cur(prev, context)\n }, initialValue)\n return result as T\n}\n","import type { AdvancedPipelineContext, AdvancedVSeed } from 'src/types'\nimport { execPipeline } from '../../pipeline'\nimport { Builder } from './builder'\n\nexport const buildAdvanced = (builder: Builder): AdvancedVSeed | null => {\n const start = typeof performance !== 'undefined' ? performance.now() : Date.now()\n const { chartType } = builder.vseed\n if (!chartType) {\n throw new Error('chartType is nil in buildAdvanced')\n }\n\n const pipeline = Builder.getAdvancedPipeline(chartType)\n if (!pipeline) {\n throw new Error(`no advanced pipeline for chartType ${chartType}`)\n }\n\n const context: AdvancedPipelineContext = {\n vseed: builder.vseed,\n customTheme: Builder.getThemeMap(),\n }\n\n try {\n return execPipeline<AdvancedVSeed, AdvancedPipelineContext>(pipeline, context)\n } catch (e) {\n console.error(e)\n throw new Error(`buildAdvanced error, see error info in console`)\n } finally {\n const end = typeof performance !== 'undefined' ? performance.now() : Date.now()\n builder.performance['buildAdvanced'] = `${(end - start).toFixed(4)}ms`\n }\n}\n","import type { Spec } from 'src/types'\nimport { Builder } from './builder'\nimport type { AdvancedVSeed, SpecPipelineContext } from 'src/types'\nimport { execPipeline } from '../../pipeline'\n\nexport const buildSpec = (builder: Builder, advancedVSeed: AdvancedVSeed): Spec => {\n const start = typeof performance !== 'undefined' ? performance.now() : Date.now()\n\n const { chartType } = builder.vseed\n if (!chartType) {\n throw new Error('chartType is nil in buildSpec')\n }\n\n const pipeline = Builder.getSpecPipeline(chartType)\n if (!pipeline) {\n throw new Error(`no spec pipeline for chartType ${chartType}`)\n }\n\n const context: SpecPipelineContext = {\n vseed: builder.vseed,\n advancedVSeed,\n }\n try {\n return execPipeline<Spec, SpecPipelineContext>(pipeline, context)\n } catch (e) {\n console.error(e)\n throw new Error(`buildSpec error, see error info in console`)\n } finally {\n const end = typeof performance !== 'undefined' ? performance.now() : Date.now()\n builder.performance['buildSpec'] = `${(end - start).toFixed(4)}ms`\n }\n}\n","import type { Spec } from 'src/types'\nimport type { Builder } from './builder'\n\nexport const build = (builder: Builder): Spec => {\n // console.log('debug vseed', builder.vseed)\n const advancedVSeed = builder.buildAdvanced()\n builder.advancedVSeed = advancedVSeed\n // console.log('debug advancedVSeed', advancedVSeed)\n if (!advancedVSeed) {\n throw new Error('advancedVSeed is null')\n }\n const spec = builder.buildSpec(advancedVSeed)\n builder.spec = spec\n // console.log('debug spec', spec)\n return spec\n}\n","import { isNullish } from 'remeda'\nimport translateMap from './i18n.json'\nimport type { Locale, TranslateRecordType } from '../types'\n\nclass Intl {\n private static instance: Intl\n\n private translateMap: TranslateRecordType = translateMap as unknown as TranslateRecordType\n private locale: Locale = 'zh-CN'\n\n canTranslate = (value: string) => !!this.translateMap[value]\n\n /**\n * @example i18n`指标名称`\n */\n i18n = (segments: TemplateStringsArray, ...values: Array<number | string>) => {\n const text = segments.map((segment, index) => segment + (values[index] || '')).join('')\n\n const translatedText = this.translateMap?.[text]?.[this.locale]\n if (isNullish(translatedText)) {\n console.warn(`i18n ${this.locale} no translate: ${text}`)\n return text\n }\n return translatedText\n }\n\n setLocale = (locale: Locale): void => {\n this.locale = locale\n }\n\n getLocale: () => Locale = () => this.locale\n\n public static getInstance() {\n if (!Intl.instance) {\n Intl.instance = new Intl()\n }\n\n return Intl.instance\n }\n}\n\nconst intl = Intl.getInstance()\n\nconst i18n = intl.i18n\n\nexport { intl, i18n }\n","import { unique } from 'remeda'\nimport type { Builder } from '../builder'\n\nexport const getColorItems = (builder: Builder): string[] => {\n const advancedVSeed = builder.advancedVSeed\n if (!advancedVSeed) {\n return []\n }\n\n const { datasetReshapeInfo } = advancedVSeed\n const colorItems = unique(datasetReshapeInfo.flatMap((d) => d.unfoldInfo.colorItems))\n const colorIdMap = datasetReshapeInfo.reduce<Record<string, string>>((prev, cur) => {\n return { ...prev, ...cur.unfoldInfo.colorIdMap }\n }, {})\n\n return colorItems.map((d) => colorIdMap[d])\n}\n\nexport const getColorIdMap = (builder: Builder): Record<string, string> => {\n const advancedVSeed = builder.advancedVSeed\n if (!advancedVSeed) {\n return {}\n }\n\n const { datasetReshapeInfo } = advancedVSeed\n const colorIdMap = datasetReshapeInfo.reduce<Record<string, string>>((prev, cur) => {\n return { ...prev, ...cur.unfoldInfo.colorIdMap }\n }, {})\n\n return colorIdMap\n}\n","import type {\n AdvancedPipe,\n AdvancedPipeline,\n AdvancedVSeed,\n ChartType,\n CustomThemeConfig,\n Spec,\n SpecPipe,\n SpecPipeline,\n VSeed,\n VSeedBuilder,\n} from 'src/types'\nimport { buildAdvanced } from './buildAdvanced'\nimport { buildSpec } from './buildSpec'\nimport { build } from './build'\nimport { intl } from 'src/i18n'\nimport { getColorIdMap, getColorItems } from './advanced'\n\nexport class Builder implements VSeedBuilder {\n private _vseed: VSeed\n private _advancedVSeed: AdvancedVSeed | null = null\n private _spec: Spec | null = null\n private _performance: Record<string, string | number> = {}\n\n constructor(vseed: VSeed) {\n this._vseed = vseed\n this._vseed.locale = vseed.locale || intl.getLocale()\n }\n\n /**\n * @description 构建spec\n * @returns spec\n */\n build = <T extends Spec>(): T => build(this) as T\n\n /**\n * @description 构建spec\n * @param advanced 高级配置\n * @returns spec\n */\n buildSpec = (advanced: AdvancedVSeed): Spec => buildSpec(this, advanced)\n\n /**\n * @description 构建spec\n * @returns AdvancedVSeed | null\n */\n buildAdvanced = (): AdvancedVSeed | null => buildAdvanced(this)\n\n /**\n * @description 获取颜色项, 颜色项可以重复,\n * @returns 颜色项\n */\n getColorItems = () => getColorItems(this)\n\n /**\n * @description 获取颜色id映射\n * @returns 颜色id映射\n */\n getColorIdMap = () => getColorIdMap(this)\n\n /**\n * @description 获取vseed\n * @returns vseed\n */\n get vseed() {\n return this._vseed\n }\n\n /**\n * @description 设置vseed\n * @param value vseed\n */\n set vseed(value) {\n this._vseed = value\n }\n\n /**\n * @description 获取advancedVSeed\n * @returns advancedVSeed\n */\n get advancedVSeed() {\n return this._advancedVSeed\n }\n\n /**\n *\n * @description 设置advancedVSeed\n * @param value advancedVSeed\n */\n set advancedVSeed(value) {\n this._advancedVSeed = value\n }\n\n /**\n * @description 获取spec\n * @returns spec\n */\n get spec() {\n return this._spec\n }\n\n /**\n * @description 设置spec\n * @param value spec\n */\n set spec(value) {\n this._spec = value\n }\n\n /**\n * @description 获取performance, 统计了构建spec和advancedVSeed的时间\n * @returns performance\n */\n get performance() {\n return this._performance\n }\n\n /**\n * @description 设置performance\n * @param value performance\n */\n set performance(value) {\n this._performance = value\n }\n\n /**\n * @description 获取advancedPipeline\n * @param chartType 图表类型\n * @returns advancedPipeline\n */\n static getAdvancedPipeline = (chartType: ChartType) => {\n const customPipe = Builder._customAdvancedPipe[chartType] as AdvancedPipe\n const pipeline = Builder._advancedPipelineMap[chartType] as AdvancedPipeline\n if (customPipe) {\n pipeline.push(customPipe)\n }\n return pipeline\n }\n\n /**\n * @description 获取specPipeline\n * @param chartType 图表类型\n * @returns specPipeline\n */\n\n static getSpecPipeline = (chartType: ChartType) => {\n const customPipe = Builder._customSpecPipe[chartType] as SpecPipe\n const pipeline = Builder._specPipelineMap[chartType] as SpecPipeline\n if (customPipe) {\n pipeline.push(customPipe)\n }\n return pipeline\n }\n\n /**\n * @description 根据主题key获取主题配置\n * @param themeKey 主题key\n * @example Builder.getTheme('light'), 获取浅色主题\n * @returns 主题配置\n */\n static getTheme = (themeKey: string) => Builder._themeMap[themeKey]\n\n /**\n * @description 获取主题配置映射表\n * @example Builder.getThemeMap()\n * @returns 主题配置映射表\n */\n static getThemeMap = () => Builder._themeMap\n\n /**\n * @description 从vseed创建builder\n * @param vseed 完整的vseed DSL\n * @returns builder\n */\n static from = (vseed: VSeed) => new Builder(vseed)\n\n static _advancedPipelineMap: Partial<Record<ChartType, AdvancedPipeline>> = {}\n static _specPipelineMap: Partial<Record<ChartType, SpecPipeline>> = {}\n static _customAdvancedPipe: Partial<Record<ChartType, AdvancedPipe>> = {}\n static _customSpecPipe: Partial<Record<ChartType, SpecPipe>> = {}\n static _themeMap: Record<string, CustomThemeConfig> = {}\n}\n","import type { AdvancedPipe, AdvancedVSeed } from 'src/types'\n\nexport const initAdvancedVSeed: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType, locale } = vseed\n return {\n ...advancedVSeed,\n chartType,\n locale: locale || 'zh-CN',\n } as AdvancedVSeed\n}\n","import type { AdvancedPipe, Datum, MeasureTree } from 'src/types'\n\nexport const autoMeasures: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { measures, dataset } = vseed\n\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return result\n }\n\n if (measures) {\n result.measures = measures as MeasureTree\n return result\n }\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n result.measures = Object.keys(sample)\n .filter((key) => {\n return top100dataset.some((item) => typeof item[key] === 'number') && !['', null, undefined].includes(key)\n })\n .map((measure) => ({\n id: measure,\n alias: measure,\n }))\n\n return result\n}\n","/**\n * 支持泛型的非递归前序遍历\n * @param tree 根节点数组\n * @param callback 遍历时对每个节点执行的回调,返回 true 时停止遍历\n */\nexport const preorderTraverse = <T extends { id: string }, U extends { id: string; children?: (T | U)[] }>(\n tree: (T | U)[],\n callback: (node: T | U) => boolean,\n) => {\n if (!tree || tree.length === 0) return\n\n const stack: (T | U)[] = [...tree].reverse()\n\n while (stack.length > 0) {\n const node = stack.pop()!\n const stop = callback(node)\n if (stop === true) {\n return\n }\n if (!('children' in node)) {\n continue\n }\n const children = node.children\n if (children && children.length > 0) {\n for (let i = children.length - 1; i >= 0; i--) {\n const child = children[i]\n stack.push(child)\n }\n }\n }\n}\n","import type { Measure, MeasureGroup, MeasureTree } from 'src/types'\nimport { preorderTraverse } from '../tree'\n\nexport const findMeasureById = (measures: MeasureTree = [], id: string): Measure | undefined => {\n if (!measures) return undefined\n let result: Measure | undefined\n preorderTraverse<Measure, MeasureGroup>(measures, (node) => {\n if (!('children' in node)) {\n if (node.id === id) {\n result = node as Measure\n return true\n }\n }\n return false\n })\n return result\n}\n\nexport const findFirstMeasure = (measures: MeasureTree = []): Measure | undefined => {\n if (!measures) return undefined\n let result: Measure | undefined\n preorderTraverse<Measure, MeasureGroup>(measures, (node) => {\n if (!('children' in node)) {\n result = node as Measure\n return true\n }\n return false\n })\n return result\n}\n\nexport const findAllMeasures = (measures: MeasureTree = []): Measure[] => {\n if (!measures) return []\n const result: Measure[] = []\n preorderTraverse<Measure, MeasureGroup>(measures, (node) => {\n if (!('children' in node)) {\n result.push(node as Measure)\n }\n return false\n })\n return result\n}\n","import { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Datum } from 'src/types'\n\nexport const autoDimensions: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dimensions, dataset } = vseed\n\n const measures = findAllMeasures(advancedVSeed.measures)\n\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return result\n }\n\n if (dimensions) {\n result.dimensions = dimensions.map((dim) => ({\n location: 'dimension',\n ...dim,\n }))\n return result\n }\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n result.dimensions = Object.keys(sample)\n .filter(\n (key) =>\n top100dataset.some((item) => typeof item[key] === 'string') &&\n !['', null, undefined].includes(key) &&\n !measures.some((measure) => measure.id === key),\n )\n .map((dim) => ({\n id: dim,\n alias: dim,\n location: 'dimension',\n }))\n\n return result\n}\n","import type { AdvancedPipe } from 'src/types'\n\nexport const records: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { dataset } = vseed\n return {\n ...advancedVSeed,\n dataset,\n }\n}\n","import { clone, isObjectType, merge, mergeDeep } from 'remeda'\nimport type { AdvancedPipe, AdvancedVSeed } from 'src/types'\n\nexport const theme: AdvancedPipe = (advancedVSeed, context) => {\n const { customTheme, vseed } = context\n const { theme = 'light', chartType } = vseed\n const result = {\n ...advancedVSeed,\n } as AdvancedVSeed\n\n if (!customTheme || !customTheme[theme]) {\n return result\n }\n\n const chartConfigTheme = customTheme?.[theme].config?.[chartType]\n if (chartConfigTheme) {\n const chartConfig = result.config?.[chartType] || {}\n const mergedConfig = mergeDeep(chartConfigTheme, clone(chartConfig))\n\n // 数组项不会被Merge, 需要将1个主题配置, 合并到数组的每一项\n for (const _k in mergedConfig) {\n const key = _k as keyof typeof mergedConfig\n // 配置的第一层, 如果是数组, 则数组的每一项目和主题配置合并\n if (Array.isArray(mergedConfig[key])) {\n mergedConfig[key] = mergeArray(mergedConfig[key], chartConfigTheme[key])\n }\n }\n\n result.config = {\n [chartType]: mergedConfig,\n }\n }\n\n const chartCustomTheme = customTheme?.[theme]?.config?.[chartType]\n\n result.customTheme = {\n config: {\n [chartType]: chartCustomTheme,\n },\n }\n\n return result\n}\n\nconst mergeArray = <Destination extends Array<object>, Source extends object>(\n arr: Destination,\n themeItem: Source,\n): Destination => {\n if (!Array.isArray(arr)) {\n return arr\n }\n\n if (arr.some((d) => !isObjectType(d))) {\n return arr\n }\n\n return arr.map((item) => {\n return merge(themeItem, item)\n }) as Destination\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport { initAdvancedVSeed, autoDimensions, autoMeasures, records } from '../pipes'\nimport { theme } from '../../chart/pipes'\n\nexport const tableAdvancedPipeline: AdvancedPipeline = [initAdvancedVSeed, autoMeasures, autoDimensions, records, theme]\n","import type { ListTableConstructorOptions } from '@visactor/vtable'\nimport type { SpecPipe } from 'src/types'\n\nexport const initTable: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { dataset } = advancedVSeed\n\n return {\n ...spec,\n records: dataset,\n widthMode: 'standard',\n heightMode: 'autoHeight',\n autoWrapText: true,\n columnResizeMode: 'all',\n showHeader: true,\n tooltip: {\n isShowOverflowTextTooltip: true,\n },\n animationAppear: {\n duration: 300,\n delay: 250,\n type: 'one-by-one',\n direction: 'row',\n },\n hover: {\n highlightMode: 'row',\n },\n theme: {\n underlayBackgroundColor: 'transparent',\n },\n } as ListTableConstructorOptions\n}\n","import type { ColumnsDefine, ListTableConstructorOptions } from '@visactor/vtable'\nimport type { Dimension, DimensionGroup, Measure, MeasureGroup, MeasureTree, SpecPipe } from 'src/types'\n\nexport const measureTreeToColumns: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const measures = (advancedVSeed as unknown as { measures: MeasureTree }).measures\n const result = { ...spec } as ListTableConstructorOptions\n\n const eachNode = (node: Measure | MeasureGroup) => {\n if ('children' in node) {\n return {}\n }\n\n return {\n width: 'auto',\n }\n }\n const columns = treeTreeToColumns<Measure, MeasureGroup>(measures, eachNode)\n return {\n ...result,\n columns: [...(result.columns || []), ...columns] as ListTableConstructorOptions['columns'],\n }\n}\n\nexport const dimensionTreeToColumns: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const dimensions = (advancedVSeed as unknown as { dimensions: MeasureTree }).dimensions\n const result = { ...spec } as ListTableConstructorOptions\n const eachNode = (node: Measure | MeasureGroup) => {\n if ('children' in node) {\n return {}\n }\n\n return {\n width: 'auto',\n }\n }\n const columns = treeTreeToColumns<Dimension, DimensionGroup>(dimensions, eachNode)\n\n return {\n ...result,\n columns: [...(result.columns || []), ...columns] as ListTableConstructorOptions['columns'],\n }\n}\n\nconst treeTreeToColumns = <\n T extends { id: string; alias?: string },\n U extends { id: string; alias?: string; children?: (T | U)[] },\n>(\n tree: (T | U)[],\n callback?: (node: T | U) => object,\n): ColumnsDefine[] => {\n const result = tree.map((item) => {\n if ('children' in item && Array.isArray(item.children)) {\n const groupNode = item as unknown as U\n const field = groupNode.id\n const title = groupNode.alias ?? groupNode.id\n const props = callback?.(groupNode) || {}\n // group\n return {\n field,\n title,\n columns: treeTreeToColumns(item.children, callback),\n ...props,\n }\n } else {\n const field = item.id\n const title = item.alias ?? item.id\n const props = callback?.(item) || {}\n // leaf\n return {\n field,\n title,\n ...props,\n }\n }\n }) as unknown as ColumnsDefine[]\n\n return result || []\n}\n","import type { BaseTableConstructorOptions } from '@visactor/vtable/es/ts-types'\nimport type { SpecPipe, TableConfig } from 'src/types'\n\nexport const bodyStyle: SpecPipe = (spec, context) => {\n const result = { ...spec } as BaseTableConstructorOptions\n const { advancedVSeed } = context\n const { customTheme, chartType } = advancedVSeed\n const themeConfig = customTheme?.config?.[chartType] as TableConfig\n\n if (!result.theme || !themeConfig) return result\n\n // basic\n const borderColor = themeConfig.borderColor || 'rgb(224, 224, 224)'\n const backgroundColor = themeConfig.bodyBackgroundColor || '#fff'\n const fontColor = themeConfig.bodyFontColor || '#1B1F23'\n const fontSize = themeConfig.bodyFontSize || 12\n // Interaction\n const hoverCellBgColor = themeConfig.hoverBodyBackgroundColor || '#bedaff'\n const hoverInlineColor = themeConfig.hoverBodyInlineBackgroundColor || '#bedaff'\n\n result.theme.bodyStyle = {\n borderColor: borderColor,\n borderLineWidth: 1,\n padding: [8.6, 12, 8.6, 12],\n textAlign: 'right',\n hover: {\n cellBgColor: hoverCellBgColor,\n inlineRowBgColor: hoverInlineColor,\n inlineColumnBgColor: hoverInlineColor,\n },\n color: fontColor,\n fontSize: fontSize,\n fontStyle: 'normal',\n fontWeight: 'normal',\n fontVariant: 'normal',\n bgColor: backgroundColor,\n lineHeight: fontSize * 1.5,\n }\n\n return result\n}\n","import type { BaseTableConstructorOptions } from '@visactor/vtable/es/ts-types'\nimport type { SpecPipe, TableConfig } from 'src/types'\n\nexport const headerStyle: SpecPipe = (spec, context) => {\n const result = { ...spec } as BaseTableConstructorOptions\n const { advancedVSeed } = context\n const { customTheme, chartType } = advancedVSeed\n const themConfig = customTheme?.config?.[chartType] as TableConfig\n\n if (!result.theme || !themConfig) return result\n\n // basic\n const borderColor = themConfig.borderColor || 'rgb(224, 224, 224)'\n const backgroundColor = themConfig.headerBackgroundColor || '#EEF1F5'\n const fontColor = themConfig.headerFontColor || '#1B1F23'\n const fontSize = themConfig.headerFontSize || 12\n // Interaction\n const hoverCellBgColor = themConfig.hoverHeaderBackgroundColor || '#bedaff'\n const hoverInlineColor = themConfig.hoverHeaderInlineBackgroundColor || '#bedaff'\n\n result.theme.headerStyle = {\n borderColor: borderColor,\n borderLineWidth: 1,\n padding: [8, 12, 8, 12],\n textAlign: 'center',\n hover: {\n cellBgColor: hoverCellBgColor,\n inlineRowBgColor: hoverInlineColor,\n inlineColumnBgColor: hoverInlineColor,\n },\n frameStyle: {\n borderColor: [null, null, borderColor, null],\n borderLineWidth: 1,\n },\n fontSize: fontSize,\n fontVariant: 'normal',\n fontStyle: 'normal',\n fontWeight: 'bold',\n color: fontColor,\n bgColor: backgroundColor,\n lineHeight: fontSize * 1.5,\n }\n\n return result\n}\n","import type { BaseTableConstructorOptions } from '@visactor/vtable/es/ts-types'\nimport type { SpecPipe, TableConfig } from 'src/types'\n\nexport const frameStyle: SpecPipe = (spec, context) => {\n const result = { ...spec } as BaseTableConstructorOptions\n const { advancedVSeed } = context\n const { customTheme, chartType } = advancedVSeed\n const themConfig = customTheme?.config?.[chartType] as TableConfig\n\n if (!result.theme || !themConfig) return result\n\n const borderColor = themConfig.borderColor || 'rgb(224, 224, 224)'\n\n result.theme.frameStyle = {\n borderColor,\n borderLineWidth: 0,\n cornerRadius: 4,\n }\n\n return result\n}\n","import type { BaseTableConstructorOptions } from '@visactor/vtable/es/ts-types'\nimport type { SpecPipe, TableConfig } from 'src/types'\n\nexport const selectionStyle: SpecPipe = (spec, context) => {\n const result = { ...spec } as BaseTableConstructorOptions\n const { advancedVSeed } = context\n const { customTheme, chartType } = advancedVSeed\n const themConfig = customTheme?.config?.[chartType] as TableConfig\n\n if (!result.theme || !themConfig) return result\n\n const borderColor = themConfig.selectedBorderColor || 'rgb(224, 224, 224)'\n const backgroundColor = themConfig.selectedBackgroundColor || 'rgb(224, 224, 224, 0.5)'\n\n result.theme.selectionStyle = {\n cellBorderColor: borderColor,\n cellBorderLineWidth: 2,\n cellBgColor: backgroundColor,\n }\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport { initTable, dimensionTreeToColumns, measureTreeToColumns, bodyStyle, headerStyle, frameStyle, selectionStyle } from '../pipes'\n\nexport const tableSpecPipeline: SpecPipeline = [\n initTable,\n dimensionTreeToColumns,\n measureTreeToColumns,\n bodyStyle,\n headerStyle,\n frameStyle,\n selectionStyle,\n]\n","import { tableAdvancedPipeline, tableSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerTable = () => {\n Builder._advancedPipelineMap['table'] = tableAdvancedPipeline\n Builder._specPipelineMap['table'] = tableSpecPipeline\n}","import { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Datum, Measures } from 'src/types'\n\nexport const autoPivotMeasures: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const measures = findAllMeasures(vseed.measures as Measures)\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return result\n }\n\n if (vseed.measures) {\n result.measures = findAllMeasures(measures)\n return result\n }\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n result.measures = Object.keys(sample)\n .filter((key) => {\n return top100dataset.some((item) => typeof item[key] === 'number') && !['', null, undefined].includes(key)\n })\n .map((measure) => ({\n id: measure,\n alias: measure,\n }))\n\n return result\n}\n","import type { Dimension, DimensionGroup, DimensionTree } from 'src/types'\nimport { preorderTraverse } from '../tree'\n\nexport const findDimensionById = (dimensions: DimensionTree = [], id: string): Dimension | undefined => {\n if (!dimensions) return undefined\n let result: Dimension | undefined\n preorderTraverse<Dimension, DimensionGroup>(dimensions, (node) => {\n if (!('children' in node)) {\n if (node.id === id) {\n result = node as Dimension\n return true\n }\n }\n return false\n })\n return result\n}\n\nexport const findFirstDimension = (dimensions: DimensionTree = []): Dimension | undefined => {\n if (!dimensions) return undefined\n let result: Dimension | undefined\n preorderTraverse<Dimension, DimensionGroup>(dimensions, (node) => {\n if (!('children' in node)) {\n result = node as Dimension\n return true\n }\n return false\n })\n return result\n}\n\nexport const findAllDimensions = (dimensions: DimensionTree = []): Dimension[] => {\n if (!dimensions) return []\n const result: Dimension[] = []\n preorderTraverse<Dimension, DimensionGroup>(dimensions, (node) => {\n if (!('children' in node)) {\n result.push(node as Dimension)\n }\n return false\n })\n return result\n}\n","import { findAllDimensions, findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Datum, Dimensions, Measures } from 'src/types'\n\nexport const autoPivotDimensions: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dimensions, dataset } = vseed\n\n const measures = findAllMeasures(advancedVSeed.measures as Measures)\n\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return result\n }\n\n if (dimensions) {\n const newDimensions = findAllDimensions(dimensions) as Dimensions\n result.dimensions = newDimensions.map((item, index) => {\n if (item.location === 'rowDimension' || item.location === 'columnDimension') {\n return item\n }\n return {\n ...item,\n location: index % 2 === 0 ? 'columnDimension' : 'rowDimension',\n }\n }) as Dimensions\n\n return result\n }\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n let i = 0\n result.dimensions = Object.keys(sample)\n .filter(\n (key) =>\n top100dataset.some((item) => typeof item[key] === 'string') &&\n !['', null, undefined].includes(key) &&\n !measures.some((measure) => measure.id === key),\n )\n .map((dim) => ({\n id: dim,\n alias: dim,\n location: i++ % 2 === 0 ? 'columnDimension' : 'rowDimension',\n })) as Dimensions\n\n return result\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport { theme } from '../../chart/pipes'\nimport { autoPivotDimensions, autoPivotMeasures, initAdvancedVSeed, records } from '../pipes'\n\nexport const pivotTableAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoPivotMeasures,\n autoPivotDimensions,\n records,\n theme,\n]\n","import type { PivotTableConstructorOptions } from '@visactor/vtable'\nimport type { SpecPipe } from 'src/types'\n\nexport const initPivotTable: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { dataset } = advancedVSeed\n\n return {\n ...spec,\n records: dataset,\n widthMode: 'standard',\n heightMode: 'autoHeight',\n autoWrapText: true,\n columnResizeMode: 'all',\n columnResizeType: 'column',\n showColumnHeader: true,\n showRowHeader: true,\n select: {\n highlightMode: 'cell',\n headerSelectMode: 'inline',\n },\n hover: {\n highlightMode: 'cross',\n },\n tooltip: {\n isShowOverflowTextTooltip: true,\n },\n widthAdaptiveMode: 'all',\n animationAppear: {\n duration: 300,\n delay: 250,\n type: 'one-by-one',\n direction: 'row',\n },\n theme: {\n underlayBackgroundColor: 'transparent',\n },\n } as PivotTableConstructorOptions\n}\n","import type { PivotTableConstructorOptions } from '@visactor/vtable'\nimport type { Dimensions, SpecPipe } from 'src/types'\n\nexport const pivotColumns: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const dimensions = advancedVSeed.dimensions as Dimensions\n const columns = dimensions.filter((item) => item['location'] === 'columnDimension')\n\n return {\n ...spec,\n columns: columns.map((item) => {\n return {\n dimensionKey: item.id,\n title: item.alias || item.id,\n width: 'auto',\n }\n }),\n } as PivotTableConstructorOptions\n}\n","import type { Dimensions, SpecPipe } from 'src/types'\n\nexport const pivotRows: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const dimensions = advancedVSeed.dimensions as Dimensions\n const rows = dimensions.filter((item) => item['location'] === 'rowDimension')\n\n return {\n ...spec,\n rows: rows.map((item) => {\n return {\n dimensionKey: item.id,\n title: item.alias || item.id,\n width: 'auto',\n }\n }),\n }\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport { intl } from 'src/i18n'\nimport type { Measures, SpecPipe } from 'src/types'\n\nexport const pivotIndicators: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const measures = (advancedVSeed as unknown as { measures: Measures }).measures\n\n return {\n ...spec,\n indicatorsAsCol: true,\n indicatorTitle: intl.i18n`指标名称`,\n indicators: measures.map((item) => {\n return {\n cellType: 'text',\n indicatorKey: item.id,\n title: item.alias || item.id,\n width: 'auto',\n }\n }) as unknown as PivotChartConstructorOptions['indicators'],\n }\n}\n","import type { BaseTableConstructorOptions } from '@visactor/vtable/es/ts-types'\nimport type { SpecPipe, TableConfig } from 'src/types'\n\nexport const rowHeaderStyle: SpecPipe = (spec, context) => {\n const result = { ...spec } as BaseTableConstructorOptions\n const { advancedVSeed } = context\n const { customTheme, chartType } = advancedVSeed\n const themConfig = customTheme?.config?.[chartType] as TableConfig\n\n if (!result.theme || !themConfig) return result\n\n // basic\n const borderColor = themConfig.borderColor || 'rgb(224, 224, 224)'\n const backgroundColor = themConfig.headerBackgroundColor || '#EEF1F5'\n const fontColor = themConfig.headerFontColor || '#1B1F23'\n const fontSize = themConfig.headerFontSize || 12\n // Interaction\n const hoverCellBgColor = themConfig.hoverHeaderBackgroundColor || '#bedaff'\n const hoverInlineColor = themConfig.hoverHeaderInlineBackgroundColor || '#bedaff'\n\n result.theme.rowHeaderStyle = {\n borderColor: borderColor,\n borderLineWidth: 1,\n padding: [8.6, 12, 8.6, 12],\n textAlign: 'left',\n hover: {\n cellBgColor: hoverCellBgColor,\n inlineRowBgColor: hoverInlineColor,\n inlineColumnBgColor: hoverInlineColor,\n },\n frameStyle: {\n borderColor: [null, borderColor, null, null],\n borderLineWidth: 1,\n },\n fontSize: fontSize,\n fontVariant: 'normal',\n fontStyle: 'normal',\n fontWeight: 'bold',\n color: fontColor,\n bgColor: backgroundColor,\n lineHeight: fontSize * 1.5,\n }\n\n return result\n}\n","import type { BaseTableConstructorOptions } from '@visactor/vtable/es/ts-types'\nimport type { SpecPipe, TableConfig } from 'src/types'\n\nexport const cornerHeaderStyle: SpecPipe = (spec, context) => {\n const result = { ...spec } as BaseTableConstructorOptions\n const { advancedVSeed } = context\n const { customTheme, chartType } = advancedVSeed\n const themConfig = customTheme?.config?.[chartType] as TableConfig\n\n if (!result.theme || !themConfig) return result\n\n // basic\n const borderColor = themConfig.borderColor || 'rgb(224, 224, 224)'\n const backgroundColor = themConfig.headerBackgroundColor || '#EEF1F5'\n const fontColor = themConfig.headerFontColor || '#1B1F23'\n const fontSize = themConfig.headerFontSize || 12\n // Interaction\n const hoverInlineColor = themConfig.hoverHeaderInlineBackgroundColor\n const hoverCellColor = themConfig.hoverHeaderBackgroundColor\n\n result.theme.cornerHeaderStyle = {\n borderColor: [borderColor, borderColor],\n borderLineWidth: 1,\n padding: [8, 12, 8, 12],\n textAlign: 'left',\n hover: {\n cellBgColor: hoverCellColor,\n inlineRowBgColor: hoverInlineColor,\n inlineColumnBgColor: hoverInlineColor,\n },\n frameStyle: {\n borderColor: [null, borderColor, borderColor, null],\n borderLineWidth: 1,\n },\n fontSize: fontSize,\n fontVariant: 'normal',\n fontStyle: 'normal',\n fontWeight: 'bold',\n color: fontColor,\n bgColor: backgroundColor,\n lineHeight: fontSize * 1.5,\n }\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n initPivotTable,\n pivotColumns,\n pivotRows,\n pivotIndicators,\n bodyStyle,\n headerStyle,\n rowHeaderStyle,\n cornerHeaderStyle,\n frameStyle,\n selectionStyle,\n} from '../pipes'\n\nexport const pivotTableSpecPipeline: SpecPipeline = [\n initPivotTable,\n pivotColumns,\n pivotRows,\n pivotIndicators,\n bodyStyle,\n headerStyle,\n rowHeaderStyle,\n cornerHeaderStyle,\n frameStyle,\n selectionStyle,\n]\n","import { pivotTableAdvancedPipeline, pivotTableSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerPivotTable = () => {\n Builder._advancedPipelineMap['pivotTable'] = pivotTableAdvancedPipeline\n Builder._specPipelineMap['pivotTable'] = pivotTableSpecPipeline\n}","import type { AdvancedPipe, AdvancedVSeed } from 'src/types'\n\nexport const initAdvancedVSeed: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType, locale } = vseed\n return {\n ...advancedVSeed,\n chartType,\n locale: locale || 'zh-CN',\n } as AdvancedVSeed\n}\n","import type { Measure, MeasureGroup, MeasureTree } from \"src/types\"\nimport { preorderTraverse } from \"../tree/traverse\"\n\n/**\n * 获取measures的深度\n * @param measures\n * @param id\n * @returns\n */\nexport const measureDepth = (measures: MeasureTree = []): number => {\n if (!measures) return 0\n let depth = 1\n preorderTraverse<Measure, MeasureGroup>(measures, (node) => {\n if ('children' in node) {\n depth = Math.max(depth, 1 + measureDepth(node.children))\n }\n return false\n })\n return depth\n}\n","import type { Dimensions, DimensionGroup, DimensionTree, VSeed } from 'src/types'\nimport { measureDepth } from './measures'\n\nexport const isTable = (vseed: VSeed) => {\n return vseed.chartType === 'table'\n}\nexport const isPivotTable = (vseed: VSeed) => {\n return vseed.chartType === 'pivotTable'\n}\nexport const isVTable = (vseed: VSeed) => {\n return ['table', 'pivotTable'].includes(vseed.chartType)\n}\nexport const isVChart = (vseed: VSeed): boolean => {\n return !isVTable(vseed)\n}\nexport const isPivotChart = (vseed: VSeed) => {\n if (isVTable(vseed)) {\n return false\n }\n\n if (vseed.chartType === 'dualAxis') {\n if (vseed.measures) {\n const depth = measureDepth(vseed.measures)\n if (depth === 3) {\n return true\n }\n return false\n }\n\n if (vseed.dualMeasures && vseed.dualMeasures.length > 1) {\n return true\n }\n\n return false\n }\n\n const { measures = [], dimensions = [] } = vseed as {\n measures: DimensionTree\n dimensions: Dimensions\n }\n\n const hasRowOrColumnDimension =\n dimensions &&\n dimensions.some((dimension) => dimension.location === 'rowDimension' || dimension.location === 'columnDimension')\n\n const hasMeasureGroup = measures && measures.some((measure: DimensionGroup) => measure && measure.children)\n\n return hasRowOrColumnDimension || hasMeasureGroup\n}\n","import { isPivotChart } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Datum, DimensionGroup, MeasureGroup, MeasureTree } from 'src/types'\n\nexport const autoMeasures: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { measures, dataset } = vseed\n\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return result\n }\n\n if (isPivotChart(vseed)) {\n return autoMeasureGroup(advancedVSeed, context)\n }\n\n if (measures) {\n result.measures = measures as MeasureTree\n return result\n }\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n result.measures = Object.keys(sample)\n .filter((key) => {\n return top100dataset.some((item) => typeof item[key] === 'number') && !['', null, undefined].includes(key)\n })\n .map((measure) => ({\n id: measure,\n alias: measure,\n }))\n\n return result\n}\n\nconst autoMeasureGroup: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { measures } = vseed as {\n measures?: MeasureGroup[]\n }\n const hasMeasureGroup = measures?.some((measure) => measure.children)\n\n if (!measures) {\n return advancedVSeed\n }\n\n // 没有指标组, 则自动添加一个指标组\n if (!hasMeasureGroup) {\n const newMeasures = [\n {\n id: 'measureGroup',\n alias: 'measureGroup',\n children: measures,\n },\n ]\n return {\n ...advancedVSeed,\n measures: newMeasures,\n }\n }\n\n // 存在指标组, 则任意连续的独立指标成组\n let currentGroup: DimensionGroup = createEmptyMeasureGroup()\n const measureGroups: DimensionGroup[] = []\n for (const measure of measures) {\n if ('children' in measure) {\n // 当前指标组之前的所有独立指标成组\n if (currentGroup.children?.length) {\n currentGroup.alias = currentGroup.children.map((item) => item.alias).join('-')\n currentGroup.id = currentGroup.alias + currentGroup.children.map((item) => item.id).join('-')\n measureGroups.push(currentGroup)\n currentGroup = createEmptyMeasureGroup()\n }\n // 当前是指标组\n measureGroups.push(measure)\n } else {\n currentGroup.children?.push(measure)\n }\n }\n\n // 最后一组\n if (currentGroup.children?.length) {\n currentGroup.alias = currentGroup.children.map((item) => item.alias).join('-')\n currentGroup.id = currentGroup.alias + currentGroup.children.map((item) => item.id).join('-')\n measureGroups.push(currentGroup)\n currentGroup = createEmptyMeasureGroup()\n }\n\n advancedVSeed.measures = measureGroups\n return advancedVSeed\n}\n\nconst createEmptyMeasureGroup = () => {\n return {\n id: '',\n alias: '',\n children: [],\n }\n}\n","import { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Datum, DimensionTree } from 'src/types'\n\nexport const autoDimensions: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dimensions, dataset } = vseed\n\n const measures = findAllMeasures(advancedVSeed.measures as DimensionTree)\n\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return result\n }\n\n if (dimensions) {\n result.dimensions = dimensions.map((dim) => ({\n location: 'dimension',\n ...dim,\n }))\n return result\n }\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n result.dimensions = Object.keys(sample)\n .filter(\n (key) =>\n top100dataset.some((item) => typeof item[key] === 'string') &&\n !['', null, undefined].includes(key) &&\n !measures.some((measure) => measure.id === key),\n )\n .map((dim) => ({\n id: dim,\n alias: dim,\n location: 'dimension',\n }))\n\n return result\n}\n","import type { AdvancedPipe, AdvancedPipeline, AdvancedPipelineContext, AdvancedVSeed } from 'src/types'\nimport { execPipeline, isPivotChart } from 'src/pipeline/utils'\n\nexport const pivotAdapter = (pipeline: AdvancedPipeline, pivotPipeline: AdvancedPipeline): AdvancedPipe => {\n return (advancedVSeed, context) => {\n const { vseed } = context\n const usePivotChart = isPivotChart(vseed)\n\n if (usePivotChart) {\n return execPipeline<AdvancedVSeed, AdvancedPipelineContext>(pivotPipeline, context, advancedVSeed)\n }\n\n return execPipeline<AdvancedVSeed, AdvancedPipelineContext>(pipeline, context, advancedVSeed)\n }\n}\n","// Reshape Measures\nexport const FoldMeasureName = '__MeaName__'\nexport const FoldMeasureId = '__MeaId__'\nexport const FoldMeasureValue = '__MeaValue__'\n\nexport const FoldPrimaryMeasureValue = '__MeaPrimaryValue__'\nexport const FoldSecondaryMeasureValue = '__MeaSecondaryValue__'\n\n// Reshape Dimensions\nexport const UnfoldDimensionGroup = '__DimGroup__'\nexport const UnfoldDimensionGroupId = '__DimGroupID__'\n\nexport const Separator = '-'\n\nexport const ORIGINAL_DATA = '__OriginalData__'\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Dataset, FoldInfo, Dimension, Measures, DimensionTree } from 'src/types'\nimport { FoldMeasureId, FoldMeasureName, FoldMeasureValue, ORIGINAL_DATA } from './constant'\nimport { omit } from 'remeda'\n\n/**\n * 折叠指定的指标\n * @description 合并指定的指标为1个, 无论多少个, 都能转换为1个, 取名为fold, 意为折叠后混合在一起.\n */\nexport const foldMeasures = (\n dataset: Dataset,\n measures: Dimension[],\n measureId = FoldMeasureId,\n measureName = FoldMeasureName,\n measureValue = FoldMeasureValue,\n): {\n dataset: Dataset\n foldInfo: FoldInfo\n} => {\n const foldInfo: FoldInfo = {\n measureId,\n measureName,\n measureValue,\n foldMap: {},\n }\n const result: Dataset = new Array(dataset.length * measures.length) as Dataset\n let index = 0\n const ids = measures.map((d) => d.id)\n for (let i = 0; i < dataset.length; i++) {\n for (let j = 0; j < measures.length; j++) {\n const datum: Record<string, any> = omit({ ...dataset[i] }, ids)\n\n datum[ORIGINAL_DATA] = dataset[i]\n\n const measure = measures[j]\n const { id, alias } = measure\n\n datum[id] = dataset[i][id] as unknown\n datum[measureId] = id\n datum[measureName] = alias || id\n datum[measureValue] = dataset[i][id] as unknown\n\n foldInfo.foldMap[id] = alias\n result[index++] = datum\n }\n }\n\n return {\n dataset: result,\n foldInfo,\n }\n}\n\n/**\n * 折叠指定的指标组, 至多支持2层\n * @param dataset\n * @param measures\n * @param measureId\n * @param measureName\n * @param measureValue\n * @returns\n */\nexport const foldMeasureGroups = (\n dataset: Dataset,\n measures: Required<DimensionTree>,\n measureId = '__MeaId__',\n measureName = '__MeaName__',\n measureValue = '__MeaValue__',\n) => {\n const groups: Array<Measures> = []\n if (!measures) {\n return {\n dataset,\n }\n }\n\n // 没有分组, 直接折叠所有指标\n if (!measures.some((measure) => 'children' in measure)) {\n return foldMeasures(dataset, measures, measureId, measureName, measureValue)\n }\n\n measures.forEach((measure) => {\n if ('children' in measure && measure.children) {\n groups.push(measure.children)\n } else {\n groups.push([measure])\n }\n })\n\n // 一组返回一个dataset\n const datasetGroup = groups.map((measures) => {\n if (!measures) {\n return []\n }\n return foldMeasures(dataset, measures, measureId, measureName, measureValue)\n })\n\n return {\n datasetGroup,\n }\n}\n","import type { Dataset, Datum, Dimension, Measure } from 'src/types'\nimport type { UnfoldInfo } from 'src/types'\nimport { UnfoldDimensionGroup, Separator, UnfoldDimensionGroupId, FoldMeasureId } from './constant'\nimport { unique } from 'remeda'\n\n/**\n * TODO: 优化展开维度的性能\n * 展开指定的维度\n * @description 第一步: 根据指定的维度, 将多个维度展开为N个指标(取决于维值去重后的数量), 随后合并成一个维度.\n */\nexport const unfoldDimensions = (\n dataset: Dataset,\n dimensions: Dimension[],\n measures: Measure[],\n unfoldStartIndex: number = 0,\n unfoldGroupName: string = UnfoldDimensionGroup,\n unfoldGroupId: string = UnfoldDimensionGroupId,\n foldMeasureId: string = FoldMeasureId,\n dimensionsSeparator: string = Separator,\n): {\n dataset: Dataset\n unfoldInfo: UnfoldInfo\n} => {\n if (unfoldStartIndex < 0 || unfoldStartIndex >= dimensions.length) {\n throw new Error('unfoldStartIndex is out of range')\n }\n\n const dimensionsToBeUnfolded = dimensions.slice(unfoldStartIndex)\n const unfoldInfo: UnfoldInfo = {\n groupName: unfoldGroupName,\n groupId: unfoldGroupId,\n colorItems: [],\n colorIdMap: {},\n }\n\n // 指标为空或维度为空, 则不检测\n if (dimensions.length === 0 || measures.length === 0) {\n return {\n dataset,\n unfoldInfo: {\n groupName: unfoldGroupName,\n groupId: unfoldGroupId,\n colorItems: [],\n colorIdMap: {},\n },\n }\n }\n\n const colorItems = []\n const colorMap: Record<string, string> = {}\n for (let i = 0; i < dataset.length; i++) {\n const datum = dataset[i]\n const colorName = generateDimGroupName(dimensionsToBeUnfolded, datum, dimensionsSeparator)\n const colorId = datum[foldMeasureId]\n ? [colorName, datum[foldMeasureId] as string].join(dimensionsSeparator)\n : colorName\n datum[unfoldGroupName] = colorName\n datum[unfoldGroupId] = colorId\n colorItems.push(colorId)\n colorMap[colorId] = colorName\n }\n\n unfoldInfo.colorItems = unique(colorItems)\n unfoldInfo.colorIdMap = colorMap\n return {\n dataset,\n unfoldInfo,\n }\n}\n\n/**\n * 生成维度组合名称\n * @param dimensionsToBeGrouped 待分组的维度\n * @param datum 数据项\n * @param dimensionsSeparator 维度分隔符\n * @returns 维度组合名称\n */\nexport const generateDimGroupName = (dimensionsToBeGrouped: Dimension[], datum: Datum, dimensionsSeparator: string) => {\n return dimensionsToBeGrouped.map((dim) => String(datum[dim.id])).join(dimensionsSeparator)\n}\n","import type { Dataset, Measure } from 'src/types'\nimport type { UnfoldInfo } from 'src/types'\nimport { UnfoldDimensionGroup, UnfoldDimensionGroupId } from './constant'\nimport { unique } from 'remeda'\n\n/**\n * 展开0个维度的特殊情况, 折线图、面积图、雷达图只有指标没有维度的情况, 应该所有的指标应该作为一个维度\n * @description\n */\nexport const unfoldZeroDimensions = (\n dataset: Dataset,\n measures: Measure[],\n measureName: string,\n unfoldGroupName: string = UnfoldDimensionGroup,\n unfoldGroupId: string = UnfoldDimensionGroupId,\n): {\n dataset: Dataset\n unfoldInfo: UnfoldInfo\n} => {\n const unfoldInfo: UnfoldInfo = {\n groupName: unfoldGroupName,\n groupId: unfoldGroupId,\n colorItems: [],\n colorIdMap: {},\n }\n\n // 指标为空或维度为空, 则不检测\n if (measures.length === 0) {\n return {\n dataset,\n unfoldInfo: {\n groupName: unfoldGroupName,\n groupId: unfoldGroupId,\n colorItems: [],\n colorIdMap: {},\n },\n }\n }\n\n const colorItems = []\n const colorMap: Record<string, string> = {}\n for (let i = 0; i < dataset.length; i++) {\n const datum = dataset[i]\n const colorName = measureName\n const colorId = measureName\n datum[unfoldGroupName] = colorName\n datum[unfoldGroupId] = colorId\n colorItems.push(colorId)\n colorMap[colorId] = colorName\n }\n\n unfoldInfo.colorItems = unique(colorItems)\n unfoldInfo.colorIdMap = colorMap\n return {\n dataset,\n unfoldInfo,\n }\n}\n","import type { Dataset, Dimension, FoldInfo, Measure, UnfoldInfo } from 'src/types'\nimport { foldMeasures } from './foldMeasures'\nimport {\n UnfoldDimensionGroup,\n FoldMeasureId,\n FoldMeasureName,\n FoldMeasureValue,\n UnfoldDimensionGroupId,\n} from './constant'\nimport { unfoldDimensions } from './unfoldDimensions'\nimport { unfoldZeroDimensions } from './unfoldZeroDimensions'\nimport { i18n } from '../i18n'\n\nconst emptyReshapeResult: {\n dataset: Dataset\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n} = {\n dataset: [],\n foldInfo: {\n foldMap: {},\n measureId: '',\n measureName: '',\n measureValue: '',\n },\n unfoldInfo: {\n groupName: '',\n groupId: '',\n colorItems: [],\n colorIdMap: {},\n },\n}\n/**\n * 数据重塑为2个维度1个指标, 并且不根据指标名称展开出一个新维度\n * @param dataset\n * @param dimensions\n * @param measures\n * @returns\n */\nexport const dataReshapeFor2D1M0Name = (\n dataset: Dataset,\n dimensions: Dimension[],\n measures: Measure[],\n options?: {\n foldMeasureId?: string\n foldMeasureName?: string\n foldMeasureValue?: string\n unfoldDimensionGroup?: string\n unfoldDimensionGroupId?: string\n },\n): {\n dataset: Dataset\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n} => {\n const {\n foldMeasureId = FoldMeasureId,\n foldMeasureName = FoldMeasureName,\n foldMeasureValue = FoldMeasureValue,\n unfoldDimensionGroup = UnfoldDimensionGroup,\n unfoldDimensionGroupId = UnfoldDimensionGroupId,\n } = options || {}\n if (dimensions.length === 0 && measures.length === 0) {\n return emptyReshapeResult\n }\n\n // 合并所有指标为1个指标\n const { dataset: foldedDataset, foldInfo } = foldMeasures(\n dataset,\n measures,\n foldMeasureId,\n foldMeasureName,\n foldMeasureValue,\n )\n\n if (dimensions.length === 0) {\n const { dataset: finalDataset, unfoldInfo } = unfoldZeroDimensions(\n foldedDataset,\n [{ id: foldMeasureValue, alias: i18n`指标值` }],\n i18n`指标名称`,\n unfoldDimensionGroup,\n unfoldDimensionGroupId,\n )\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n } else {\n const onlyOneMeasure = measures.length === 1\n const onlyOneDimension = dimensions.length === 1\n\n const dims = [...dimensions]\n if (!onlyOneMeasure || onlyOneDimension) {\n dims.push({ id: foldMeasureName, alias: i18n`指标名称`, location: 'dimension' })\n }\n\n // 展开指定的维度为指标\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(\n foldedDataset,\n dims,\n [{ id: foldMeasureValue, alias: i18n`指标值` }],\n 1,\n unfoldDimensionGroup,\n unfoldDimensionGroupId,\n foldMeasureId,\n )\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n }\n}\n","import { dataReshapeFor2D1M0Name } from 'src/dataReshape'\nimport type { AdvancedPipe } from 'src/types'\n\n/**\n * @description 数据重塑, 将任意维度、任意指标, 重塑为2个维度1个指标, 并且在0维度时, 合并所有指标为一个维度. 兼容折线图、面积图、雷达图只有指标, 没有维度的场景\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const reshapeTo2D1M0Name: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { dimensions, measures } = advancedVSeed\n\n if (!measures || !dimensions || !dataset) {\n return result\n }\n\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n\n const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor2D1M0Name(dataset, dimensions, measures)\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: [\n {\n id: '2D1M',\n index: 0,\n foldInfo,\n unfoldInfo,\n },\n ],\n dimensions,\n measures,\n }\n}\n","import { FoldMeasureId, FoldMeasureName, FoldMeasureValue, UnfoldDimensionGroup } from 'src/dataReshape/constant'\nimport { dataReshapeFor2D1M0Name } from 'src/dataReshape'\nimport type { AdvancedPipe, Dataset, DatasetReshapeInfo, Dimensions, MeasureGroup } from 'src/types'\n\n/**\n * @description 数据重塑为透视结构, 如果存在指标分组, 则将数据按组划分. 如果存在行列维度, 则生成行列树结构. 并且在0维度时, 合并所有指标为一个维度. 兼容折线图、面积图、雷达图只有指标, 没有维度的场景\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const pivotReshapeTo2D1M0Name: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { measures } = advancedVSeed\n const dimensions = advancedVSeed.dimensions as Dimensions\n\n if (!measures || !dimensions) {\n return result\n }\n\n const measureGroups: MeasureGroup[] = []\n if (measures) {\n measures.forEach((measure: MeasureGroup) => {\n if (measure.children && measure.children.length > 0) {\n measureGroups.push(measure)\n }\n })\n }\n const commonDimensions = dimensions.filter((dim) => dim.location === 'dimension')\n\n const newDatasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n measureGroups.forEach((measureGroup, index) => {\n const measures = measureGroup.children\n if (!measures) {\n return\n }\n const groupId = measureGroup.id\n const {\n dataset: newSubDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeFor2D1M0Name(dataset, commonDimensions, measures, {\n foldMeasureId: FoldMeasureId,\n foldMeasureName: FoldMeasureName,\n foldMeasureValue: FoldMeasureValue + groupId,\n unfoldDimensionGroup: UnfoldDimensionGroup,\n })\n const reshapeInfo = {\n id: groupId,\n index,\n foldInfo,\n unfoldInfo,\n }\n newDatasets.push(newSubDataset)\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n","import type { AdvancedPipe, Dimensions, FoldInfo, UnfoldInfo } from 'src/types'\nimport type { Encoding } from 'src/types'\n\nexport const encodingXY: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const { datasetReshapeInfo, dimensions } = advancedVSeed\n if (!datasetReshapeInfo || !dimensions) {\n return result\n }\n\n const xDimension =\n (dimensions as Dimensions).find(\n (item) => item.location !== 'rowDimension' && item.location !== 'columnDimension',\n ) || dimensions[0]\n\n const isZeroDimension = dimensions.length === 0\n\n const encoding = datasetReshapeInfo.reduce<Encoding>((prev, cur) => {\n const { foldInfo, unfoldInfo } = cur as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n const x = [isZeroDimension ? foldInfo.measureName : xDimension?.id]\n const y = [foldInfo.measureValue]\n const group = [unfoldInfo.groupId]\n const color = [foldInfo.measureName]\n\n return [\n ...prev,\n {\n x,\n y,\n group,\n color,\n },\n ] as Encoding\n }, [])\n\n return {\n ...result,\n encoding,\n }\n}\n","import { sort, unique } from 'remeda'\nimport type { AdvancedPipe, Dataset, Datum, Line, Sort, SortLegend } from 'src/types'\n\nexport const sortXBandAxis: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { sort: sortAxis, dataset } = vseed as Line\n const { encoding } = advancedVSeed\n const xField = encoding?.[0]?.x?.[0]\n if (!sortAxis || !xField) {\n return advancedVSeed\n }\n if (!result.analysis) result.analysis = {}\n if (!result.analysis.orderMapping) result.analysis.orderMapping = {}\n\n const axisOrderResult = calcOrder(sortAxis, xField, dataset)\n\n result.analysis.orderMapping[xField] = axisOrderResult\n\n return result\n}\n\nexport const sortYBandAxis: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { sort: sortAxis, dataset } = vseed as Line\n const { encoding } = advancedVSeed\n const yField = encoding?.[0]?.y?.[0]\n if (!sortAxis || !yField) {\n return advancedVSeed\n }\n if (!result.analysis) result.analysis = {}\n if (!result.analysis.orderMapping) result.analysis.orderMapping = {}\n\n const axisOrderResult = calcOrder(sortAxis, yField, dataset)\n\n result.analysis.orderMapping[yField] = axisOrderResult\n\n return result\n}\n\nexport const sortLegend: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { sortLegend } = vseed as Line\n const { datasetReshapeInfo } = advancedVSeed\n const groupField = datasetReshapeInfo?.[0]?.unfoldInfo?.groupId\n const colorIdMap = datasetReshapeInfo?.[0]?.unfoldInfo?.colorIdMap\n const colorItems = datasetReshapeInfo?.[0]?.unfoldInfo?.colorItems\n if (!sortLegend || !groupField || !colorIdMap || !colorItems) {\n return advancedVSeed\n }\n\n if (!result.analysis) result.analysis = {}\n if (!result.analysis.orderMapping) result.analysis.orderMapping = {}\n\n if (sortLegend.customOrder) {\n const nameMap = Object.keys(colorIdMap).reduce<Record<string, string>>((pre, cur) => {\n pre[colorIdMap[cur]] = cur\n return pre\n }, {})\n\n // 先根据名称匹配, 若名称不存在, 则根据id匹配, 从而兼容名称和id的两种情况\n const orderRes = sortLegend.customOrder.map((itemNameOrId) =>\n nameMap[itemNameOrId] ? nameMap[itemNameOrId] : itemNameOrId,\n )\n result.analysis.orderMapping[groupField] = orderRes\n return result\n }\n\n const dataset = advancedVSeed.dataset?.flat(2)\n\n const orderRes = calcOrder(sortLegend, groupField, dataset || [])\n result.analysis.orderMapping[groupField] = orderRes\n\n return result\n}\n\nconst calcOrder = (sortConfig: Sort | SortLegend, id: string, dataset: Dataset): string[] => {\n if (sortConfig.customOrder) {\n return sortConfig.customOrder\n }\n\n const order = sortConfig.order || 'asc'\n const orderBy = sortConfig.orderBy\n\n const res = sort(dataset, (a, b) => {\n const aValue = a[orderBy || id] as string | number\n const bValue = b[orderBy || id] as string | number\n\n if (order === 'asc') {\n if (aValue < bValue) {\n return -1\n }\n if (aValue > bValue) {\n return 1\n }\n return 0\n }\n if (aValue > bValue) {\n return -1\n }\n if (aValue < bValue) {\n return 1\n }\n return 0\n })\n\n return unique(res.map((item: Datum) => item[id] as string))\n}\n","import { pick } from 'remeda'\nimport type { AdvancedPipe, AdvancedVSeed, Config } from 'src/types'\n\nexport const lineConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const config = pick(vseed, [\n 'backgroundColor',\n 'color',\n 'label',\n 'legend',\n 'tooltip',\n 'xAxis',\n 'yAxis',\n 'crosshairLine',\n ]) as Config['line']\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n\nexport const columnConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const config = pick(vseed, [\n 'backgroundColor',\n 'color',\n 'label',\n 'legend',\n 'tooltip',\n 'xAxis',\n 'yAxis',\n 'crosshairRect',\n 'stackCornerRadius',\n ]) as Config['column']\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n\nexport const pieConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const config = pick(vseed, ['backgroundColor', 'color', 'label', 'legend', 'tooltip']) as Config['pie']\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n\nexport const areaConfig: AdvancedPipe = lineConfig\nexport const areaPercentConfig: AdvancedPipe = lineConfig\nexport const scatterConfig: AdvancedPipe = lineConfig\n\nexport const barConfig: AdvancedPipe = columnConfig\nexport const barParallelConfig: AdvancedPipe = columnConfig\nexport const barPercentConfig: AdvancedPipe = columnConfig\nexport const columnParallelConfig: AdvancedPipe = columnConfig\nexport const columnPercentConfig: AdvancedPipe = columnConfig\n\nexport const donutConfig: AdvancedPipe = pieConfig\nexport const roseConfig: AdvancedPipe = pieConfig\nexport const roseParallelConfig: AdvancedPipe = pieConfig\nexport const funnelConfig: AdvancedPipe = pieConfig\nexport const heatmapConfig: AdvancedPipe = pieConfig\nexport const radarConfig: AdvancedPipe = pieConfig","import { pick } from 'remeda'\nimport type { AdvancedPipe, AdvancedVSeed } from 'src/types'\n\nexport const markStyle: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n\n const markStyle = pick(vseed, ['barStyle', 'pointStyle', 'lineStyle', 'areaStyle']) as AdvancedVSeed['markStyle']\n\n return { ...advancedVSeed, markStyle }\n}\n","import { pick } from 'remeda'\nimport type { AdvancedPipe, AdvancedVSeed } from 'src/types'\n\nexport const annotation: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const annotation = pick(vseed, [\n 'annotationPoint',\n 'annotationHorizontalLine',\n 'annotationVerticalLine',\n 'annotationArea',\n ]) as AdvancedVSeed['annotation']\n\n return { ...advancedVSeed, annotation }\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n encodingXY,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n lineConfig,\n annotation,\n markStyle,\n sortXBandAxis,\n sortLegend,\n reshapeTo2D1M0Name,\n pivotReshapeTo2D1M0Name,\n} from '../pipes'\n\nexport const lineAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M0Name], [pivotReshapeTo2D1M0Name]),\n encodingXY,\n sortXBandAxis,\n sortLegend,\n lineConfig,\n theme,\n markStyle,\n annotation\n]\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initLine: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n\n result.type = 'line'\n result.direction = 'vertical'\n result.xField = encoding[0].x[0]\n result.yField = encoding[0].y[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport { Separator } from 'src/dataReshape'\nimport type { Color, SpecPipe } from 'src/types'\n\nexport const color: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo, chartType } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n const baseConfig = advancedVSeed.config[chartType] as { color: Color }\n\n if (!baseConfig || !baseConfig.color) {\n return result\n }\n\n const colorItems = unfoldInfo.colorItems\n const colorIdMap = unfoldInfo.colorIdMap\n\n const { color } = baseConfig\n const { colorScheme, colorMapping } = color\n const mappingList: Array<[string, string]> = []\n if (colorMapping) {\n Object.entries(colorMapping)\n .sort((a, b) => a[0].split(Separator).length - b[0].split(Separator).length)\n .forEach(([key, value]) => {\n const idMap = Object.entries(colorIdMap).filter(([_, v]) => v.includes(key))\n\n for (const [colorId] of idMap) {\n mappingList.push([colorId, value])\n }\n })\n }\n\n result.color = {\n type: 'ordinal',\n domain: colorItems,\n range: colorScheme,\n specified: Object.fromEntries(mappingList),\n } as ILineChartSpec['color']\n return result\n}\n","import type { ISpec } from '@visactor/vchart'\nimport type { BackgroundColor, SpecPipe } from 'src/types'\n\nexport const backgroundColor: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed } = context\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { backgroundColor: BackgroundColor }\n\n const { backgroundColor } = baseConfig\n\n return {\n ...result,\n background: backgroundColor,\n }\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { isPivotChart } from 'src/pipeline/utils'\nimport type { SpecPipe } from 'src/types'\n\nexport const datasetXY: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { encoding, analysis, datasetReshapeInfo } = advancedVSeed\n const { orderMapping = {} } = analysis ?? {}\n const angle = encoding[0]?.angle?.[0]\n const x = encoding[0]?.x?.[0]\n const group = encoding[0]?.group?.[0]\n const id = datasetReshapeInfo[0].id\n\n const fields: Record<string, object> = {}\n if (angle) {\n fields[angle] = {\n sortIndex: 0,\n }\n }\n if (x) {\n const order = orderMapping[x]\n if (order) {\n fields[x] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[x] = {\n sortIndex: 0,\n }\n }\n }\n\n if (group) {\n const order = orderMapping[group]\n if (order) {\n fields[group] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[group] = {\n sortIndex: 0,\n }\n }\n }\n\n return {\n ...spec,\n data: {\n id,\n // 透视表不使用 dataValues\n values: isPivotChart(vseed) ? undefined : advancedVSeed.dataset,\n fields: fields,\n },\n } as ISpec\n}\n","import type { ILineSeriesSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const progressive: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineSeriesSpec\n const { advancedVSeed } = context\n const { dataset } = advancedVSeed\n const size = dataset.length\n\n if (size < 5000) {\n return result\n }\n\n result.large = true\n result.largeThreshold = 5000\n result.progressiveStep = 400\n result.progressiveThreshold = 8000\n\n return result\n}\n","import type { ICartesianBandAxisSpec, ISpec } from '@visactor/vchart'\nimport type { SpecPipe, XBandAxis } from 'src/types'\n\nexport const xBand: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const config = advancedVSeed.config?.[chartType as 'column']?.xAxis as XBandAxis\n\n if (!result.axes) {\n result.axes = []\n }\n\n if (!config) {\n result.axes = [\n ...result.axes,\n {\n visible: true,\n type: 'band',\n orient: 'bottom',\n },\n ] as ISpec['axes']\n return result\n }\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n labelAutoHide,\n labelAutoHideGap,\n labelAutoLimit,\n labelAutoLimitLength = 80,\n labelAutoRotate,\n labelAutoRotateAngleRange,\n } = config\n\n const sampling = !(labelAutoHide || labelAutoRotate || labelAutoLimit)\n\n const bandAxis = {\n visible,\n type: 'band',\n orient: 'bottom',\n maxHeight: labelAutoLimitLength + 60,\n sampling,\n hover: true,\n label: {\n visible: label?.visible,\n flush: true,\n space: 8,\n style: {\n maxLineWidth: labelAutoLimitLength,\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n\n // 防重叠相关\n minGap: labelAutoHideGap,\n autoHide: labelAutoHide,\n autoHideMethod: 'greedy',\n autoHideSeparation: labelAutoHideGap,\n autoLimit: labelAutoLimit,\n autoRotate: labelAutoRotate,\n autoRotateAngle: labelAutoRotateAngleRange,\n lastVisible: true,\n },\n title: {\n visible: title?.visible,\n text: title?.titleText,\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n paddingInner: [0.15, 0.1],\n paddingOuter: [0.075, 0.1],\n } as ICartesianBandAxisSpec\n\n result.axes = [...result.axes, bandAxis] as ISpec['axes']\n return result\n}\n","// 标注层 z-index \nexport const ANNOTATION_Z_INDEX = 1000\n// 线性轴 顶部空隙 预留5px\nexport const LINEAR_AXIS_INNER_OFFSET_TOP = 7","import { isNumber } from 'remeda'\nimport { intl } from '../../../i18n'\nimport type { Formatter, Locale, NumFormat } from 'src/types'\n\nexport const createNumFormatter = (format: NumFormat, locale: Locale = intl.getLocale()): Formatter => {\n const {\n type = 'number',\n ratio = 1,\n symbol = '',\n thousandSeparator = true,\n prefix = '',\n suffix = '',\n\n fractionDigits = 2,\n significantDigits,\n roundingMode = 'halfExpand',\n roundingPriority = 'auto',\n } = format || {}\n\n const numFormatterOptions: Intl.NumberFormatOptions = {\n style: 'decimal',\n notation: type === 'scientific' ? 'scientific' : 'standard',\n // @ts-expect-error roundingMode is not in NumberFormatOptions\n roundingMode,\n roundingPriority,\n }\n\n if (isNumber(fractionDigits)) {\n if (fractionDigits >= 0) {\n numFormatterOptions.minimumFractionDigits = fractionDigits\n numFormatterOptions.maximumFractionDigits = fractionDigits\n }\n }\n if (isNumber(significantDigits) && significantDigits > 0) {\n if (significantDigits > 0) {\n numFormatterOptions.minimumSignificantDigits = significantDigits\n numFormatterOptions.maximumSignificantDigits = significantDigits\n }\n }\n\n const numFormatter = new Intl.NumberFormat(locale, numFormatterOptions)\n\n return (value?: number | string) => {\n let num = Number(value)\n let typeSymbol = ''\n if (Number.isNaN(num)) {\n return num.toString()\n }\n\n // apply ratio for percent/permille\n if (type === 'percent') {\n num *= 100\n typeSymbol = '%'\n } else if (type === 'permille') {\n num *= 1000\n typeSymbol = '‰'\n } else if (type === 'number') {\n num = num / (ratio || 1)\n }\n\n // format value\n let numStr = numFormatter.format(num)\n\n // add thousand separator\n if (thousandSeparator) {\n const parts = numStr.split('.')\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')\n numStr = parts.join('.')\n }\n\n // add symbol, typeSymbol, prefix and suffix\n return `${prefix}${numStr}${typeSymbol}${symbol}${suffix}`\n }\n}\n\nexport const autoNumFormatter = (value?: number | string, locale: Locale = intl.getLocale()): string => {\n if (value === undefined || value === null) return String(value)\n const num = Number(value)\n if (Number.isNaN(num)) return String(value)\n\n const numFormatterOptions: Intl.NumberFormatOptions = {\n style: 'decimal',\n notation: 'compact',\n }\n numFormatterOptions.minimumFractionDigits = 0\n numFormatterOptions.maximumFractionDigits = 2\n\n const numFormatter = new Intl.NumberFormat(locale, { ...numFormatterOptions })\n\n return numFormatter.format(Number(value))\n}\n","import type { Formatter, Locale, NumFormat } from 'src/types'\nimport { autoNumFormatter, createNumFormatter } from './createNumFormatter'\n\nexport const createFormatter = (format: Partial<NumFormat>): Formatter => {\n return createNumFormatter(format)\n}\n\nexport const autoFormatter = (value?: number | string, locale?: Locale): string => {\n return autoNumFormatter(value, locale)\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { LINEAR_AXIS_INNER_OFFSET_TOP } from '../../../../utils/constant'\nimport { autoFormatter } from '../../../../utils'\nimport type { SpecPipe, YLinearAxis } from 'src/types'\n\nexport const yLinear: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { locale } = advancedVSeed\n const config = advancedVSeed.config?.[chartType as 'column']?.yAxis as YLinearAxis\n\n if (!result.axes) {\n result.axes = []\n }\n\n if (!config) {\n result.axes = [\n ...result.axes,\n {\n visible: true,\n type: 'linear',\n orient: 'left',\n },\n ] as ISpec['axes']\n return result\n }\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n\n zero,\n nice,\n inverse,\n max,\n min,\n log,\n logBase = 10,\n } = config\n\n const linearAxis = {\n visible,\n type: log ? 'log' : 'linear',\n base: logBase,\n orient: 'left',\n nice,\n zero: log ? false : zero,\n inverse,\n max,\n min,\n label: {\n visible: label?.visible,\n formatMethod: (value: string) => {\n return autoFormatter(value, locale)\n },\n style: {\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n },\n title: {\n visible: title?.visible,\n text: title?.titleText,\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n innerOffset: {\n top: LINEAR_AXIS_INNER_OFFSET_TOP,\n // bottom: LINEAR_AXIS_INNER_OFFSET_TOP,\n },\n }\n\n result.axes = [...result.axes, linearAxis] as ISpec['axes']\n\n return result\n}\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport type { ILineLikeLabelSpec } from '@visactor/vchart/esm/series/mixin/interface'\nimport { autoFormatter, createFormatter, findMeasureById } from '../../../../utils'\nimport type { Datum, Label, SpecPipe } from 'src/types'\nimport { isEmpty } from 'remeda'\n\nexport const label: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed } = context\n const { measures, datasetReshapeInfo, locale } = advancedVSeed\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { label: Label }\n\n if (!baseConfig || !baseConfig.label) {\n return result\n }\n\n const { measureId, measureValue } = datasetReshapeInfo[0].foldInfo\n // const { groupId, groupName } = datasetReshapeInfo[0].unfoldInfo\n const { label } = baseConfig\n const { enable } = label\n\n result.label = {\n visible: enable,\n formatMethod: (value: string, datum: Datum) => {\n const result = []\n\n const formatValue = (value: number) => {\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return value\n }\n\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n }\n\n result.push(formatValue(datum[measureValue] as number))\n\n return result.join(' ')\n },\n } as ILineLikeLabelSpec\n return result\n}\n","import { isEmpty } from 'remeda'\nimport { autoFormatter, createFormatter, findMeasureById } from '../../../../utils'\nimport type { Datum, SpecPipe, Tooltip } from 'src/types'\n\nexport const tooltip: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { measures, datasetReshapeInfo, chartType, locale, dimensions } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n\n const { measureId, measureValue, measureName } = datasetReshapeInfo[0].foldInfo\n const { groupName } = datasetReshapeInfo[0].unfoldInfo\n\n result.tooltip = {\n visible: enable,\n\n mark: {\n title: {\n visible: true,\n },\n content: [\n ...dimensions.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (datum: unknown) => {\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return (datum as Datum) && ((datum as Datum)[item.id] as string)\n },\n value: (datum: unknown) => {\n return (datum as Datum) && ((datum as Datum)[item.id] as string)\n },\n })),\n {\n visible: true,\n hasShape: true,\n key: (datum) => (datum && (datum[measureName || groupName] as string)) || '',\n value: (datum) => {\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n },\n ],\n },\n dimension: {\n content: [\n {\n visible: true,\n key: (datum) => (datum && (datum[groupName] as string)) || '',\n value: (datum) => {\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n shapeType: 'rectRound',\n },\n ],\n },\n }\n return result\n}\n","import type { ICartesianCrosshairSpec, ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const verticalCrosshairLine: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n\n const config = advancedVSeed.config?.[chartType as 'line']?.crosshairLine\n if (!config) {\n return result\n }\n\n if (!result.crosshair) {\n result.crosshair = {}\n }\n\n const { visible = true, lineColor, labelColor, labelVisible, labelBackgroundColor } = config\n\n const crosshair = result.crosshair as ICartesianCrosshairSpec\n crosshair.xField = {\n visible,\n line: {\n type: 'line',\n style: {\n lineWidth: 1,\n opacity: 1,\n stroke: lineColor,\n lineDash: [4, 2],\n },\n },\n label: {\n visible: labelVisible,\n labelBackground: {\n visible: labelVisible,\n style: {\n fill: labelBackgroundColor,\n },\n },\n style: {\n fill: labelColor,\n },\n },\n }\n\n return result\n}\n","import type { StringOrNumber } from '@visactor/vchart'\nimport type { Legend, SpecPipe } from 'src/types'\n\nexport const discreteLegend: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { datasetReshapeInfo, chartType } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n const baseConfig = advancedVSeed.config[chartType] as { legend: Legend }\n if (!baseConfig || !baseConfig.legend) {\n return result\n }\n\n const { legend } = baseConfig\n const {\n enable,\n position = 'bottom',\n labelFontColor,\n labelFontSize = 12,\n labelFontWeight,\n maxSize = 1,\n border,\n shapeType = 'rectRound',\n } = legend || {}\n\n const orient = ['bottom', 'bottomLeft', 'bottomRight', 'bl', 'br'].includes(position)\n ? 'bottom'\n : ['top', 'topLeft', 'topRight', 'tl', 'tr'].includes(position)\n ? 'top'\n : ['left', 'leftTop', 'leftBottom', 'lt', 'lb'].includes(position)\n ? 'left'\n : 'right'\n\n const legendPosition = ['topLeft', 'bottomLeft', 'leftTop', 'rightTop', 'lt', 'rt', 'tl', 'bl'].includes(position)\n ? 'start'\n : ['topRight', 'bottomRight', 'leftBottom', 'rightBottom', 'lb', 'rb', 'rt', 'br'].includes(position)\n ? 'end'\n : 'middle'\n\n result.legends = {\n type: 'discrete',\n visible: enable,\n maxCol: Math.max(1, maxSize),\n maxRow: Math.max(1, maxSize),\n autoPage: true,\n orient,\n position: legendPosition,\n data: border\n ? (items) => {\n return items.map((item) => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n item.shape.outerBorder = {\n stroke: item.shape.fill,\n distance: 3,\n lineWidth: 1,\n }\n return item\n })\n }\n : undefined,\n item: {\n focus: true,\n maxWidth: '30%',\n focusIconStyle: {\n size: labelFontSize + 2,\n fill: labelFontColor,\n fontWeight: labelFontWeight,\n },\n shape: {\n space: border ? 6 : 4,\n style: {\n symbolType: shapeType,\n size: border ? 8 : 10,\n },\n },\n label: {\n formatMethod: (value: StringOrNumber) => {\n return unfoldInfo.colorIdMap[String(value)] ?? value\n },\n style: {\n fontSize: labelFontSize,\n fill: labelFontColor,\n fontWeight: labelFontWeight,\n },\n },\n background: {\n state: {\n selectedHover: {\n fill: labelFontColor,\n fillOpacity: 0.05,\n },\n },\n },\n },\n padding: 0,\n }\n return result\n}\n","import type { Datum } from 'src/types'\nimport type {\n DimensionSelector,\n MeasureSelector,\n PartialDatumSelector,\n Selector,\n Selectors,\n ValueSelector,\n} from '../types/dataSelector'\nimport { omit } from 'remeda'\n\nexport const selector = (vchartDatum: Datum, selector: Selector | Selectors | undefined | null) => {\n // 无有效选择器, 则认为全部匹配成功\n if (!selector) {\n return true\n }\n\n const selectorMode = 'And'\n\n // 过滤掉 vchart 相关字段\n const vchartKeys = Object.keys(vchartDatum).filter((k) => k.toLocaleLowerCase().startsWith('__vchart'))\n const datum = omit(vchartDatum, vchartKeys) as Datum\n\n // 统一处理选择器为数组\n const selectors = (Array.isArray(selector) ? selector : [selector]) as Selectors\n\n return selectors[selectorMode === 'And' ? 'every' : 'some']((selector) => {\n // 1. 字符串或数字\n if (isValueSelector(selector)) {\n if (Object.values(datum).find((v) => v === selector)) {\n return true\n }\n }\n\n // 2. 指标选择器\n else if (isMeasureSelector(selector)) {\n const op = selector.operator || selector.op\n const selectorValueArr = Array.isArray(selector.value) ? selector.value : [selector.value]\n\n switch (op) {\n case '=':\n case '==':\n if (datum[selector.field] === selectorValueArr[0]) {\n return true\n }\n break\n case '!=':\n if (datum[selector.field] !== selectorValueArr[0]) {\n return true\n }\n break\n case '>':\n if (datum[selector.field] > selectorValueArr[0]) {\n return true\n }\n break\n case '<':\n if (datum[selector.field] < selectorValueArr[0]) {\n return true\n }\n break\n case '>=':\n if (datum[selector.field] >= selectorValueArr[0]) {\n return true\n }\n break\n case '<=':\n if (datum[selector.field] <= selectorValueArr[0]) {\n return true\n }\n break\n case 'between':\n if (\n Array.isArray(selector.value) &&\n datum[selector.field] >= selectorValueArr[0] &&\n datum[selector.field] <= selectorValueArr[1]\n ) {\n return true\n }\n break\n default:\n break\n }\n }\n // 3. 维度选择器\n else if (isDimensionSelector(selector)) {\n const op = selector.operator || selector.op\n const selectorValueArr = Array.isArray(selector.value) ? selector.value : [selector.value]\n switch (op) {\n case 'in':\n if (selectorValueArr.includes(datum[selector.field] as string | number)) {\n return true\n }\n break\n case 'not in':\n if (!selectorValueArr.includes(datum[selector.field] as string | number)) {\n return true\n }\n break\n default:\n break\n }\n }\n // 4. 部分数据对象选择器\n else if (isPartialDatumSelector(selector)) {\n if (Object.keys(selector).every((key) => datum[key] === selector[key])) {\n return true\n }\n }\n\n return false\n })\n}\n\nexport const isValueSelector = (selector: Selector): selector is ValueSelector => {\n return typeof selector === 'string' || typeof selector === 'number'\n}\n\nexport const isPartialDatumSelector = (selector: Selector): selector is PartialDatumSelector => {\n return typeof selector === 'object' && selector !== null\n}\n\nexport const isMeasureSelector = (selector: Selector): selector is MeasureSelector => {\n return (\n typeof selector === 'object' &&\n selector !== null &&\n 'field' in selector &&\n ('operator' in selector || 'op' in selector) &&\n 'value' in selector &&\n (['=', '==', '!=', '>', '<', '>=', '<=', 'between'].includes(selector.operator as string) ||\n ['=', '==', '!=', '>', '<', '>=', '<=', 'between'].includes(selector.op as string))\n )\n}\n\nexport const isDimensionSelector = (selector: Selector): selector is DimensionSelector => {\n return (\n typeof selector === 'object' &&\n selector !== null &&\n 'field' in selector &&\n ('operator' in selector || 'op' in selector) &&\n 'value' in selector &&\n (['in', 'not in'].includes(selector.operator as string) || ['in', 'not in'].includes(selector.op as string))\n )\n}\n","import type { IAreaChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, PointStyle, SpecPipe } from 'src/types'\n\nexport const pointStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle } = advancedVSeed\n const { pointStyle } = markStyle\n const result = {\n ...spec,\n } as IAreaChartSpec\n\n if (!pointStyle) {\n return result\n }\n const pointStyles = (Array.isArray(pointStyle) ? pointStyle : [pointStyle]) as PointStyle[]\n\n const customMap = pointStyles.reduce<object>((result, style, index) => {\n const { pointBorderColor, pointBorderStyle, pointBorderWidth = 1, pointColor, pointColorOpacity, pointSize } = style\n\n const lineDash = pointBorderStyle === 'dashed' ? [5, 2] : pointBorderStyle === 'dotted' ? [2, 5] : [0, 0]\n return {\n ...result,\n [`custom${index + 1}`]: {\n // 优先级: 后者覆盖前者\n level: index + 1,\n filter: (datum: Datum) => {\n if (selector(datum, style.selector)) {\n return true\n }\n return false\n },\n style: {\n size: pointSize,\n fill: pointColor,\n fillOpacity: pointColorOpacity,\n innerBorder: {\n stroke: pointBorderColor,\n lineWidth: pointBorderWidth,\n distance: (pointBorderWidth || 0) / 2,\n lineDash: lineDash,\n },\n },\n },\n }\n }, {})\n\n return {\n ...result,\n point: {\n state: {\n ...customMap,\n },\n },\n }\n}\n","import type { IScatterChartSpec } from '@visactor/vchart'\nimport type { ISeriesMarkAttributeContext } from '@visactor/vchart/esm/compile/mark'\nimport type { SpecPipe } from 'src/types'\n\nexport const pointStateDimensionHover: SpecPipe = (spec) => {\n const point = (spec as IScatterChartSpec).point || {}\n const result = {\n ...spec,\n point: {\n ...point,\n state: {\n ...(point.state || {}),\n dimension_hover: {\n scaleX: 1.4,\n scaleY: 1.4,\n },\n },\n },\n } as IScatterChartSpec\n return result\n}\n\nexport const pointStateHover: SpecPipe = (spec, context) => {\n const point = (spec as IScatterChartSpec).point || {}\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n const result = {\n ...spec,\n point: {\n ...point,\n state: {\n ...(point.state || {}),\n hover: {\n scaleX: 1.4,\n scaleY: 1.4,\n stroke: (datum, context: ISeriesMarkAttributeContext) => {\n const field = encoding[0]?.group?.[0] as string\n const color = context.seriesColor(datum[field] as string)\n return color\n },\n fillOpacity: 0.6,\n lineWidth: 1,\n },\n },\n },\n } as IScatterChartSpec\n return result\n}\n","import type { IAreaChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, LineStyle, SpecPipe } from 'src/types'\nimport { groupBy } from 'remeda'\n\nexport const lineStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle, encoding, dataset } = advancedVSeed\n const { lineStyle } = markStyle\n if (!lineStyle) {\n return spec\n }\n const result = { ...spec } as IAreaChartSpec\n\n const lineStyles = (Array.isArray(lineStyle) ? lineStyle : [lineStyle]) as LineStyle[]\n\n const group = encoding[0]?.group?.[0]\n const lineGroups = groupBy(dataset, (d) => d[group ?? ''] as string)\n\n const customMap = lineStyles.reduce<object>((result, style, index) => {\n const { lineColor, lineColorOpacity, lineSmooth, lineStyle, lineWidth } = style\n\n const dashSegment = (lineWidth ?? 2) * 2\n const dashGap = lineWidth ?? 2\n\n const lineDash =\n lineStyle === 'dashed' ? [dashSegment, dashSegment] : lineStyle === 'dotted' ? [dashGap / 2, dashGap * 2] : [0, 0]\n\n const curveType = lineSmooth ? 'monotone' : 'linear'\n\n return {\n ...result,\n [`custom${index + 1}`]: {\n // 优先级: 后者覆盖前者\n level: index + 1,\n filter: (datum: Datum) => {\n const lineData = lineGroups[datum[group ?? ''] as string]\n for (const d of lineData) {\n if (selector(d, style.selector)) {\n return true\n }\n }\n return false\n },\n style: {\n curveType: curveType,\n strokeOpacity: lineColorOpacity,\n stroke: lineColor,\n lineWidth: lineWidth,\n lineDash: lineDash,\n },\n },\n }\n }, {})\n\n return {\n ...result,\n line: {\n state: {\n ...customMap,\n },\n },\n }\n}\n","import type { Datum } from \"src/types\"\n\nexport const isSubset = (sub: Datum, obj: Datum) => {\n return Object.entries(sub).every(([key, value]) => {\n if (typeof value === 'string') {\n return obj[key] === value\n }\n if (typeof value === 'number') {\n return obj[key] === value\n }\n return true\n })\n}\n","import type { ICartesianSeries, ILineChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, SpecPipe } from 'src/types'\nimport { isSubset } from './utils'\nimport { ANNOTATION_Z_INDEX } from '../../../../utils/constant'\n\nexport const annotationPoint: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { annotation } = advancedVSeed\n\n if (!annotation || !annotation.annotationPoint) {\n return spec\n }\n\n const { annotationPoint } = annotation\n const annotationPointList = Array.isArray(annotationPoint) ? annotationPoint : [annotationPoint]\n\n const markPoint = annotationPointList.flatMap((annotationPoint) => {\n const {\n selector: selectorPoint,\n text = '',\n textColor = '#ffffff',\n textFontSize = 12,\n textFontWeight = 400,\n textAlign = 'center',\n textBaseline = 'top',\n backgroundBorderColor,\n backgroundBorderRadius = 4,\n backgroundBorderWidth = 1,\n backgroundColor = '#212121',\n backgroundPadding = 2,\n backgroundVisible = true,\n offsetX = 0,\n offsetY = 0,\n } = annotationPoint\n\n const dataset = advancedVSeed.dataset.flat()\n const selectedData = selectorPoint ? dataset.filter((datum) => selector(datum, selectorPoint)) : []\n\n return selectedData.map((datum) => {\n return {\n zIndex: ANNOTATION_Z_INDEX,\n regionRelative: true,\n position: (data: Datum[], context: ICartesianSeries) => {\n const targetDatum = data.find((item) => isSubset(datum, item))\n if (targetDatum) {\n const { x, y } = context.dataToPosition(targetDatum) as { x: number; y: number }\n return {\n x,\n y,\n }\n }\n },\n\n itemLine: {\n visible: false,\n },\n itemContent: {\n offsetY,\n offsetX,\n text: {\n text: text,\n style: {\n visible: true,\n textAlign: textAlign,\n textBaseline: textBaseline,\n fill: textColor,\n stroke: backgroundColor,\n lineWidth: 1,\n fontSize: textFontSize,\n fontWeight: textFontWeight,\n dy: textFontSize,\n },\n labelBackground: {\n visible: backgroundVisible,\n padding: backgroundPadding,\n style: {\n cornerRadius: backgroundBorderRadius ?? 4,\n fill: backgroundColor,\n stroke: backgroundBorderColor,\n lineWidth: backgroundBorderWidth,\n dy: textFontSize,\n },\n },\n },\n },\n }\n })\n }) as ILineChartSpec['markPoint']\n\n return {\n ...spec,\n markPoint,\n }\n}\n","import type { ILineChartSpec, IMarkLineSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { SpecPipe } from 'src/types'\nimport { isArray, isNumber, isString } from 'remeda'\nimport { ANNOTATION_Z_INDEX } from '../../../../utils/constant'\n\nexport const annotationVerticalLine: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { annotation, encoding } = advancedVSeed\n\n if (!annotation || !annotation.annotationVerticalLine) {\n return spec\n }\n\n const { annotationVerticalLine } = annotation\n const annotationVerticalLineList = Array.isArray(annotationVerticalLine)\n ? annotationVerticalLine\n : [annotationVerticalLine]\n\n const positionMap = {\n outsideStart: 'start',\n outsideEnd: 'end',\n outsideMiddle: 'middle',\n insideStart: 'insideStartTop',\n insideMiddle: 'insideMiddleTop',\n insideEnd: 'insideEndTop',\n }\n const markLine = annotationVerticalLineList.flatMap((annotationVerticalLine) => {\n const {\n selector: selectorPoint,\n xValue,\n text = '',\n textPosition = 'insideEnd',\n textColor = '#ffffff',\n textFontSize = 12,\n textFontWeight = 400,\n textAlign = 'right',\n textBaseline = 'top',\n\n backgroundVisible = true,\n backgroundBorderColor = '#212121',\n backgroundColor = '#212121',\n backgroundBorderRadius = 4,\n backgroundBorderWidth = 1,\n backgroundPadding = 2,\n\n lineVisible = true,\n lineColor = '#212121',\n lineWidth = 1,\n lineStyle = 'dashed',\n\n offsetX = 0,\n offsetY = 0,\n } = annotationVerticalLine\n\n const dataset = advancedVSeed.dataset.flat()\n\n const generateOneMarkLine = (x: number | string) => ({\n x: x as string,\n zIndex: ANNOTATION_Z_INDEX,\n offsetX,\n offsetY,\n line: {\n style: {\n visible: lineVisible,\n stroke: lineColor,\n lineStyle: lineStyle,\n lineWidth: lineWidth,\n lineDash: lineStyle === 'dashed' ? [5, 2] : lineStyle === 'dotted' ? [2, 5] : [0],\n },\n },\n label: {\n text: text,\n position: positionMap[textPosition],\n style: {\n visible: true,\n stroke: backgroundColor,\n lineWidth: 1,\n textAlign: textAlign,\n textBaseline: textBaseline,\n fill: textColor,\n fontSize: textFontSize,\n fontWeight: textFontWeight,\n dy: textFontSize,\n },\n labelBackground: {\n visible: backgroundVisible,\n padding: backgroundPadding,\n style: {\n dy: textFontSize,\n cornerRadius: backgroundBorderRadius ?? 4,\n fill: backgroundColor,\n stroke: backgroundBorderColor,\n lineWidth: backgroundBorderWidth,\n },\n },\n },\n endSymbol: {\n visible: true,\n size: 10 + lineWidth,\n style: {\n dy: 4,\n fill: lineColor,\n },\n },\n })\n\n if ((!selectorPoint && isArray(xValue)) || isString(xValue) || isNumber(xValue)) {\n const xValueArr = Array.isArray(xValue) ? xValue : [xValue]\n return xValueArr.map(generateOneMarkLine)\n }\n\n const selectedData = selectorPoint ? dataset.filter((datum) => selector(datum, selectorPoint)) : []\n\n return selectedData.map((datum) => {\n const x = encoding[0]?.x?.[0]\n if (!x) {\n return {}\n }\n return generateOneMarkLine(datum[x] as string)\n })\n }) as IMarkLineSpec[]\n\n const specMarkLine = ((spec as ILineChartSpec).markLine as IMarkLineSpec[]) || []\n const newMarkLine = [...specMarkLine, ...(markLine || [])]\n\n return {\n ...spec,\n markLine: newMarkLine,\n }\n}\n","import type { ILineChartSpec, IMarkLineSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { SpecPipe } from 'src/types'\nimport { isArray, isNumber, isString } from 'remeda'\nimport { ANNOTATION_Z_INDEX } from '../../../../utils/constant'\n\nexport const annotationHorizontalLine: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { annotation, encoding } = advancedVSeed\n\n if (!annotation || !annotation.annotationHorizontalLine) {\n return spec\n }\n\n const { annotationHorizontalLine } = annotation\n const annotationVerticalLineList = Array.isArray(annotationHorizontalLine)\n ? annotationHorizontalLine\n : [annotationHorizontalLine]\n\n const positionMap = {\n outsideStart: 'start',\n outsideEnd: 'end',\n outsideMiddle: 'middle',\n insideStart: 'insideStartTop',\n insideMiddle: 'insideMiddleTop',\n insideEnd: 'insideEndTop',\n }\n\n const markLine = annotationVerticalLineList.flatMap((annotationVerticalLine) => {\n const {\n selector: selectorPoint,\n yValue,\n text = '',\n textPosition = 'insideEnd',\n textColor = '#ffffff',\n textFontSize = 12,\n textFontWeight = 400,\n textAlign = 'right',\n textBaseline = 'top',\n\n lineColor = '#212121',\n lineStyle = 'dashed',\n lineVisible = true,\n lineWidth = 1,\n\n backgroundVisible = true,\n backgroundColor = '#212121',\n backgroundBorderColor = '#212121',\n backgroundBorderRadius = 4,\n backgroundBorderWidth = 1,\n backgroundPadding = 2,\n\n offsetX = 0,\n offsetY = 0,\n } = annotationVerticalLine\n\n const dataset = advancedVSeed.dataset.flat()\n\n const generateOneMarkLine = (y: string | number) => {\n return {\n y,\n offsetX,\n offsetY,\n zIndex: ANNOTATION_Z_INDEX,\n line: {\n style: {\n visible: lineVisible,\n stroke: lineColor,\n lineStyle: lineStyle,\n lineWidth: lineWidth,\n lineDash: lineStyle === 'dashed' ? [5, 2] : lineStyle === 'dotted' ? [2, 5] : [0],\n },\n },\n label: {\n text: text,\n position: positionMap[textPosition],\n style: {\n visible: true,\n dy: textFontSize,\n stroke: backgroundColor,\n lineWidth: 1,\n textAlign: textAlign,\n textBaseline: textBaseline,\n fill: textColor,\n fontSize: textFontSize,\n fontWeight: textFontWeight,\n },\n labelBackground: {\n visible: backgroundVisible,\n padding: backgroundPadding,\n style: {\n dy: textFontSize,\n cornerRadius: backgroundBorderRadius ?? 4,\n fill: backgroundColor,\n stroke: backgroundBorderColor,\n lineWidth: backgroundBorderWidth,\n },\n },\n },\n endSymbol: {\n visible: true,\n size: 10 + lineWidth,\n style: {\n dx: -4,\n fill: lineColor,\n },\n },\n }\n }\n\n if ((!selectorPoint && isArray(yValue)) || isString(yValue) || isNumber(yValue)) {\n const yValueArr = Array.isArray(yValue) ? yValue : [yValue]\n return yValueArr.map(generateOneMarkLine)\n }\n\n const selectedData = selectorPoint ? dataset.filter((datum) => selector(datum, selectorPoint)) : []\n\n return selectedData.map((datum) => {\n const y = encoding[0]?.y?.[0]\n if (!y) {\n return {}\n }\n return generateOneMarkLine(datum[y] as string)\n })\n }) as IMarkLineSpec[]\n const specMarkLine = ((spec as ILineChartSpec).markLine as IMarkLineSpec[]) || []\n const newMarkLine = [...specMarkLine, ...(markLine || [])]\n return {\n ...spec,\n markLine: newMarkLine,\n }\n}\n","import type { ICartesianSeries, ILineChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, SpecPipe } from 'src/types'\nimport { isSubset } from './utils'\nimport { ANNOTATION_Z_INDEX } from '../../../../utils/constant'\n\nexport const annotationArea: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { annotation } = advancedVSeed\n\n if (!annotation || !annotation.annotationArea) {\n return spec\n }\n\n const { annotationArea } = annotation\n const annotationAreaList = Array.isArray(annotationArea) ? annotationArea : [annotationArea]\n\n const positionMap = {\n top: 'insideTop',\n topRight: 'insideTopRight',\n topLeft: 'insideTopLeft',\n bottom: 'insideBottom',\n bottomLeft: 'insideBottomLeft',\n bottomRight: 'insideBottomRight',\n left: 'insideLeft',\n right: 'insideRight',\n }\n\n const markArea = annotationAreaList.flatMap((annotationArea) => {\n const {\n selector: selectorPoint,\n text = '',\n textPosition = 'top',\n textColor = '#ffffff',\n textFontSize = 12,\n textFontWeight = 400,\n textAlign = 'center',\n textBaseline = 'top',\n\n backgroundVisible = true,\n backgroundColor = '#191d24',\n backgroundBorderColor = '#191d24',\n backgroundBorderWidth = 1,\n backgroundBorderRadius = 4,\n backgroundPadding = 4,\n\n areaColor = '#888888',\n areaColorOpacity = 0.15,\n areaBorderColor = '#888888',\n areaBorderRadius = 4,\n areaBorderWidth = 1,\n\n outerPadding = 4,\n offsetX = 0,\n offsetY = 0,\n } = annotationArea\n\n const dataset = advancedVSeed.dataset.flat()\n const selectedData = selectorPoint ? dataset.filter((datum) => selector(datum, selectorPoint)) : []\n\n return {\n zIndex: ANNOTATION_Z_INDEX,\n regionRelative: true,\n offsetX,\n offsetY,\n positions: (data: Datum[], context: ICartesianSeries) => {\n const positionData = data.filter((item) => selectedData.some((datum) => isSubset(datum, item)))\n const xyList = positionData.map((datum) => context.dataToPosition(datum) as { x: number; y: number })\n\n const yAxisHelper = context.getYAxisHelper() as unknown as {\n getBandwidth: (depth?: number) => number\n getScale: () => {\n range: () => number[]\n }\n }\n const xAxisHelper = context.getXAxisHelper() as unknown as {\n getBandwidth: (depth?: number) => number\n getScale: () => {\n range: () => number[]\n }\n }\n\n if (typeof xAxisHelper?.getBandwidth === 'function') {\n const yScale = yAxisHelper.getScale()\n\n const minX = Math.min(...xyList.map((item) => item.x)) - outerPadding\n const maxX = Math.max(...xyList.map((item) => item.x)) + outerPadding\n const minY = Math.min(...yScale.range())\n const maxY = Math.max(...yScale.range())\n return [\n // 左上\n {\n x: minX,\n y: minY,\n },\n // 右上\n {\n x: maxX,\n y: minY,\n },\n // 右下\n {\n x: maxX,\n y: maxY,\n },\n // 左下\n {\n x: minX,\n y: maxY,\n },\n ]\n }\n\n if (typeof yAxisHelper?.getBandwidth === 'function') {\n const xScale = xAxisHelper.getScale()\n\n const minY = Math.min(...xyList.map((item) => item.y)) - outerPadding\n const maxY = Math.max(...xyList.map((item) => item.y)) + outerPadding\n const minX = Math.min(...xScale.range())\n const maxX = Math.max(...xScale.range())\n\n return [\n // 左上\n {\n x: minX,\n y: minY,\n },\n // 右上\n {\n x: maxX,\n y: minY,\n },\n // 右下\n {\n x: maxX,\n y: maxY,\n },\n // 左下\n {\n x: minX,\n y: maxY,\n },\n ]\n }\n\n return []\n },\n label: {\n position: positionMap[textPosition],\n visible: true,\n text: text,\n style: {\n dy: textFontSize,\n textAlign: textAlign,\n textBaseline: textBaseline,\n fill: textColor,\n stroke: backgroundColor,\n lineWidth: 1,\n fontSize: textFontSize,\n fontWeight: textFontWeight,\n },\n\n labelBackground: {\n visible: backgroundVisible,\n padding: backgroundPadding,\n style: {\n dy: textFontSize,\n cornerRadius: backgroundBorderRadius ?? 4,\n fill: backgroundColor,\n stroke: backgroundBorderColor,\n lineWidth: backgroundBorderWidth,\n },\n },\n },\n area: {\n style: {\n visible: true,\n fill: areaColor,\n fillOpacity: areaColorOpacity,\n stroke: areaBorderColor,\n lineWidth: areaBorderWidth,\n cornerRadius: areaBorderRadius,\n },\n },\n }\n }) as ILineChartSpec['markArea']\n\n return {\n ...spec,\n markArea: markArea,\n }\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { SpecPipe } from 'src/types'\n\nexport const initPivot: SpecPipe = (spec) => {\n const result = { ...spec } as PivotChartConstructorOptions\n\n return {\n ...result,\n animation: true,\n rows: [],\n columns: [],\n indicators: [],\n records: [],\n widthMode: 'adaptive',\n heightMode: 'adaptive',\n indicatorsAsCol: false,\n }\n}\n\nexport const pivotIndicatorsAsRow: SpecPipe = (spec) => {\n const result = { ...spec } as PivotChartConstructorOptions\n\n return {\n ...result,\n indicatorsAsCol: false,\n }\n}\n\nexport const pivotIndicatorsAsCol: SpecPipe = (spec) => {\n const result = { ...spec } as PivotChartConstructorOptions\n\n return {\n ...result,\n indicatorsAsCol: true,\n }\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { SpecPipe } from 'src/types'\n\nexport const pivotGridStyle: SpecPipe = (spec) => {\n const result = { ...spec } as PivotChartConstructorOptions\n const transparent = 'rgba(0,0,0,0)'\n\n const hoverBackgroundColor = 'rgba(178,186,207, 0.2)'\n return {\n ...result,\n theme: {\n underlayBackgroundColor: transparent,\n bodyStyle: {\n borderColor: 'rgba(0,4,20,0.2)',\n borderLineWidth: [0, 0, 2, 0],\n bgColor: transparent,\n padding: [0, 0, 1, 0],\n hover: {\n cellBgColor: 'transparent',\n },\n },\n headerStyle: {\n borderColor: 'rgba(0,4,20,0.2)',\n fontSize: 12,\n color: '#333333',\n textAlign: 'center',\n borderLineWidth: 0,\n bgColor: transparent,\n hover: {\n cellBgColor: hoverBackgroundColor,\n },\n },\n rowHeaderStyle: {\n borderColor: 'rgba(0,4,20,0.2)',\n fontSize: 12,\n color: '#333333',\n borderLineWidth: 0,\n bgColor: transparent,\n hover: {\n cellBgColor: hoverBackgroundColor,\n },\n },\n cornerHeaderStyle: {\n borderColor: 'rgba(0,4,20,0.2)',\n textAlign: 'center',\n fontSize: 12,\n color: '#333333',\n fontWeight: 'bold',\n borderLineWidth: [0, 0, 0, 0],\n bgColor: transparent,\n hover: {\n cellBgColor: hoverBackgroundColor,\n },\n },\n cornerRightTopCellStyle: {\n borderColor: 'rgba(0,4,20,0.2)',\n borderLineWidth: 0,\n bgColor: transparent,\n hover: {\n cellBgColor: hoverBackgroundColor,\n },\n },\n cornerLeftBottomCellStyle: {\n borderColor: 'rgba(0,4,20,0.2)',\n borderLineWidth: 0,\n bgColor: transparent,\n hover: {\n cellBgColor: hoverBackgroundColor,\n },\n },\n cornerRightBottomCellStyle: {\n borderColor: 'rgba(0,4,20,0.2)',\n borderLineWidth: 0,\n bgColor: transparent,\n hover: {\n cellBgColor: hoverBackgroundColor,\n },\n },\n rightFrozenStyle: {\n borderColor: 'rgba(0,4,20,0.2)',\n borderLineWidth: 0,\n bgColor: transparent,\n hover: {\n cellBgColor: hoverBackgroundColor,\n },\n },\n bottomFrozenStyle: {\n borderColor: 'rgba(0,4,20,0.2)',\n borderLineWidth: 0,\n bgColor: transparent,\n hover: {\n cellBgColor: hoverBackgroundColor,\n },\n },\n selectionStyle: {\n cellBgColor: '',\n cellBorderColor: '',\n },\n frameStyle: {\n borderLineWidth: 0,\n bgColor: transparent,\n },\n },\n }\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport { execPipeline } from '../../../../utils'\nimport type { SpecPipe, SpecPipeline, SpecPipelineContext } from 'src/types'\nimport { unique } from 'remeda'\n\nexport const pivotIndicators =\n (chartPipeline: SpecPipeline): SpecPipe =>\n (spec, context) => {\n const result = { ...spec } as PivotChartConstructorOptions\n const { advancedVSeed } = context\n const { measures, datasetReshapeInfo, encoding } = advancedVSeed\n\n const colorItems = unique(datasetReshapeInfo.flatMap((d) => d.unfoldInfo.colorItems))\n\n const indicators = datasetReshapeInfo.map((reshapeInfo, index) => {\n const measure = measures?.find((d) => d.id === reshapeInfo.id)\n\n const newEncoding = [encoding[index]]\n const newDatasetReshapeInfo = [\n {\n ...reshapeInfo,\n unfoldInfo: { ...reshapeInfo.unfoldInfo, colorItems },\n },\n ]\n const newContext: SpecPipelineContext = {\n ...context,\n advancedVSeed: {\n ...advancedVSeed,\n datasetReshapeInfo: newDatasetReshapeInfo,\n encoding: newEncoding,\n },\n }\n\n const chartSpec = execPipeline(chartPipeline, newContext, {})\n return {\n indicatorKey: reshapeInfo.id,\n title: measure?.alias,\n cellType: 'chart',\n chartModule: 'vchart',\n chartSpec: chartSpec,\n style: {\n padding: [1, 1, 0, 1],\n },\n }\n })\n\n return {\n ...result,\n indicators: indicators,\n } as PivotChartConstructorOptions\n }\n\nexport const pivotIndicatorsAsRow: SpecPipe = (spec) => {\n const result = { ...spec } as PivotChartConstructorOptions\n\n return {\n ...result,\n indicatorsAsCol: false,\n }\n}\n\nexport const pivotIndicatorsAsCol: SpecPipe = (spec) => {\n const result = { ...spec } as PivotChartConstructorOptions\n\n return {\n ...result,\n indicatorsAsCol: true,\n }\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { SpecPipe } from 'src/types'\n\nexport const datasetPivot: SpecPipe = (spec, context) => {\n const result = { ...spec } as PivotChartConstructorOptions\n const { advancedVSeed } = context\n const { dataset, datasetReshapeInfo } = advancedVSeed\n const records = dataset.reduce((pre, cur, index) => {\n const id = datasetReshapeInfo[index].id\n pre[id] = cur\n return pre\n }, {})\n return {\n ...result,\n records: records,\n } as PivotChartConstructorOptions\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { IBasicDimension } from '@visactor/vtable/es/ts-types/pivot-table/dimension/basic-dimension'\nimport type { Dimensions, SpecPipe } from 'src/types'\n\nexport const pivotRowDimensions: SpecPipe = (spec, context) => {\n const result = { ...spec } as PivotChartConstructorOptions\n const { advancedVSeed } = context\n const dimensions = advancedVSeed.dimensions as Dimensions\n if (!dimensions) {\n return result\n }\n const rowDimensions = dimensions.filter((dim) => dim.location === 'rowDimension')\n const rows: IBasicDimension[] = rowDimensions.map((dim) => ({\n dimensionKey: dim.id,\n title: dim.alias || dim.id,\n }))\n return {\n ...result,\n rows: rows,\n }\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { IBasicDimension } from '@visactor/vtable/es/ts-types/pivot-table/dimension/basic-dimension'\nimport type { Dimensions, SpecPipe } from 'src/types'\n\nexport const pivotColumnDimensions: SpecPipe = (spec, context) => {\n const result = { ...spec } as PivotChartConstructorOptions\n const { advancedVSeed } = context\n const dimensions = advancedVSeed.dimensions as Dimensions\n\n if (!dimensions) {\n return result\n }\n const columnDimensions = dimensions.filter((dim) => dim.location === 'columnDimension')\n const columns: IBasicDimension[] = columnDimensions.map((dim) => ({\n dimensionKey: dim.id,\n title: dim.alias || dim.id,\n }))\n return {\n ...result,\n columns: columns,\n }\n}\n","import type { StringOrNumber } from '@visactor/vchart'\nimport type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { IDiscreteTableLegendOption } from '@visactor/vtable/es/ts-types/component/legend'\nimport { unique } from 'remeda'\nimport type { Color, Legend, SpecPipe } from 'src/types'\n\nexport const pivotDiscreteLegend: SpecPipe = (spec, context) => {\n const result = { ...spec } as PivotChartConstructorOptions\n const { advancedVSeed } = context\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { legend: Legend; color: Color }\n\n if (!baseConfig || !baseConfig.legend) {\n return result\n }\n\n const { datasetReshapeInfo } = advancedVSeed\n\n const colorItems = unique(\n datasetReshapeInfo.flatMap((d) => {\n return d.unfoldInfo.colorItems\n }),\n )\n\n const colorIdMap = datasetReshapeInfo.reduce<Record<string, string>>((prev, cur) => {\n return { ...prev, ...cur.unfoldInfo.colorIdMap }\n }, {})\n\n const { legend, color } = baseConfig\n const { colorScheme } = color\n\n const {\n enable,\n position = 'bottom',\n labelFontColor,\n labelFontSize = 12,\n labelFontWeight = 400,\n maxSize = 1,\n border,\n shapeType = 'rectRound',\n } = legend || {}\n\n const orient = ['bottom', 'bottomLeft', 'bottomRight', 'bl', 'br'].includes(position)\n ? 'bottom'\n : ['top', 'topLeft', 'topRight', 'tl', 'tr'].includes(position)\n ? 'top'\n : ['left', 'leftTop', 'leftBottom', 'lt', 'lb'].includes(position)\n ? 'left'\n : 'right'\n\n const legendPosition = ['topLeft', 'bottomLeft', 'leftTop', 'rightTop', 'lt', 'rt', 'tl', 'bl'].includes(position)\n ? 'start'\n : ['topRight', 'bottomRight', 'leftBottom', 'rightBottom', 'lb', 'rb', 'rt', 'br'].includes(position)\n ? 'end'\n : 'middle'\n\n const legends: IDiscreteTableLegendOption = {\n visible: enable,\n type: 'discrete',\n orient,\n position: legendPosition,\n maxCol: Math.max(1, maxSize),\n maxRow: Math.max(1, maxSize),\n data: colorItems.map((d, index) => ({\n label: d,\n shape: {\n outerBorder: border\n ? {\n stroke: colorScheme?.[index],\n distance: 3,\n lineWidth: 1,\n }\n : undefined,\n fill: colorScheme?.[index],\n },\n })),\n\n item: {\n focus: true,\n maxWidth: '30%',\n focusIconStyle: {\n size: labelFontSize + 2,\n fill: labelFontColor,\n fontWeight: labelFontWeight,\n },\n shape: {\n space: border ? 6 : 4,\n style: {\n symbolType: shapeType,\n size: border ? 8 : 10,\n },\n },\n label: {\n formatMethod: (value: StringOrNumber) => {\n return colorIdMap[String(value)] ?? value\n },\n style: {\n fontSize: labelFontSize,\n fill: labelFontColor,\n fontWeight: labelFontWeight,\n },\n },\n background: {\n state: {\n selectedHover: {\n fill: labelFontColor,\n fillOpacity: 0.05,\n },\n },\n },\n },\n } as unknown as IDiscreteTableLegendOption\n return { ...result, legends }\n}\n","import type { Spec, SpecPipe, SpecPipeline, SpecPipelineContext } from 'src/types'\nimport { execPipeline, isPivotChart } from '../../../../utils'\n\nexport const pivotAdapter = (pipeline: SpecPipeline, pivotPipeline: SpecPipeline): SpecPipe => {\n return (spec, context) => {\n const { vseed } = context\n const usePivotChart = isPivotChart(vseed)\n\n if (usePivotChart) {\n return execPipeline<Spec, SpecPipelineContext>(pivotPipeline, context, spec)\n }\n\n return execPipeline<Spec, SpecPipelineContext>(pipeline, context, spec)\n }\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n xBand,\n yLinear,\n initLine,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n initPivot,\n datasetPivot,\n pivotDiscreteLegend,\n pivotIndicators,\n pivotAdapter,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n pointStyle,\n lineStyle,\n verticalCrosshairLine,\n pointStateDimensionHover,\n progressive,\n} from '../pipes'\n\nconst line: SpecPipeline = [\n initLine,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairLine,\n discreteLegend,\n pointStyle,\n pointStateDimensionHover,\n lineStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotLine: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initLine,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairLine,\n pointStyle,\n pointStateDimensionHover,\n lineStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const lineSpecPipeline: SpecPipeline = [pivotAdapter(line, pivotLine)]\n","import { lineAdvancedPipeline, lineSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerLine = () => {\n Builder._advancedPipelineMap['line'] = lineAdvancedPipeline\n Builder._specPipelineMap['line'] = lineSpecPipeline\n}","import type { Dataset, Dimension, FoldInfo, Measure, UnfoldInfo } from 'src/types'\nimport { foldMeasures } from './foldMeasures'\nimport {\n UnfoldDimensionGroup,\n FoldMeasureId,\n FoldMeasureName,\n FoldMeasureValue,\n UnfoldDimensionGroupId,\n} from './constant'\nimport { unfoldDimensions } from './unfoldDimensions'\nimport { i18n } from '../i18n'\n\nconst emptyReshapeResult: {\n dataset: Dataset\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n} = {\n dataset: [],\n foldInfo: {\n foldMap: {},\n measureId: '',\n measureName: '',\n measureValue: '',\n },\n unfoldInfo: {\n groupName: '',\n groupId: '',\n colorItems: [],\n colorIdMap: {},\n },\n}\n/**\n * 数据重塑为2个维度1个指标\n * @param dataset\n * @param dimensions\n * @param measures\n * @returns\n */\nexport const dataReshapeFor2D1M = (\n dataset: Dataset,\n dimensions: Dimension[],\n measures: Measure[],\n options?: {\n foldMeasureId?: string\n foldMeasureName?: string\n foldMeasureValue?: string\n unfoldDimensionGroup?: string\n unfoldDimensionGroupId?: string\n },\n): {\n dataset: Dataset\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n} => {\n const {\n foldMeasureId = FoldMeasureId,\n foldMeasureName = FoldMeasureName,\n foldMeasureValue = FoldMeasureValue,\n unfoldDimensionGroup = UnfoldDimensionGroup,\n unfoldDimensionGroupId = UnfoldDimensionGroupId,\n } = options || {}\n if (dimensions.length === 0 && measures.length === 0) {\n return emptyReshapeResult\n }\n\n // 合并所有指标为1个指标\n const { dataset: foldedDataset, foldInfo } = foldMeasures(\n dataset,\n measures,\n foldMeasureId,\n foldMeasureName,\n foldMeasureValue,\n )\n\n if (dimensions.length === 0) {\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(\n foldedDataset,\n [\n { id: foldMeasureId, alias: i18n`指标Id`, location: 'dimension' },\n { id: foldMeasureName, alias: i18n`指标名称`, location: 'dimension' },\n ],\n [{ id: foldMeasureValue, alias: i18n`指标值` }],\n 1,\n unfoldDimensionGroup,\n unfoldDimensionGroupId,\n foldMeasureId,\n )\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n } else {\n const onlyOneMeasure = measures.length === 1\n const onlyOneDimension = dimensions.length === 1\n\n const dims = [...dimensions]\n if (!onlyOneMeasure || onlyOneDimension) {\n dims.push({ id: foldMeasureName, alias: i18n`指标名称`, location: 'dimension' })\n }\n\n // 展开指定的维度为指标\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(\n foldedDataset,\n dims,\n [{ id: foldMeasureValue, alias: i18n`指标值` }],\n 1,\n unfoldDimensionGroup,\n unfoldDimensionGroupId,\n foldMeasureId,\n )\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n }\n}\n","import { dataReshapeFor2D1M } from 'src/dataReshape'\nimport type { AdvancedPipe } from 'src/types'\n\n/**\n * 数据重塑, 将任意维度、任意指标, 重塑为2个维度1个指标.\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const reshapeTo2D1M: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { dimensions, measures } = advancedVSeed\n\n if (!measures || !dimensions || !dataset) {\n return result\n }\n\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n\n const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor2D1M(dataset, dimensions, measures)\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: [\n {\n id: '2D1M',\n index: 0,\n foldInfo,\n unfoldInfo,\n },\n ],\n dimensions,\n measures,\n }\n}\n","import { FoldMeasureId, FoldMeasureName, FoldMeasureValue, UnfoldDimensionGroup } from 'src/dataReshape/constant'\nimport { dataReshapeFor2D1M } from 'src/dataReshape'\nimport type { AdvancedPipe, Dataset, DatasetReshapeInfo, Dimensions, MeasureGroup } from 'src/types'\n\n/**\n * 数据重塑为透视结构, 如果存在指标分组, 则将数据按组划分. 如果存在行列维度, 则生成行列树结构.\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const pivotReshapeTo2D1M: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { measures } = advancedVSeed\n const dimensions = advancedVSeed.dimensions as Dimensions\n\n if (!measures || !dimensions) {\n return result\n }\n\n const measureGroups: MeasureGroup[] = []\n if (measures) {\n measures.forEach((measure: MeasureGroup) => {\n if (measure.children && measure.children.length > 0) {\n measureGroups.push(measure)\n }\n })\n }\n const commonDimensions = dimensions.filter((dim) => dim.location === 'dimension')\n\n const newDatasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n measureGroups.forEach((measureGroup, index) => {\n const measures = measureGroup.children\n if (!measures) {\n return\n }\n const groupId = measureGroup.id\n const {\n dataset: newSubDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeFor2D1M(dataset, commonDimensions, measures, {\n foldMeasureId: FoldMeasureId,\n foldMeasureName: FoldMeasureName,\n foldMeasureValue: FoldMeasureValue + groupId,\n unfoldDimensionGroup: UnfoldDimensionGroup,\n })\n const reshapeInfo = {\n id: groupId,\n index,\n foldInfo,\n unfoldInfo,\n }\n newDatasets.push(newSubDataset)\n datasetReshapeInfo.push(reshapeInfo)\n })\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n encodingXY,\n initAdvancedVSeed,\n reshapeTo2D1M,\n theme,\n pivotAdapter,\n columnConfig,\n markStyle,\n annotation,\n pivotReshapeTo2D1M,\n sortXBandAxis,\n sortLegend,\n} from '../pipes'\n\nexport const columnAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingXY,\n sortXBandAxis,\n sortLegend,\n columnConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initColumn: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n\n result.type = 'bar'\n result.direction = 'vertical'\n result.xField = encoding[0].x[0]\n result.yField = encoding[0].y[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { SpecPipe, StackCornerRadius } from 'src/types'\n\nexport const stackCornerRadius: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const stackCornerRadius = advancedVSeed.config?.[chartType as 'column']?.stackCornerRadius as StackCornerRadius\n\n return {\n ...spec,\n stackCornerRadius,\n }\n}\n","import type { IAreaChartSpec, IBarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const stackInverse: SpecPipe = (spec) => {\n const result = { ...spec } as IAreaChartSpec | IBarChartSpec\n result.stackInverse = true\n return result\n}\n","import type { ICartesianCrosshairSpec, ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const verticalCrosshairRect: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n\n const config = advancedVSeed.config?.[chartType as 'column']?.crosshairRect\n if (!config) {\n return result\n }\n\n if (!result.crosshair) {\n result.crosshair = {}\n }\n\n const { visible = true, rectColor, labelColor, labelVisible, labelBackgroundColor } = config\n const crosshair = result.crosshair as ICartesianCrosshairSpec\n crosshair.xField = {\n visible,\n line: {\n type: 'rect',\n style: {\n lineWidth: 0,\n opacity: 0.2,\n fill: rectColor,\n },\n },\n label: {\n visible: labelVisible,\n labelBackground: {\n visible: labelVisible,\n style: {\n fill: labelBackgroundColor,\n },\n },\n style: {\n fill: labelColor,\n },\n },\n }\n\n return result\n}\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { BarStyle, Datum, SpecPipe } from 'src/types'\n\nexport const barStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle, dataset } = advancedVSeed\n const { barStyle } = markStyle\n\n const showStroke = dataset.length <= 100\n\n const result = {\n ...spec,\n bar: {\n style: {\n stroke: '#fff',\n lineWidth: showStroke ? 1 : 0,\n },\n state: {\n hover: {\n fillOpacity: 0.6,\n },\n },\n },\n } as IBarChartSpec\n\n if (!barStyle) {\n return result\n }\n\n const barStyles = (Array.isArray(barStyle) ? barStyle : [barStyle]) as BarStyle[]\n\n const customMap = barStyles.reduce<object>((result, style, index) => {\n const { barBorderColor, barBorderStyle, barBorderWidth = 1, barColor, barColorOpacity, barRadius } = style\n\n const lineDash = barBorderStyle === 'dashed' ? [5, 2] : barBorderStyle === 'dotted' ? [2, 5] : [0, 0]\n return {\n ...result,\n [`custom${index + 1}`]: {\n // 优先级: 后者覆盖前者\n level: index + 1,\n filter: (datum: Datum) => {\n if (selector(datum, style.selector)) {\n return true\n }\n return false\n },\n style: {\n fill: barColor,\n fillOpacity: barColorOpacity,\n cornerRadius: barRadius,\n innerBorder: {\n stroke: barBorderColor,\n lineWidth: barBorderWidth,\n distance: (barBorderWidth || 0) / 2,\n lineDash: lineDash,\n },\n },\n },\n }\n }, {})\n\n return {\n ...result,\n bar: {\n state: {\n ...customMap,\n },\n },\n }\n}\n","import type { ICartesianSeries, ILineChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, SpecPipe } from 'src/types'\nimport { isSubset } from './utils'\nimport { ANNOTATION_Z_INDEX } from '../../../../utils/constant'\n\nexport const annotationAreaBand: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { annotation } = advancedVSeed\n\n if (!annotation || !annotation.annotationArea) {\n return spec\n }\n\n const { annotationArea } = annotation\n const annotationAreaList = Array.isArray(annotationArea) ? annotationArea : [annotationArea]\n\n const positionMap = {\n top: 'insideTop',\n topRight: 'insideTopRight',\n topLeft: 'insideTopLeft',\n bottom: 'insideBottom',\n bottomLeft: 'insideBottomLeft',\n bottomRight: 'insideBottomRight',\n left: 'insideLeft',\n right: 'insideRight',\n }\n\n const markArea = annotationAreaList.flatMap((annotationArea) => {\n const {\n selector: selectorPoint,\n text = '',\n textPosition = 'top',\n textColor = '#ffffff',\n textFontSize = 12,\n textFontWeight = 400,\n textAlign = 'center',\n textBaseline = 'top',\n\n backgroundVisible = true,\n backgroundColor = '#191d24',\n backgroundBorderColor = '#191d24',\n backgroundBorderWidth = 1,\n backgroundBorderRadius = 4,\n backgroundPadding = 4,\n\n areaColor = '#888888',\n areaColorOpacity = 0.15,\n areaBorderColor = '#888888',\n areaBorderRadius = 4,\n areaBorderWidth = 1,\n\n outerPadding = 4,\n offsetX = 0,\n offsetY = 0,\n } = annotationArea\n\n const dataset = advancedVSeed.dataset.flat()\n const selectedData = selectorPoint ? dataset.filter((datum) => selector(datum, selectorPoint)) : []\n\n return {\n zIndex: ANNOTATION_Z_INDEX,\n regionRelative: true,\n offsetX,\n offsetY,\n positions: (data: Datum[], context: ICartesianSeries) => {\n const positionData = data.filter((item) => selectedData.some((datum) => isSubset(datum, item)))\n const xyList = positionData.map((datum) => context.dataToPosition(datum) as { x: number; y: number })\n\n const yAxisHelper = context.getYAxisHelper() as unknown as {\n getBandwidth: (depth?: number) => number\n getScale: () => {\n range: () => number[]\n }\n }\n const xAxisHelper = context.getXAxisHelper() as unknown as {\n getBandwidth: (depth?: number) => number\n getScale: () => {\n range: () => number[]\n }\n }\n\n if (typeof xAxisHelper?.getBandwidth === 'function') {\n const depth = context.fieldX.length ?? 0\n const xBandWidth = xAxisHelper?.getBandwidth?.(depth - 1)\n const yScale = yAxisHelper.getScale()\n\n const minX = Math.min(...xyList.map((item) => item.x)) - outerPadding\n const maxX = Math.max(...xyList.map((item) => item.x)) + xBandWidth + outerPadding\n const minY = Math.min(...yScale.range())\n const maxY = Math.max(...yScale.range())\n return [\n // 左上\n {\n x: minX,\n y: minY,\n },\n // 右上\n {\n x: maxX,\n y: minY,\n },\n // 右下\n {\n x: maxX,\n y: maxY,\n },\n // 左下\n {\n x: minX,\n y: maxY,\n },\n ]\n }\n\n if (typeof yAxisHelper?.getBandwidth === 'function') {\n const depth = context.fieldY.length ?? 0\n const yBandWidth = yAxisHelper?.getBandwidth?.(depth - 1)\n const xScale = xAxisHelper.getScale()\n\n const minY = Math.min(...xyList.map((item) => item.y)) - outerPadding\n const maxY = Math.max(...xyList.map((item) => item.y)) + yBandWidth + outerPadding\n const minX = Math.min(...xScale.range())\n const maxX = Math.max(...xScale.range())\n\n return [\n // 左上\n {\n x: minX,\n y: minY,\n },\n // 右上\n {\n x: maxX,\n y: minY,\n },\n // 右下\n {\n x: maxX,\n y: maxY,\n },\n // 左下\n {\n x: minX,\n y: maxY,\n },\n ]\n }\n\n return []\n },\n label: {\n position: positionMap[textPosition],\n visible: true,\n text: text,\n style: {\n dy: textFontSize,\n textAlign: textAlign,\n textBaseline: textBaseline,\n stroke: backgroundColor,\n lineWidth: 1,\n fill: textColor,\n fontSize: textFontSize,\n fontWeight: textFontWeight,\n },\n\n labelBackground: {\n visible: backgroundVisible,\n padding: backgroundPadding,\n style: {\n dy: textFontSize,\n cornerRadius: backgroundBorderRadius ?? 4,\n fill: backgroundColor,\n stroke: backgroundBorderColor,\n lineWidth: backgroundBorderWidth,\n },\n },\n },\n area: {\n style: {\n visible: true,\n fill: areaColor,\n fillOpacity: areaColorOpacity,\n stroke: areaBorderColor,\n lineWidth: areaBorderWidth,\n cornerRadius: areaBorderRadius,\n },\n },\n }\n }) as ILineChartSpec['markArea']\n\n return {\n ...spec,\n markArea: markArea,\n }\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n initColumn,\n datasetXY,\n xBand,\n yLinear,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n pivotAdapter,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n stackInverse,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n verticalCrosshairRect,\n stackCornerRadius,\n progressive,\n} from '../pipes'\n\nconst column: SpecPipeline = [\n initColumn,\n stackCornerRadius,\n stackInverse,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairRect,\n discreteLegend,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotColumn: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initColumn,\n stackCornerRadius,\n stackInverse,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairRect,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const columnSpecPipeline = [pivotAdapter(column, pivotColumn)]\n","import { columnAdvancedPipeline, columnSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerColumn = () => {\n Builder._advancedPipelineMap['column'] = columnAdvancedPipeline\n Builder._specPipelineMap['column'] = columnSpecPipeline\n}","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n encodingXY,\n initAdvancedVSeed,\n reshapeTo2D1M,\n theme,\n pivotAdapter,\n pivotReshapeTo2D1M,\n columnParallelConfig,\n markStyle,\n annotation,\n sortXBandAxis,\n sortLegend,\n} from '../pipes'\n\nexport const columnParallelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingXY,\n sortXBandAxis,\n sortLegend,\n columnParallelConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initColumnParallel: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { encoding, datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n\n result.type = 'bar'\n result.direction = 'vertical'\n result.xField = [encoding[0].x[0], unfoldInfo.groupId]\n result.yField = encoding[0].y[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n xBand,\n yLinear,\n initColumnParallel,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n pivotIndicators,\n initPivot,\n datasetPivot,\n pivotAdapter,\n pivotDiscreteLegend,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n verticalCrosshairRect,\n stackCornerRadius,\n progressive,\n} from '../pipes'\n\nconst columnParallel: SpecPipeline = [\n initColumnParallel,\n stackCornerRadius,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n discreteLegend,\n verticalCrosshairRect,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotColumnParallel: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initColumnParallel,\n stackCornerRadius,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairRect,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const columnParallelSpecPipeline: SpecPipeline = [pivotAdapter(columnParallel, pivotColumnParallel)]\n","import { columnParallelAdvancedPipeline, columnParallelSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerColumnParallel = () => {\n Builder._advancedPipelineMap['columnParallel'] = columnParallelAdvancedPipeline\n Builder._specPipelineMap['columnParallel'] = columnParallelSpecPipeline\n}","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n encodingXY,\n initAdvancedVSeed,\n theme,\n reshapeTo2D1M,\n pivotReshapeTo2D1M,\n pivotAdapter,\n columnPercentConfig,\n markStyle,\n annotation,\n sortXBandAxis,\n sortLegend,\n} from '../pipes'\n\nexport const columnPercentAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingXY,\n sortXBandAxis,\n sortLegend,\n columnPercentConfig,\n theme,\n markStyle,\n annotation,\n]\n","import { IAreaChartSpec, IBarChartSpec } from '@visactor/vchart'\nimport { SpecPipe } from 'src/types'\n\nexport const percent: SpecPipe = (spec, context) => {\n const result = { ...spec } as IAreaChartSpec | IBarChartSpec\n result.percent = true\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n initColumn,\n datasetXY,\n xBand,\n yLinear,\n percent,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n pivotAdapter,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n stackInverse,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n verticalCrosshairRect,\n stackCornerRadius,\n progressive,\n} from '../pipes'\n\nconst columnPercent: SpecPipeline = [\n initColumn,\n stackCornerRadius,\n stackInverse,\n color,\n backgroundColor,\n percent,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairRect,\n discreteLegend,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotColumnPercent: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initColumn,\n stackCornerRadius,\n stackInverse,\n color,\n percent,\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairRect,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const columnPercentSpecPipeline: SpecPipeline = [pivotAdapter(columnPercent, pivotColumnPercent)]\n","import { columnPercentAdvancedPipeline, columnPercentSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerColumnPercent = () => {\n Builder._advancedPipelineMap['columnPercent'] = columnPercentAdvancedPipeline\n Builder._specPipelineMap['columnPercent'] = columnPercentSpecPipeline\n}","import type { AdvancedPipe, Dimensions, FoldInfo, UnfoldInfo } from 'src/types'\nimport type { Encoding } from 'src/types'\n\nexport const encodingYX: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const { datasetReshapeInfo, dimensions } = advancedVSeed\n if (!datasetReshapeInfo || !dimensions) {\n return result\n }\n\n const yDimension =\n (dimensions as Dimensions).find(\n (item) => item.location !== 'rowDimension' && item.location !== 'columnDimension',\n ) || dimensions[0]\n\n const isZeroDimension = dimensions.length === 0\n\n const encoding = datasetReshapeInfo.reduce<Encoding>((prev, cur) => {\n const { foldInfo, unfoldInfo } = cur as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n const y = [isZeroDimension ? foldInfo.measureName : yDimension?.id]\n const x = [foldInfo.measureValue]\n const group = [unfoldInfo.groupId]\n const color = [foldInfo.measureName]\n\n return [\n ...prev,\n {\n x,\n y,\n group,\n color,\n },\n ] as Encoding\n }, [])\n\n return {\n ...result,\n encoding,\n }\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n encodingYX,\n theme,\n autoMeasures,\n autoDimensions,\n reshapeTo2D1M,\n pivotReshapeTo2D1M,\n pivotAdapter,\n barConfig,\n markStyle,\n annotation,\n sortYBandAxis,\n sortLegend,\n} from '../pipes'\n\nexport const barAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingYX,\n sortYBandAxis,\n sortLegend,\n barConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initBar: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n\n result.type = 'bar'\n result.direction = 'horizontal'\n result.yField = encoding[0].y?.[0]\n result.xField = encoding[0].x?.[0]\n result.seriesField = encoding[0].group?.[0]\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { isPivotChart } from 'src/pipeline/utils'\nimport type { SpecPipe } from 'src/types'\n\nexport const datasetYX: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { encoding, analysis, datasetReshapeInfo } = advancedVSeed\n const { orderMapping = {} } = analysis ?? {}\n const angle = encoding[0]?.angle?.[0]\n const y = encoding[0]?.y?.[0]\n const group = encoding[0]?.group?.[0]\n const id = datasetReshapeInfo[0].id\n\n const fields: Record<string, object> = {}\n if (angle) {\n fields[angle] = {\n sortIndex: 0,\n }\n }\n if (y) {\n const order = orderMapping[y]\n if (order) {\n fields[y] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[y] = {\n sortIndex: 0,\n }\n }\n }\n if (group) {\n const order = orderMapping[group]\n if (order) {\n fields[group] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[group] = {\n sortIndex: 0,\n }\n }\n }\n\n return {\n ...spec,\n data: {\n id,\n // 透视表不使用 dataValues\n values: isPivotChart(vseed) ? undefined : advancedVSeed.dataset,\n fields: fields,\n },\n } as ISpec\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { LINEAR_AXIS_INNER_OFFSET_TOP } from '../../../../utils/constant'\nimport type { SpecPipe, XLinearAxis } from 'src/types'\nimport { autoFormatter } from '../../../../utils'\n\nexport const xLinear: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { locale } = advancedVSeed\n const config = advancedVSeed.config?.[chartType as 'bar']?.xAxis as XLinearAxis\n\n if (!result.axes) {\n result.axes = []\n }\n\n if (!config) {\n result.axes = [\n ...result.axes,\n {\n visible: true,\n type: 'linear',\n orient: 'bottom',\n },\n ] as ISpec['axes']\n return result\n }\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n\n zero,\n nice,\n inverse,\n max,\n min,\n log,\n logBase = 10,\n } = config\n\n const linearAxis = {\n visible,\n type: log ? 'log' : 'linear',\n base: logBase,\n orient: 'bottom',\n nice,\n zero: log ? false : zero,\n inverse,\n max,\n min,\n label: {\n visible: label?.visible,\n formatMethod: (value: string) => {\n return autoFormatter(value, locale)\n },\n style: {\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n },\n title: {\n visible: title?.visible,\n text: title?.titleText,\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n innerOffset: {\n right: LINEAR_AXIS_INNER_OFFSET_TOP,\n // left: LINEAR_AXIS_INNER_OFFSET_TOP,\n },\n }\n\n result.axes = [...result.axes, linearAxis] as ISpec['axes']\n\n return result\n}\n","import type { ICartesianBandAxisSpec, ISpec } from '@visactor/vchart'\nimport type { SpecPipe, XBandAxis } from 'src/types'\n\nexport const yBand: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const config = advancedVSeed.config?.[chartType as 'bar']?.yAxis as XBandAxis\n\n if (!result.axes) {\n result.axes = []\n }\n\n if (!config) {\n result.axes = [\n ...result.axes,\n {\n visible: true,\n type: 'band',\n orient: 'left',\n },\n ] as ISpec['axes']\n return result\n }\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n labelAutoHide,\n labelAutoHideGap,\n labelAutoLimit,\n labelAutoLimitLength = 80,\n labelAutoRotate,\n labelAutoRotateAngleRange,\n } = config\n\n const sampling = !(labelAutoHide || labelAutoRotate || labelAutoLimit)\n\n const bandAxis = {\n visible,\n type: 'band',\n orient: 'left',\n maxWidth: labelAutoLimitLength + 60,\n sampling,\n hover: true,\n label: {\n visible: label?.visible,\n flush: true,\n containerAlign: 'right',\n space: 8,\n style: {\n maxLineWidth: labelAutoLimitLength,\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n // 防重叠相关\n minGap: labelAutoHideGap,\n autoHide: labelAutoHide,\n autoHideMethod: 'greedy',\n autoHideSeparation: labelAutoHideGap,\n autoLimit: labelAutoLimit,\n autoRotate: labelAutoRotate,\n autoRotateAngle: labelAutoRotateAngleRange,\n lastVisible: true,\n },\n title: {\n visible: title?.visible,\n text: title?.titleText,\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n paddingInner: [0.15, 0.1],\n paddingOuter: [0.075, 0.1],\n } as ICartesianBandAxisSpec\n\n result.axes = [...result.axes, bandAxis] as ISpec['axes']\n return result\n}\n","import type { ICartesianCrosshairSpec, ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const horizontalCrosshairRect: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n\n const config = advancedVSeed.config?.[chartType as 'column']?.crosshairRect\n if (!config) {\n return result\n }\n\n if (!result.crosshair) {\n result.crosshair = {}\n }\n\n const { visible = true, rectColor, labelColor, labelVisible, labelBackgroundColor } = config\n const crosshair = result.crosshair as ICartesianCrosshairSpec\n crosshair.yField = {\n visible,\n line: {\n type: 'rect',\n style: {\n lineWidth: 0,\n opacity: 0.2,\n fill: rectColor,\n },\n },\n label: {\n visible: labelVisible,\n labelBackground: {\n visible: labelVisible,\n style: {\n fill: labelBackgroundColor,\n },\n },\n style: {\n fill: labelColor,\n },\n },\n }\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n initBar,\n datasetYX,\n xLinear,\n yBand,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n pivotAdapter,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotIndicatorsAsCol,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n horizontalCrosshairRect,\n stackCornerRadius,\n progressive,\n} from '../pipes'\n\nconst bar: SpecPipeline = [\n initBar,\n stackCornerRadius,\n color,\n backgroundColor,\n datasetYX,\n progressive,\n xLinear,\n yBand,\n label,\n tooltip,\n horizontalCrosshairRect,\n discreteLegend,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotBar: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsCol,\n datasetPivot,\n pivotIndicators([\n initBar,\n stackCornerRadius,\n color,\n backgroundColor,\n datasetYX,\n progressive,\n xLinear,\n yBand,\n label,\n label,\n tooltip,\n horizontalCrosshairRect,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const barSpecPipeline: SpecPipeline = [pivotAdapter(bar, pivotBar)]\n","import { barAdvancedPipeline, barSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerBar = () => {\n Builder._advancedPipelineMap['bar'] = barAdvancedPipeline\n Builder._specPipelineMap['bar'] = barSpecPipeline\n}","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n encodingYX,\n initAdvancedVSeed,\n reshapeTo2D1M,\n theme,\n pivotAdapter,\n pivotReshapeTo2D1M,\n barParallelConfig,\n markStyle,\n annotation,\n sortYBandAxis,\n sortLegend,\n} from '../pipes'\n\nexport const barParallelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingYX,\n sortYBandAxis,\n sortLegend,\n barParallelConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initBarParallel: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { encoding, datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n\n result.type = 'bar'\n result.direction = 'horizontal'\n result.yField = [encoding[0].y[0], unfoldInfo.groupId] as string[]\n result.xField = encoding[0].x[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetYX,\n xLinear,\n yBand,\n initBarParallel,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n initPivot,\n datasetPivot,\n pivotDiscreteLegend,\n pivotIndicators,\n pivotAdapter,\n pivotIndicatorsAsCol,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n horizontalCrosshairRect,\n stackCornerRadius,\n progressive,\n} from '../pipes'\n\nconst barParallel: SpecPipeline = [\n initBarParallel,\n stackCornerRadius,\n color,\n backgroundColor,\n datasetYX,\n progressive,\n xLinear,\n yBand,\n label,\n tooltip,\n horizontalCrosshairRect,\n discreteLegend,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotBarParallel: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsCol,\n datasetPivot,\n pivotIndicators([\n initBarParallel,\n stackCornerRadius,\n color,\n backgroundColor,\n datasetYX,\n xLinear,\n yBand,\n label,\n tooltip,\n horizontalCrosshairRect,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const barParallelSpecPipeline: SpecPipeline = [pivotAdapter(barParallel, pivotBarParallel)]\n","import { barParallelAdvancedPipeline, barParallelSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerBarParallel = () => {\n Builder._advancedPipelineMap['barParallel'] = barParallelAdvancedPipeline\n Builder._specPipelineMap['barParallel'] = barParallelSpecPipeline\n}","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n encodingYX,\n initAdvancedVSeed,\n reshapeTo2D1M,\n theme,\n pivotAdapter,\n pivotReshapeTo2D1M,\n barPercentConfig,\n markStyle,\n annotation,\n sortYBandAxis,\n sortLegend,\n} from '../pipes'\n\nexport const barPercentAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingYX,\n sortYBandAxis,\n sortLegend,\n barPercentConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { SpecPipeline } from 'src/types'\nimport {\n initBar,\n datasetYX,\n xLinear,\n yBand,\n percent,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n pivotAdapter,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotIndicatorsAsCol,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n horizontalCrosshairRect,\n stackCornerRadius,\n progressive,\n} from '../pipes'\n\nconst barPercent: SpecPipeline = [\n initBar,\n stackCornerRadius,\n color,\n backgroundColor,\n percent,\n datasetYX,\n progressive,\n xLinear,\n yBand,\n label,\n tooltip,\n horizontalCrosshairRect,\n discreteLegend,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotBarPercent: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsCol,\n datasetPivot,\n pivotIndicators([\n initBar,\n stackCornerRadius,\n color,\n backgroundColor,\n percent,\n datasetYX,\n yBand,\n xLinear,\n label,\n tooltip,\n horizontalCrosshairRect,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const barPercentSpecPipeline: SpecPipeline = [pivotAdapter(barPercent, pivotBarPercent)]\n","import { barPercentAdvancedPipeline, barPercentSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerBarPercent = () => {\n Builder._advancedPipelineMap['barPercent'] = barPercentAdvancedPipeline\n Builder._specPipelineMap['barPercent'] = barPercentSpecPipeline\n}","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n encodingXY,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n areaConfig,\n annotation,\n markStyle,\n sortXBandAxis,\n sortLegend,\n reshapeTo2D1M0Name,\n pivotReshapeTo2D1M0Name,\n} from '../pipes'\n\nexport const areaAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M0Name], [pivotReshapeTo2D1M0Name]),\n encodingXY,\n sortXBandAxis,\n sortLegend,\n areaConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IAreaChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initArea: SpecPipe = (spec, context) => {\n const result = { ...spec } as IAreaChartSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n\n result.type = 'area'\n result.direction = 'vertical'\n result.xField = encoding[0].x[0]\n result.yField = encoding[0].y[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { IAreaChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { AreaStyle, Datum, SpecPipe } from 'src/types'\nimport { groupBy } from 'remeda'\n\nexport const areaStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle, encoding, dataset } = advancedVSeed\n const { areaStyle } = markStyle\n\n if (!areaStyle) {\n return spec\n }\n const result = { ...spec } as IAreaChartSpec\n\n const areaStyles = (Array.isArray(areaStyle) ? areaStyle : [areaStyle]) as AreaStyle[]\n\n const group = encoding[0]?.group?.[0]\n const lineGroups = groupBy(dataset, (d) => d[group ?? ''] as string)\n\n const customMap = areaStyles.reduce<object>((result, style, index) => {\n const { areaColor, areaColorOpacity } = style\n\n return {\n ...result,\n [`custom${index + 1}`]: {\n // 优先级: 后者覆盖前者\n level: index + 1,\n filter: (datum: Datum) => {\n const lineData = lineGroups[datum[group ?? ''] as string]\n for (const d of lineData) {\n if (selector(d, style.selector)) {\n return true\n }\n }\n return false\n },\n style: {\n fill: areaColor,\n fillOpacity: areaColorOpacity,\n },\n },\n }\n }, {})\n\n return {\n ...result,\n area: {\n state: {\n ...customMap,\n },\n },\n }\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n xBand,\n yLinear,\n initArea,\n stackInverse,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotAdapter,\n initPivot,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n pointStyle,\n lineStyle,\n areaStyle,\n verticalCrosshairLine,\n pointStateDimensionHover,\n datasetXY,\n progressive,\n} from '../pipes'\n\nconst area: SpecPipeline = [\n initArea,\n stackInverse,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairLine,\n discreteLegend,\n pointStyle,\n pointStateDimensionHover,\n lineStyle,\n areaStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotArea: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initArea,\n color,\n backgroundColor,\n stackInverse,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairLine,\n pointStyle,\n pointStateDimensionHover,\n lineStyle,\n areaStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const areaSpecPipeline = [pivotAdapter(area, pivotArea)]\n","import { areaAdvancedPipeline, areaSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerArea = () => {\n Builder._advancedPipelineMap['area'] = areaAdvancedPipeline\n Builder._specPipelineMap['area'] = areaSpecPipeline\n}","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n encodingXY,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n areaPercentConfig,\n annotation,\n markStyle,\n sortXBandAxis,\n sortLegend,\n reshapeTo2D1M0Name,\n pivotReshapeTo2D1M0Name,\n} from '../pipes'\n\nexport const areaPercentAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M0Name], [pivotReshapeTo2D1M0Name]),\n encodingXY,\n sortXBandAxis,\n sortLegend,\n areaPercentConfig,\n theme,\n markStyle,\n annotation\n]\n","import type { SpecPipeline } from 'src/types'\nimport {\n percent,\n datasetXY,\n xBand,\n yLinear,\n initArea,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotAdapter,\n initPivot,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n stackInverse,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n pointStyle,\n lineStyle,\n areaStyle,\n verticalCrosshairLine,\n progressive,\n} from '../pipes'\n\nconst areaPercent: SpecPipeline = [\n initArea,\n stackInverse,\n color,\n backgroundColor,\n percent,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairLine,\n discreteLegend,\n pointStyle,\n lineStyle,\n areaStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotAreaPercent: SpecPipeline = [\n initPivot,\n\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initArea,\n stackInverse,\n color,\n backgroundColor,\n percent,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairLine,\n pointStyle,\n lineStyle,\n areaStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const areaPercentSpecPipeline = [pivotAdapter(areaPercent, pivotAreaPercent)]\n","import { areaPercentAdvancedPipeline, areaPercentSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerAreaPercent = () => {\n Builder._advancedPipelineMap['areaPercent'] = areaPercentAdvancedPipeline\n Builder._specPipelineMap['areaPercent'] = areaPercentSpecPipeline\n}","import { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Datum, MeasureGroup, MeasureTree } from 'src/types'\n\n/**\n * 自动处理指标, 如果超出了2个指标, 则按每2个指标一个组的逻辑维护\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const autoMeasuresBy2M1Group: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { measures, dataset } = vseed\n\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return result\n }\n\n if (measures) {\n result.measures = auto2M1Group(measures as MeasureTree)\n return result\n }\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n const newMeasures = Object.keys(sample)\n .filter((key) => {\n return top100dataset.some((item) => typeof item[key] === 'number') && !['', null, undefined].includes(key)\n })\n .map((measure) => ({\n id: measure,\n alias: measure,\n }))\n\n result.measures = auto2M1Group(newMeasures)\n return result\n}\n\nconst auto2M1Group = (measures: MeasureTree): MeasureTree => {\n const allMeasures = findAllMeasures(measures)\n\n if (allMeasures.length <= 2) {\n return allMeasures\n }\n\n const groups: MeasureTree = measures.filter((measure) => 'children' in measure)\n const singleMeasures = measures.filter((measure) => !('children' in measure))\n for (let i = 0; i < singleMeasures.length; i += 2) {\n const group = createEmptyMeasureGroup()\n group.children = allMeasures.slice(i, i + 2)\n groups.push(group)\n }\n return groups as MeasureGroup[]\n}\n\nconst createEmptyMeasureGroup = (): MeasureGroup => {\n return {\n id: '',\n alias: '',\n children: [],\n }\n}\n","import type { Dataset, Dimension, FoldInfo, Measure, UnfoldInfo } from 'src/types'\nimport {\n UnfoldDimensionGroup,\n FoldMeasureId,\n FoldMeasureName,\n FoldMeasureValue,\n UnfoldDimensionGroupId,\n} from './constant'\nimport { unfoldDimensions } from './unfoldDimensions'\nimport { i18n } from '../i18n'\n\nconst emptyReshapeResult = {\n dataset: [],\n foldInfo: {\n foldMap: {},\n measureId: '',\n measureName: '',\n measureValue: '',\n },\n unfoldInfo: {\n groupName: '',\n groupId: '',\n colorItems: [],\n colorIdMap: {},\n },\n}\n/**\n * 仅数据重塑为1个维度,不处理指标\n * @param dataset\n * @param dimensions\n * @param measures\n * @returns\n */\nexport const dataReshapeFor1D = (\n dataset: Dataset,\n dimensions: Dimension[],\n measures: Measure[],\n options?: {\n foldMeasureId?: string\n foldMeasureName?: string\n foldMeasureValue?: string\n unfoldDimensionGroup?: string\n unfoldDimensionGroupId?: string\n },\n): {\n dataset: Dataset\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n} => {\n const {\n foldMeasureId = FoldMeasureId,\n foldMeasureName = FoldMeasureName,\n foldMeasureValue = FoldMeasureValue,\n unfoldDimensionGroup = UnfoldDimensionGroup,\n unfoldDimensionGroupId = UnfoldDimensionGroupId,\n } = options || {}\n\n if (dimensions.length === 0 && measures.length === 0) {\n return emptyReshapeResult\n }\n\n if (dimensions.length === 0) {\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(\n dataset,\n [],\n [],\n 0,\n unfoldDimensionGroup,\n unfoldDimensionGroupId,\n foldMeasureId,\n )\n return {\n dataset: finalDataset,\n foldInfo: {\n foldMap: {},\n measureId: foldMeasureId,\n measureName: foldMeasureName,\n measureValue: foldMeasureValue,\n },\n unfoldInfo,\n }\n } else {\n // 展开指定的维度为指标\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(\n dataset,\n [...dimensions],\n [{ id: foldMeasureValue, alias: i18n`指标值` }],\n 0,\n unfoldDimensionGroup,\n unfoldDimensionGroupId,\n foldMeasureId,\n )\n return {\n dataset: finalDataset,\n foldInfo: {\n foldMap: {},\n measureId: foldMeasureId,\n measureName: foldMeasureName,\n measureValue: foldMeasureValue,\n },\n unfoldInfo,\n }\n }\n}\n","import { dataReshapeFor1D } from 'src/dataReshape'\nimport type { AdvancedPipe } from 'src/types'\n\n/**\n * 数据重塑, 将任意维度、任意指标, 重塑为1个维度2个指标.\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const reshapeTo1D: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { dimensions, measures } = advancedVSeed\n if (!measures || !dimensions || !dataset) {\n return result\n }\n\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n\n const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor1D(dataset, dimensions, measures)\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: [\n {\n id: '1D2M',\n index: 0,\n foldInfo,\n unfoldInfo,\n },\n ],\n }\n}\n","import { FoldMeasureId, FoldMeasureName, FoldMeasureValue, UnfoldDimensionGroup } from 'src/dataReshape/constant'\nimport { dataReshapeFor1D } from 'src/dataReshape'\nimport type { AdvancedPipe, Dataset, DatasetReshapeInfo, Dimensions, MeasureGroup } from 'src/types'\n\n/**\n * 数据重塑为透视结构, 如果存在指标分组, 则将数据按组划分\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const pivotReshapeTo1D: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { measures } = advancedVSeed\n const dimensions = advancedVSeed.dimensions as Dimensions\n\n if (!measures || !dimensions) {\n return result\n }\n\n const measureGroups: MeasureGroup[] = []\n if (measures) {\n measures.forEach((measure: MeasureGroup) => {\n if (measure.children && measure.children.length > 0) {\n measureGroups.push(measure)\n }\n })\n }\n const newDatasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n measureGroups.forEach((measureGroup, index) => {\n const measures = measureGroup.children\n if (!measures) {\n return\n }\n\n const commonDimensions = dimensions.filter((dim) => dim.location === 'dimension')\n const groupId = measureGroup.id\n const {\n dataset: newSubDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeFor1D(dataset, commonDimensions, measures, {\n foldMeasureId: FoldMeasureId,\n foldMeasureName: FoldMeasureName,\n foldMeasureValue: FoldMeasureValue + groupId,\n unfoldDimensionGroup: UnfoldDimensionGroup,\n })\n const reshapeInfo = {\n id: groupId,\n index,\n foldInfo,\n unfoldInfo,\n }\n newDatasets.push(newSubDataset)\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n","import type { AdvancedPipe, FoldInfo, UnfoldInfo } from 'src/types'\nimport type { Encoding } from 'src/types'\n\nexport const encodingAreaRange: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const { datasetReshapeInfo, measures } = advancedVSeed\n if (!datasetReshapeInfo || !measures) {\n return result\n }\n\n const encoding = datasetReshapeInfo.reduce<Encoding>((prev, cur, index) => {\n const measure = measures[index]\n if ('children' in measure) {\n const m1 = measure.children?.[0]\n const m2 = measure.children?.[1] || m1\n const { foldInfo, unfoldInfo } = cur as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n const x = [unfoldInfo.groupId]\n const y = [m1?.id, m2?.id]\n const group = [unfoldInfo.groupId]\n const color = [foldInfo.measureName]\n\n return [\n ...prev,\n {\n x,\n y,\n group,\n color,\n },\n ] as Encoding\n } else {\n const m1 = measures[index]\n const m2 = measures[index + 1] || m1\n const { foldInfo, unfoldInfo } = cur as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n const x = [unfoldInfo.groupId]\n const y = [m1.id, m2.id]\n const group = [unfoldInfo.groupId]\n const color = [foldInfo.measureName]\n\n return [\n ...prev,\n {\n x,\n y,\n group,\n color,\n },\n ] as Encoding\n }\n }, [])\n\n return {\n ...result,\n encoding,\n }\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n areaConfig,\n annotation,\n sortXBandAxis,\n autoMeasuresBy2M1Group,\n encodingAreaRange,\n reshapeTo1D,\n pivotReshapeTo1D,\n markStyle,\n} from '../pipes'\n\nexport const areaRangeAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasuresBy2M1Group,\n autoDimensions,\n pivotAdapter([reshapeTo1D], [pivotReshapeTo1D]),\n encodingAreaRange,\n sortXBandAxis,\n areaConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { Spec, SpecPipe, SpecPipeline, SpecPipelineContext } from 'src/types'\nimport { execPipeline } from '../../../../utils'\nimport type { ICommonChartSpec, ILineSeriesSpec } from '@visactor/vchart'\n\nexport const series = (...args: SpecPipeline[]): SpecPipe => {\n const result = {\n type: 'common',\n padding: 0,\n region: [\n {\n clip: true,\n },\n ],\n } as ICommonChartSpec\n\n return (_, context) => {\n result.series = args.map((pipeline) => {\n return execPipeline<Spec, SpecPipelineContext>(pipeline, context, {})\n }) as ILineSeriesSpec[]\n\n return result\n }\n}\n","import type { ILineSeriesSpec, IRangeAreaSeriesSpec } from '@visactor/vchart'\nimport type { Color, SpecPipe } from 'src/types'\n\nexport const initAreaRange: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRangeAreaSeriesSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n const { color } = advancedVSeed.config.areaRange as {\n color: Color\n }\n\n result.type = 'rangeArea'\n result.direction = 'vertical'\n result.stack = false\n result.xField = encoding[0].x[0]\n result.yField = [encoding[0].y[0], encoding[0].y[1]]\n\n result.animation = true\n result.area = {\n style: {\n fill: color.colorScheme?.[0],\n },\n }\n\n return result\n}\n\nexport const initAreaRangeLine1: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineSeriesSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n const { color } = advancedVSeed.config.areaRange as {\n color: Color\n }\n result.type = 'line'\n result.direction = 'vertical'\n result.stack = false\n result.xField = encoding[0].x[0]\n result.yField = [encoding[0].y[0]]\n\n result.animation = true\n result.line = {\n style: {\n stroke: color.colorScheme?.[0],\n },\n }\n result.point = {\n style: {\n visible: false,\n fill: color.colorScheme?.[0],\n },\n }\n return result\n}\n\nexport const initAreaRangeLine2: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineSeriesSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n const { color } = advancedVSeed.config.areaRange as {\n color: Color\n }\n result.type = 'line'\n result.direction = 'vertical'\n result.stack = false\n result.xField = encoding[0].x[0]\n result.yField = [encoding[0].y[1]]\n\n result.animation = true\n result.line = {\n style: {\n stroke: color.colorScheme?.[0],\n },\n }\n result.point = {\n style: {\n visible: false,\n fill: color.colorScheme?.[0],\n },\n }\n return result\n}\n","import type { SpecPipe } from 'src/types'\n\nexport const tooltipDisable: SpecPipe = (spec) => {\n const result = { ...spec }\n\n result.tooltip = {\n visible: false,\n }\n return result\n}\n","import { isEmpty } from 'remeda'\nimport { autoFormatter, createFormatter, findMeasureById } from '../../../../utils'\nimport type { Datum, SpecPipe, Tooltip } from 'src/types'\n\nexport const tooltipAreaRange: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { measures, datasetReshapeInfo, chartType, locale, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n\n const { groupName } = datasetReshapeInfo[0].unfoldInfo\n\n const y = encoding[0]?.y || []\n\n result.tooltip = {\n visible: enable,\n\n dimension: {\n content: [\n {\n visible: true,\n key: (datum) => (datum && (datum[groupName] as string)) || '',\n value: (datum) => {\n if (!datum) {\n return ''\n }\n const text = y.map((id) => {\n const value = datum[id] as string | number\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n })\n return text.join(' ~ ')\n },\n shapeType: 'rectRound',\n },\n ...y.map((id: string) => {\n const measure = findMeasureById(measures, id)\n return {\n visible: true,\n key: measure?.alias || id,\n value: (datum: unknown) => {\n if (!datum) {\n return ''\n }\n const value = (datum as unknown as Datum)[id] as string | number\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n shapeType: 'rectRound',\n }\n }),\n ],\n },\n }\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n xBand,\n yLinear,\n backgroundColor,\n label,\n datasetPivot,\n pivotIndicators,\n pivotAdapter,\n initPivot,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n verticalCrosshairLine,\n initAreaRange,\n series,\n lineStyle,\n pointStyle,\n pointStateDimensionHover,\n areaStyle,\n progressive,\n tooltipAreaRange,\n tooltipDisable,\n} from '../pipes'\nimport { initAreaRangeLine1, initAreaRangeLine2 } from '../pipes/init/areaRange'\n\nconst areaRange: SpecPipeline = [\n series(\n [initAreaRange, areaStyle],\n [initAreaRangeLine1, lineStyle, pointStyle, pointStateDimensionHover, tooltipDisable],\n [initAreaRangeLine2, lineStyle, pointStyle, pointStateDimensionHover, tooltipDisable],\n ),\n datasetXY,\n progressive,\n backgroundColor,\n xBand,\n yLinear,\n label,\n tooltipAreaRange,\n verticalCrosshairLine,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotAreaRange: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n series(\n [initAreaRange, areaStyle],\n [initAreaRangeLine1, lineStyle, pointStyle, pointStateDimensionHover, tooltipDisable],\n [initAreaRangeLine2, lineStyle, pointStyle, pointStateDimensionHover, tooltipDisable],\n ),\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltipAreaRange,\n verticalCrosshairLine,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n]\n\nexport const areaRangeSpecPipeline = [pivotAdapter(areaRange, pivotAreaRange)]\n","import { areaRangeAdvancedPipeline, areaRangeSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerAreaRange = () => {\n Builder._advancedPipelineMap['areaRange'] = areaRangeAdvancedPipeline\n Builder._specPipelineMap['areaRange'] = areaRangeSpecPipeline\n}","import type { Dataset, Dimension, FoldInfo, Measure, UnfoldInfo } from 'src/types'\nimport { foldMeasures } from './foldMeasures'\nimport {\n UnfoldDimensionGroup,\n FoldMeasureId,\n FoldMeasureName,\n FoldMeasureValue,\n UnfoldDimensionGroupId,\n} from './constant'\nimport { unfoldDimensions } from './unfoldDimensions'\nimport { i18n } from '../i18n'\n\nconst emptyReshapeResult = {\n dataset: [],\n foldInfo: {\n foldMap: {},\n measureId: '',\n measureName: '',\n measureValue: '',\n },\n unfoldInfo: {\n groupName: '',\n groupId: '',\n colorItems: [],\n colorIdMap: {},\n },\n}\n/**\n * 数据重塑为1个维度1个指标\n * @param dataset\n * @param dimensions\n * @param measures\n * @returns\n */\nexport const dataReshapeFor1D2M = (\n dataset: Dataset,\n dimensions: Dimension[],\n measures: Measure[],\n options?: {\n foldMeasureId?: string\n foldMeasureName?: string\n foldMeasureValue?: string\n unfoldDimensionGroup?: string\n unfoldDimensionGroupId?: string\n },\n): {\n dataset: Dataset\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n} => {\n const {\n foldMeasureId = FoldMeasureId,\n foldMeasureName = FoldMeasureName,\n foldMeasureValue = FoldMeasureValue,\n unfoldDimensionGroup = UnfoldDimensionGroup,\n unfoldDimensionGroupId = UnfoldDimensionGroupId,\n } = options || {}\n\n if (dimensions.length === 0 && measures.length === 0) {\n return emptyReshapeResult\n }\n\n // 合并所有指标为1个指标\n const { dataset: foldedDataset, foldInfo } = foldMeasures(\n dataset,\n measures.length > 1 ? measures.slice(1) : measures,\n foldMeasureId,\n foldMeasureName,\n foldMeasureValue,\n )\n\n if (dimensions.length === 0) {\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(\n foldedDataset,\n [{ id: foldMeasureValue, alias: i18n`指标值`, location: 'dimension' }],\n [{ id: foldMeasureValue, alias: i18n`指标值` }],\n 0,\n unfoldDimensionGroup,\n unfoldDimensionGroupId,\n foldMeasureId,\n )\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n } else {\n // 展开指定的维度为指标\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(\n foldedDataset,\n [...dimensions],\n [{ id: foldMeasureValue, alias: i18n`指标值` }],\n 0,\n unfoldDimensionGroup,\n unfoldDimensionGroupId,\n foldMeasureId,\n )\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n }\n}\n","import { dataReshapeFor1D2M } from 'src/dataReshape'\nimport type { AdvancedPipe } from 'src/types'\n\n/**\n * 数据重塑, 将任意维度、任意指标, 重塑为1个维度2个指标.\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const reshapeTo1D2M: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { dimensions, measures } = advancedVSeed\n if (!measures || !dimensions || !dataset) {\n return result\n }\n\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n\n const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor1D2M(dataset, dimensions, measures)\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: [\n {\n id: '1D2M',\n index: 0,\n foldInfo,\n unfoldInfo,\n },\n ],\n }\n}\n","import { FoldMeasureId, FoldMeasureName, FoldMeasureValue, UnfoldDimensionGroup } from 'src/dataReshape/constant'\nimport { dataReshapeFor1D2M } from 'src/dataReshape'\nimport type { AdvancedPipe, Dataset, DatasetReshapeInfo, Dimensions, MeasureGroup } from 'src/types'\n\n/**\n * 数据重塑为透视结构, 如果存在指标分组, 则将数据按组划分. 如果存在行列维度, 则生成行列树结构.\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const pivotReshapeTo1D2M: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { measures } = advancedVSeed\n const dimensions = advancedVSeed.dimensions as Dimensions\n\n if (!measures || !dimensions) {\n return result\n }\n\n const measureGroups: MeasureGroup[] = []\n if (measures) {\n measures.forEach((measure: MeasureGroup) => {\n if (measure.children && measure.children.length > 0) {\n measureGroups.push(measure)\n }\n })\n }\n const newDatasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n measureGroups.forEach((measureGroup, index) => {\n const measures = measureGroup.children\n if (!measures) {\n return\n }\n\n const commonDimensions = dimensions.filter((dim) => dim.location === 'dimension')\n const groupId = measureGroup.id\n const {\n dataset: newSubDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeFor1D2M(dataset, commonDimensions, measures, {\n foldMeasureId: FoldMeasureId,\n foldMeasureName: FoldMeasureName,\n foldMeasureValue: FoldMeasureValue + groupId,\n unfoldDimensionGroup: UnfoldDimensionGroup,\n })\n const reshapeInfo = {\n id: groupId,\n index,\n foldInfo,\n unfoldInfo,\n }\n newDatasets.push(newSubDataset)\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n","import { findFirstMeasure } from 'src/pipeline/utils'\nimport type { AdvancedPipe, FoldInfo, UnfoldInfo } from 'src/types'\nimport type { Encoding } from 'src/types'\n\nexport const encodingYY: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const { datasetReshapeInfo, measures } = advancedVSeed\n if (!datasetReshapeInfo || !measures) {\n return result\n }\n\n const firstMeasure = findFirstMeasure(measures)\n const encoding = datasetReshapeInfo.reduce<Encoding>((prev, cur) => {\n const { foldInfo, unfoldInfo } = cur as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n const x = [firstMeasure?.id]\n const y = [foldInfo.measureValue]\n const group = [unfoldInfo.groupId]\n const color = [unfoldInfo.groupId]\n\n return [\n ...prev,\n {\n x,\n y,\n group,\n color,\n },\n ] as Encoding\n }, [])\n\n return {\n ...result,\n encoding,\n }\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n annotation,\n markStyle,\n scatterConfig,\n reshapeTo1D2M,\n pivotReshapeTo1D2M,\n encodingYY,\n} from '../pipes'\n\nexport const scatterAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo1D2M], [pivotReshapeTo1D2M]),\n encodingYY,\n scatterConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IScatterChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initScatter: SpecPipe = (spec, context) => {\n const result = { ...spec } as IScatterChartSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n\n result.type = 'scatter'\n result.direction = 'vertical'\n result.xField = encoding[0].x[0]\n result.yField = encoding[0].y[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n","import type { ICartesianCrosshairSpec, ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const horizontalCrosshairLine: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n\n const config = advancedVSeed.config?.[chartType as 'line']?.crosshairLine\n if (!config) {\n return result\n }\n\n if (!result.crosshair) {\n result.crosshair = {}\n }\n\n const { visible = true, lineColor, labelColor, labelVisible, labelBackgroundColor } = config\n\n const crosshair = result.crosshair as ICartesianCrosshairSpec\n crosshair.yField = {\n visible,\n line: {\n type: 'line',\n style: {\n lineWidth: 1,\n opacity: 1,\n stroke: lineColor,\n lineDash: [4, 2],\n },\n },\n label: {\n visible: labelVisible,\n labelBackground: {\n visible: labelVisible,\n style: {\n fill: labelBackgroundColor,\n },\n },\n style: {\n fill: labelColor,\n },\n },\n }\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n yLinear,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n initPivot,\n datasetPivot,\n pivotDiscreteLegend,\n pivotIndicators,\n pivotAdapter,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n pointStyle,\n verticalCrosshairLine,\n xLinear,\n horizontalCrosshairLine,\n pointStateHover,\n initScatter,\n progressive\n} from '../pipes'\n\nconst scatter: SpecPipeline = [\n initScatter,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n xLinear,\n yLinear,\n label,\n tooltip,\n verticalCrosshairLine,\n horizontalCrosshairLine,\n discreteLegend,\n pointStyle,\n pointStateHover,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotScatter: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initScatter,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n xLinear,\n yLinear,\n label,\n tooltip,\n verticalCrosshairLine,\n horizontalCrosshairLine,\n pointStyle,\n pointStateHover,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const scatterSpecPipeline: SpecPipeline = [pivotAdapter(scatter, pivotScatter)]\n","import { scatterAdvancedPipeline, scatterSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerScatter = () => {\n Builder._advancedPipelineMap['scatter'] = scatterAdvancedPipeline\n Builder._specPipelineMap['scatter'] = scatterSpecPipeline\n}","import { dataReshapeFor2D1M, FoldPrimaryMeasureValue, FoldSecondaryMeasureValue } from 'src/dataReshape'\nimport type { AdvancedPipe, Dimension, FoldInfo, MeasureGroup, UnfoldInfo } from 'src/types'\n\n/**\n * 数据重塑, 将任意维度、任意指标, 重塑为2个维度2个指标.\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const reshapeTo2D2M: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { dimensions, measures } = advancedVSeed\n\n if (!measures || !dimensions || !dataset) {\n return result\n }\n\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n if (measures.length > 2) {\n throw new Error('measures can not be more than 2')\n }\n\n const commonDimensions = dimensions.filter((dim) => (dim as Dimension).location === 'dimension')\n\n const datasets = []\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const primaryMeasures = measures[0] as MeasureGroup\n const secondaryMeasures = (measures[1] || []) as MeasureGroup\n\n if (primaryMeasures && primaryMeasures.children) {\n const {\n dataset: newDatasets,\n foldInfo,\n unfoldInfo,\n } = dataReshapeFor2D1M(dataset, commonDimensions, primaryMeasures.children, {\n foldMeasureValue: FoldPrimaryMeasureValue,\n })\n datasets.push(newDatasets)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n if (secondaryMeasures && secondaryMeasures.children) {\n const {\n dataset: newDatasets,\n foldInfo,\n unfoldInfo,\n } = dataReshapeFor2D1M(dataset, commonDimensions, secondaryMeasures.children, {\n foldMeasureValue: FoldSecondaryMeasureValue,\n })\n datasets.push(newDatasets)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n const unfoldInfo: UnfoldInfo = {\n groupName: unfoldInfoList[0].groupName,\n groupId: unfoldInfoList[0].groupId,\n colorItems: unfoldInfoList.flatMap((d) => d.colorItems),\n colorIdMap: unfoldInfoList.reduce((prev, cur) => ({ ...prev, ...cur.colorIdMap }), {}),\n }\n\n return {\n ...result,\n dataset: datasets,\n datasetReshapeInfo: [\n {\n id: '2D2M',\n index: 0,\n foldInfo: foldInfoList[0],\n foldInfoList: foldInfoList,\n unfoldInfo: unfoldInfo,\n },\n ],\n }\n}\n","import { dataReshapeFor2D1M, FoldPrimaryMeasureValue, FoldSecondaryMeasureValue } from 'src/dataReshape'\nimport type {\n AdvancedPipe,\n Dataset,\n DatasetReshapeInfo,\n Dimension,\n FoldInfo,\n MeasureGroup,\n UnfoldInfo,\n} from 'src/types'\n\n/**\n * 数据重塑, 将任意维度、任意指标, 重塑为2个维度2个指标.\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const pivotReshapeTo2D2M: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { dimensions, measures } = advancedVSeed\n\n if (!measures || !dimensions || !dataset) {\n return result\n }\n\n const commonDimensions = dimensions.filter((dim) => (dim as Dimension).location === 'dimension')\n\n const datasetList: Dataset[] = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n measures.forEach((measureGroup: MeasureGroup, index) => {\n const measures = measureGroup.children || []\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n if (measures.length > 2) {\n throw new Error('measures can not be more than 2')\n }\n\n const datasets = []\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const primaryMeasures = measures[0] as MeasureGroup\n const secondaryMeasures = (measures[1] || measures[0]) as MeasureGroup\n\n if (primaryMeasures && primaryMeasures.children) {\n const {\n dataset: newDatasets,\n foldInfo,\n unfoldInfo,\n } = dataReshapeFor2D1M(dataset, commonDimensions, primaryMeasures.children, {\n foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`,\n })\n datasets.push(newDatasets)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n if (secondaryMeasures && secondaryMeasures.children) {\n const {\n dataset: newDatasets,\n foldInfo,\n unfoldInfo,\n } = dataReshapeFor2D1M(dataset, commonDimensions, secondaryMeasures.children, {\n foldMeasureValue: `${FoldSecondaryMeasureValue}${index}`,\n })\n datasets.push(newDatasets)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n datasetList.push(datasets.flat(2))\n\n const unfoldInfo: UnfoldInfo = {\n groupName: unfoldInfoList[0].groupName,\n groupId: unfoldInfoList[0].groupId,\n colorItems: unfoldInfoList.flatMap((d) => d.colorItems),\n colorIdMap: unfoldInfoList.reduce((prev, cur) => ({ ...prev, ...cur.colorIdMap }), {}),\n }\n\n const reshapeInfo = {\n id: `2D2M-${index}`,\n index,\n foldInfo: foldInfoList[0],\n unfoldInfo: unfoldInfo,\n foldInfoList: foldInfoList,\n }\n\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n return {\n ...result,\n dataset: datasetList,\n datasetReshapeInfo,\n }\n}\n","import type { AdvancedPipe, Dimensions, FoldInfo, UnfoldInfo } from 'src/types'\nimport type { Encoding } from 'src/types'\n\nexport const encodingXYY: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const { datasetReshapeInfo, dimensions } = advancedVSeed\n if (!datasetReshapeInfo || !dimensions) {\n return result\n }\n\n const xDimension =\n (dimensions as Dimensions).find(\n (item) => item.location !== 'rowDimension' && item.location !== 'columnDimension',\n ) || dimensions[0]\n\n const isZeroDimension = dimensions.length === 0\n\n const encoding = datasetReshapeInfo.reduce<Encoding>((prev, cur) => {\n const { foldInfoList, unfoldInfo } = cur as {\n foldInfoList: FoldInfo[]\n unfoldInfo: UnfoldInfo\n }\n\n const x = [isZeroDimension ? foldInfoList[0].measureName : xDimension?.id]\n const y = foldInfoList.map((d) => d.measureValue)\n const group = [unfoldInfo.groupId]\n const color = [foldInfoList[0].measureName]\n\n return [\n ...prev,\n {\n x,\n y,\n group,\n color,\n },\n ] as Encoding\n }, [])\n\n return {\n ...result,\n encoding,\n }\n}\n","import { pick } from 'remeda'\nimport type { AdvancedPipe, AdvancedVSeed, Config } from 'src/types'\n\nexport const dualAxisConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const config = pick(vseed, [\n // common\n 'backgroundColor',\n 'color',\n 'label',\n 'legend',\n 'tooltip',\n\n // only for dualAxis\n 'dualChartType',\n 'primaryYAxis',\n 'secondaryYAxis',\n 'crosshairLine',\n ]) as Config['dualAxis']\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n","import { measureDepth } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Datum, DualAxis, DualMeasures, MeasureGroup, MeasureTree } from 'src/types'\n\nexport const autoDualMeasures: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context as {\n vseed: DualAxis\n }\n const { dataset, dualMeasures, measures } = vseed\n\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return result\n }\n\n if (dualMeasures) {\n result.measures = dualMeasuresToMeasureTree(dualMeasures)\n return result\n }\n if (measures && measureDepth(measures) > 1) {\n result.measures = measures\n return result\n }\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n const newMeasures =\n measures ||\n Object.keys(sample)\n .filter((key) => {\n return top100dataset.some((item) => typeof item[key] === 'number') && !['', null, undefined].includes(key)\n })\n .map((measure) => ({\n id: measure,\n alias: measure,\n }))\n\n if (newMeasures.length === 0) {\n result.measures = []\n return result\n } else if (newMeasures.length === 1) {\n result.measures = [\n {\n id: 'primary',\n alias: 'primary',\n children: newMeasures,\n },\n ]\n return result\n } else if (newMeasures.length > 1) {\n result.measures = [\n {\n id: 'primary',\n alias: 'primary',\n children: newMeasures.slice(0, 1),\n },\n {\n id: 'secondary',\n alias: 'secondary',\n children: newMeasures.slice(1),\n },\n ]\n }\n\n return result\n}\n\nconst dualMeasuresToMeasureTree = (dualMeasures: DualMeasures): MeasureTree => {\n const measureTree = dualMeasures.map((item, index): MeasureGroup => {\n const { primaryMeasures, secondaryMeasures } = item\n const groupChildren: MeasureGroup[] = []\n\n let id: string = ''\n if (primaryMeasures) {\n const arrPrimaryMeasures = Array.isArray(primaryMeasures) ? primaryMeasures : [primaryMeasures]\n const alias = arrPrimaryMeasures.map((item) => item.alias || item.id).toString()\n id += alias\n groupChildren.push({\n id: `${index}-primary`,\n alias: arrPrimaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrPrimaryMeasures,\n })\n }\n if (secondaryMeasures) {\n const arrSecondaryMeasures = Array.isArray(secondaryMeasures) ? secondaryMeasures : [secondaryMeasures]\n const alias = arrSecondaryMeasures.map((item) => item.alias || item.id).toString()\n id += alias\n groupChildren.push({\n id: `${index}-secondary`,\n alias: arrSecondaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrSecondaryMeasures,\n })\n }\n\n return {\n id,\n alias: id,\n children: groupChildren,\n }\n })\n\n // 只有1个双轴图, 仅返回2层, vchart 绘制双轴图\n if (dualMeasures.length === 1) {\n return measureTree[0].children || []\n }\n\n // 有多个双轴图, 返回3层, pivot chart 绘制组合双轴图\n return measureTree\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n annotation,\n markStyle,\n sortXBandAxis,\n sortLegend,\n reshapeTo2D2M,\n encodingXYY,\n pivotReshapeTo2D2M,\n dualAxisConfig,\n} from '../pipes'\nimport { autoDualMeasures } from '../pipes/init/autoDualMeasures'\n\nexport const dualAxisAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoDualMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D2M], [pivotReshapeTo2D2M]),\n encodingXYY,\n sortXBandAxis,\n sortLegend,\n dualAxisConfig,\n theme,\n markStyle,\n annotation\n]\n","import type { IBarSeriesSpec, ILineSeriesSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initDualAxisPrimary: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarSeriesSpec\n const { advancedVSeed } = context\n const { encoding, datasetReshapeInfo } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n\n result.id = `${datasetReshapeInfo[0].id}-primary-series`\n result.type = 'bar'\n result.direction = 'vertical'\n result.xField = encoding[0].x[0]\n result.yField = encoding[0].y[0]\n result.seriesField = encoding[0].group[0]\n result.animation = true\n\n return result\n}\n\nexport const initDualAxisSecondary: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineSeriesSpec\n const { advancedVSeed } = context\n const { encoding, datasetReshapeInfo } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n\n result.id = `${datasetReshapeInfo[0].id}-secondary-series`\n result.type = 'line'\n result.direction = 'vertical'\n result.xField = encoding[0].x[0]\n result.yField = encoding[0].y[1]\n result.seriesField = encoding[0].group[0]\n\n result.animation = true\n\n return result\n}\n","import type { IBarSeriesSpec, ISeriesSpec } from '@visactor/vchart'\nimport type { DualChartType, SpecPipe } from 'src/types'\n\nexport const dualChartTypePrimary: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISeriesSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { datasetReshapeInfo } = advancedVSeed\n const index = datasetReshapeInfo[0].index\n\n const config =\n advancedVSeed.config?.[chartType as 'dualAxis']?.dualChartType ||\n ({\n primary: 'column',\n secondary: 'line',\n } as DualChartType)\n\n const primary = Array.isArray(config) ? config[index].primary || config[0].primary : config.primary\n\n switch (primary) {\n case 'line': {\n result.type = 'line'\n break\n }\n case 'column': {\n result.type = 'bar'\n break\n }\n case 'columnParallel': {\n const columnSpec = result as IBarSeriesSpec\n if (Array.isArray(columnSpec.xField)) {\n columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.groupId)\n } else if (columnSpec.xField) {\n columnSpec.xField = [columnSpec.xField, datasetReshapeInfo[0].unfoldInfo.groupId]\n }\n columnSpec.type = 'bar'\n break\n }\n // @ts-expect-error 'columnPercent' 和 'areaPercent' 会改变轴值域为[0,1], VTable不支持.\n case 'columnPercent': {\n result.type = 'bar'\n result.percent = true\n break\n }\n case 'area': {\n result.type = 'area'\n break\n }\n // @ts-expect-error 'columnPercent' 和 'areaPercent' 会改变轴值域为[0,1], VTable不支持.\n case 'areaPercent': {\n result.type = 'area'\n result.percent = true\n break\n }\n case 'scatter': {\n result.type = 'scatter'\n break\n }\n default:\n result.type = primary\n }\n\n return result\n}\n\nexport const dualChartTypeSecondary: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISeriesSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { datasetReshapeInfo } = advancedVSeed\n const config =\n advancedVSeed.config?.[chartType as 'dualAxis']?.dualChartType ||\n ({\n primary: 'column',\n secondary: 'line',\n } as DualChartType)\n\n const index = datasetReshapeInfo[0].index\n const secondary = Array.isArray(config) ? config[index].secondary || config[0].secondary : config.secondary\n\n switch (secondary) {\n case 'line': {\n result.type = 'line'\n break\n }\n case 'column': {\n result.type = 'bar'\n break\n }\n case 'columnParallel': {\n const columnSpec = result as IBarSeriesSpec\n if (Array.isArray(columnSpec.xField)) {\n columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.groupId)\n } else if (columnSpec.xField) {\n columnSpec.xField = [columnSpec.xField, datasetReshapeInfo[0].unfoldInfo.groupId]\n }\n columnSpec.type = 'bar'\n break\n }\n // @ts-expect-error 'columnPercent' 和 'areaPercent' 会改变轴值域为[0,1], VTable不支持.\n case 'columnPercent': {\n result.type = 'bar'\n result.percent = true\n break\n }\n case 'area': {\n result.type = 'area'\n break\n }\n // @ts-expect-error 'columnPercent' 和 'areaPercent' 会改变轴值域为[0,1], VTable不支持.\n case 'areaPercent': {\n result.type = 'area'\n result.percent = true\n break\n }\n case 'scatter': {\n result.type = 'scatter'\n break\n }\n default:\n result.type = secondary\n }\n\n return result\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { isPivotChart } from 'src/pipeline/utils'\nimport type { SpecPipe } from 'src/types'\n\nexport const datasetPrimary: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { encoding, analysis, datasetReshapeInfo } = advancedVSeed\n const { orderMapping = {} } = analysis ?? {}\n const x = encoding[0]?.x?.[0]\n const group = encoding[0]?.group?.[0]\n const id = datasetReshapeInfo[0].id\n\n const fields: Record<string, object> = {}\n\n if (x) {\n const order = orderMapping[x]\n if (order) {\n fields[x] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[x] = {\n sortIndex: 0,\n }\n }\n }\n\n if (group) {\n const order = orderMapping[group]\n if (order) {\n fields[group] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[group] = {\n sortIndex: 0,\n }\n }\n }\n\n return {\n ...spec,\n data: {\n id: `${id}-primary-dataset`,\n // 透视表不使用 dataValues\n values: isPivotChart(vseed) ? undefined : advancedVSeed.dataset[0],\n fields: fields,\n },\n } as ISpec\n}\n\nexport const datasetSecondary: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { encoding, analysis, datasetReshapeInfo } = advancedVSeed\n const { orderMapping = {} } = analysis ?? {}\n const x = encoding[0]?.x?.[0]\n const group = encoding[0]?.group?.[0]\n const id = datasetReshapeInfo[0].id\n\n const fields: Record<string, object> = {}\n\n if (x) {\n const order = orderMapping[x]\n if (order) {\n fields[x] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[x] = {\n sortIndex: 0,\n }\n }\n }\n\n if (group) {\n const order = orderMapping[group]\n if (order) {\n fields[group] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[group] = {\n sortIndex: 0,\n }\n }\n }\n\n return {\n ...spec,\n data: {\n id: `${id}-secondary-dataset`,\n // 透视表不使用 dataValues\n values: isPivotChart(vseed) ? undefined : advancedVSeed.dataset[1],\n fields: fields,\n },\n } as ISpec\n}\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport type { ILineLikeLabelSpec } from '@visactor/vchart/esm/series/mixin/interface'\nimport { autoFormatter, createFormatter, findMeasureById } from '../../../../utils'\nimport type { Datum, FoldInfo, Label, SpecPipe } from 'src/types'\nimport { isEmpty, isNullish } from 'remeda'\n\nexport const labelPrimary: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed } = context\n const { measures, datasetReshapeInfo, locale } = advancedVSeed\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { label: Label }\n\n if (!baseConfig || !baseConfig.label) {\n return result\n }\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n const { measureId, measureValue } = foldInfoList[0]\n const { label } = baseConfig\n const { enable } = label\n\n result.label = {\n visible: enable,\n formatMethod: (value: string, datum: Datum) => {\n const result = []\n\n const formatValue = (value: number) => {\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return value\n }\n\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n }\n\n result.push(formatValue(datum[measureValue] as number))\n\n return result.join(' ')\n },\n } as ILineLikeLabelSpec\n return result\n}\n\nexport const labelSecondary: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed } = context\n const { measures, datasetReshapeInfo, locale } = advancedVSeed\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { label: Label }\n\n if (!baseConfig || !baseConfig.label) {\n return result\n }\n if (isNullish(datasetReshapeInfo[0].foldInfoList?.[1])) {\n return result\n }\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n\n const { measureId, measureValue } = foldInfoList[1]\n const { label } = baseConfig\n const { enable } = label\n\n result.label = {\n visible: enable,\n formatMethod: (value: string, datum: Datum) => {\n const result = []\n\n const formatValue = (value: number) => {\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return value\n }\n\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n }\n\n result.push(formatValue(datum[measureValue] as number))\n\n return result.join(' ')\n },\n } as ILineLikeLabelSpec\n return result\n}\n","import { isEmpty, isNullish } from 'remeda'\nimport { autoFormatter, createFormatter, findMeasureById } from '../../../../utils'\nimport type { Datum, FoldInfo, SpecPipe, Tooltip, UnfoldInfo } from 'src/types'\n\nexport const tooltipPrimary: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { measures, datasetReshapeInfo, chartType, locale, dimensions } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n const unfoldInfo = datasetReshapeInfo[0].unfoldInfo\n\n const { measureId, measureValue, measureName } = foldInfoList[0]\n const { groupName } = unfoldInfo\n\n result.tooltip = {\n visible: enable,\n\n mark: {\n title: {\n visible: true,\n },\n content: [\n ...dimensions.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (datum: unknown) => {\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return (datum as Datum) && ((datum as Datum)[item.id] as string)\n },\n value: (datum: unknown) => {\n return (datum as Datum) && ((datum as Datum)[item.id] as string)\n },\n })),\n {\n visible: true,\n hasShape: true,\n key: (datum) => (datum && (datum[measureName || groupName] as string)) || '',\n value: (datum) => {\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n },\n ],\n },\n dimension: {\n content: [\n {\n visible: true,\n key: (datum) => (datum && (datum[groupName] as string)) || '',\n value: (datum) => {\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n shapeType: 'rectRound',\n },\n ],\n },\n }\n return result\n}\n\nexport const tooltipSecondary: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { measures, datasetReshapeInfo, chartType, locale, dimensions } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n\n if (isNullish(datasetReshapeInfo[0].foldInfoList?.[1])) {\n return result\n }\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n const unfoldInfo = datasetReshapeInfo[0].unfoldInfo as UnfoldInfo\n const { measureId, measureValue, measureName } = foldInfoList[1]\n const { groupName } = unfoldInfo\n\n result.tooltip = {\n visible: enable,\n\n mark: {\n title: {\n visible: true,\n },\n content: [\n ...dimensions.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (datum: unknown) => {\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return (datum as Datum) && ((datum as Datum)[item.id] as string)\n },\n value: (datum: unknown) => {\n return (datum as Datum) && ((datum as Datum)[item.id] as string)\n },\n })),\n {\n visible: true,\n hasShape: true,\n key: (datum) => (datum && (datum[measureName || groupName] as string)) || '',\n value: (datum) => {\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n },\n ],\n },\n dimension: {\n content: [\n {\n visible: true,\n key: (datum) => (datum && (datum[groupName] as string)) || '',\n value: (datum) => {\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n shapeType: 'rectRound',\n },\n ],\n },\n }\n return result\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { LINEAR_AXIS_INNER_OFFSET_TOP } from '../../../../utils/constant'\nimport { autoFormatter } from '../../../../utils'\nimport type { SpecPipe, YLinearAxis } from 'src/types'\nimport { isEmpty } from 'remeda'\n\nexport const yLinearPrimary: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { locale, datasetReshapeInfo } = advancedVSeed\n // TODO: default config missing\n const index = datasetReshapeInfo[0].index\n const primaryYAxis = advancedVSeed.config?.[chartType as 'dualAxis']?.primaryYAxis as YLinearAxis | YLinearAxis[]\n const config = Array.isArray(primaryYAxis) ? primaryYAxis[index] || primaryYAxis[0] : primaryYAxis\n\n if (datasetReshapeInfo[0].foldInfoList?.[0] && isEmpty(datasetReshapeInfo[0].foldInfoList[0].foldMap)) {\n return result\n }\n const id = `${datasetReshapeInfo[0].id}-primary-axis`\n const seriesId = `${datasetReshapeInfo[0].id}-primary-series`\n\n if (!result.axes) {\n result.axes = []\n }\n\n if (!config) {\n result.axes = [\n ...result.axes,\n {\n visible: true,\n id,\n seriesId,\n type: 'linear',\n orient: 'left',\n sync: {\n axisId: `${datasetReshapeInfo[0].id}-secondary-axis`,\n tickAlign: false,\n zeroAlign: true,\n },\n },\n ] as ISpec['axes']\n return result\n }\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n\n zero,\n nice,\n inverse,\n max,\n min,\n log,\n logBase = 10,\n } = config\n\n const linearAxis = {\n visible,\n id,\n seriesId,\n sync: {\n axisId: `${datasetReshapeInfo[0].id}-secondary-axis`,\n tickAlign: false,\n zeroAlign: true,\n },\n\n type: log ? 'log' : 'linear',\n base: logBase,\n orient: 'left',\n nice,\n zero: log ? false : zero,\n inverse,\n max,\n min,\n label: {\n visible: label?.visible,\n formatMethod: (value: string) => {\n return autoFormatter(value, locale)\n },\n style: {\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n },\n title: {\n visible: title?.visible,\n text: title?.titleText,\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n innerOffset: {\n top: LINEAR_AXIS_INNER_OFFSET_TOP,\n // bottom: LINEAR_AXIS_INNER_OFFSET_TOP,\n },\n }\n\n result.axes = [...result.axes, linearAxis] as ISpec['axes']\n\n return result\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { LINEAR_AXIS_INNER_OFFSET_TOP } from '../../../../utils/constant'\nimport { autoFormatter } from '../../../../utils'\nimport type { SpecPipe, YLinearAxis } from 'src/types'\nimport { isNullish } from 'remeda'\n\nexport const yLinearSecondary: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { locale, datasetReshapeInfo } = advancedVSeed\n // TODO: default config missing\n const index = datasetReshapeInfo[0].index\n const secondaryYAxis = advancedVSeed.config?.[chartType as 'dualAxis']?.secondaryYAxis as YLinearAxis | YLinearAxis[]\n const config = Array.isArray(secondaryYAxis) ? secondaryYAxis[index] || secondaryYAxis[0] : secondaryYAxis\n\n if (isNullish(datasetReshapeInfo[0].foldInfoList?.[1])) {\n return result\n }\n\n const id = `${datasetReshapeInfo[0].id}-secondary-axis`\n const seriesId = `${datasetReshapeInfo[0].id}-secondary-series`\n\n if (!result.axes) {\n result.axes = []\n }\n\n if (!config) {\n result.axes = [\n ...result.axes,\n {\n visible: true,\n id,\n seriesId,\n type: 'linear',\n orient: 'right',\n },\n ] as ISpec['axes']\n return result\n }\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n\n zero,\n nice,\n inverse,\n max,\n min,\n log,\n logBase = 10,\n } = config\n\n const linearAxis = {\n visible,\n id,\n seriesId,\n type: log ? 'log' : 'linear',\n base: logBase,\n orient: 'right',\n nice,\n zero: log ? false : zero,\n inverse,\n max,\n min,\n label: {\n visible: label?.visible,\n formatMethod: (value: string) => {\n return autoFormatter(value, locale)\n },\n style: {\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n },\n title: {\n visible: title?.visible,\n text: title?.titleText,\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n innerOffset: {\n top: LINEAR_AXIS_INNER_OFFSET_TOP,\n // bottom: LINEAR_AXIS_INNER_OFFSET_TOP,\n },\n }\n\n result.axes = [...result.axes, linearAxis] as ISpec['axes']\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n xBand,\n backgroundColor,\n discreteLegend,\n color,\n initPivot,\n datasetPivot,\n pivotDiscreteLegend,\n pivotIndicators,\n pivotAdapter,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n pointStyle,\n lineStyle,\n pointStateDimensionHover,\n progressive,\n series,\n datasetPrimary,\n datasetSecondary,\n areaStyle,\n barStyle,\n verticalCrosshairRect,\n yLinearSecondary,\n initDualAxisPrimary,\n initDualAxisSecondary,\n labelPrimary,\n labelSecondary,\n tooltipPrimary,\n tooltipSecondary,\n yLinearPrimary,\n dualChartTypePrimary,\n dualChartTypeSecondary,\n} from '../pipes'\n\nconst dualAxis: SpecPipeline = [\n series(\n [\n initDualAxisPrimary,\n dualChartTypePrimary,\n datasetPrimary,\n labelPrimary,\n tooltipPrimary,\n progressive,\n\n barStyle,\n pointStyle,\n pointStateDimensionHover,\n lineStyle,\n areaStyle,\n ],\n [\n initDualAxisSecondary,\n dualChartTypeSecondary,\n datasetSecondary,\n labelSecondary,\n tooltipSecondary,\n progressive,\n\n barStyle,\n pointStyle,\n pointStateDimensionHover,\n lineStyle,\n areaStyle,\n ],\n ),\n xBand,\n yLinearPrimary,\n yLinearSecondary,\n\n color,\n backgroundColor,\n discreteLegend,\n\n verticalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotDualAxis: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n series(\n [\n initDualAxisPrimary,\n dualChartTypePrimary,\n datasetPrimary,\n labelPrimary,\n tooltipPrimary,\n progressive,\n\n barStyle,\n pointStyle,\n pointStateDimensionHover,\n lineStyle,\n areaStyle,\n ],\n [\n initDualAxisSecondary,\n dualChartTypeSecondary,\n datasetSecondary,\n labelSecondary,\n tooltipSecondary,\n progressive,\n\n barStyle,\n pointStyle,\n pointStateDimensionHover,\n lineStyle,\n areaStyle,\n ],\n ),\n xBand,\n yLinearPrimary,\n yLinearSecondary,\n color,\n backgroundColor,\n verticalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const dualAxisSpecPipeline: SpecPipeline = [pivotAdapter(dualAxis, pivotDualAxis)]\n","import { dualAxisAdvancedPipeline, dualAxisSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerDualAxis = () => {\n Builder._advancedPipelineMap['dualAxis'] = dualAxisAdvancedPipeline\n Builder._specPipelineMap['dualAxis'] = dualAxisSpecPipeline\n}\n","import type { Dataset, Dimension, FoldInfo, Measure, UnfoldInfo } from 'src/types'\nimport { foldMeasures } from './foldMeasures'\nimport {\n UnfoldDimensionGroup,\n FoldMeasureId,\n FoldMeasureName,\n FoldMeasureValue,\n UnfoldDimensionGroupId,\n} from './constant'\nimport { unfoldDimensions } from './unfoldDimensions'\nimport { i18n } from '../i18n'\n\nconst emptyReshapeResult = {\n dataset: [],\n foldInfo: {\n foldMap: {},\n measureId: '',\n measureName: '',\n measureValue: '',\n },\n unfoldInfo: {\n groupName: '',\n groupId: '',\n colorItems: [],\n colorIdMap: {},\n },\n}\n/**\n * 数据重塑为1个维度1个指标\n * @param dataset\n * @param dimensions\n * @param measures\n * @returns\n */\nexport const dataReshapeFor1D1M = (\n dataset: Dataset,\n dimensions: Dimension[],\n measures: Measure[],\n options?: {\n foldMeasureId?: string\n foldMeasureName?: string\n foldMeasureValue?: string\n unfoldDimensionGroup?: string\n unfoldDimensionGroupId?: string\n },\n): {\n dataset: Dataset\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n} => {\n const {\n foldMeasureId = FoldMeasureId,\n foldMeasureName = FoldMeasureName,\n foldMeasureValue = FoldMeasureValue,\n unfoldDimensionGroup = UnfoldDimensionGroup,\n unfoldDimensionGroupId = UnfoldDimensionGroupId,\n } = options || {}\n\n if (dimensions.length === 0 && measures.length === 0) {\n return emptyReshapeResult\n }\n\n // 合并所有指标为1个指标\n const { dataset: foldedDataset, foldInfo } = foldMeasures(\n dataset,\n measures,\n foldMeasureId,\n foldMeasureName,\n foldMeasureValue,\n )\n\n if (dimensions.length === 0) {\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(\n foldedDataset,\n [{ id: foldMeasureName, alias: i18n`指标名称`, location: 'dimension' }],\n [{ id: foldMeasureValue, alias: i18n`指标值` }],\n 0,\n unfoldDimensionGroup,\n unfoldDimensionGroupId,\n foldMeasureId,\n )\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n } else {\n const dims =\n measures.length === 1\n ? ([...dimensions] as Dimension[])\n : ([...dimensions, { id: foldMeasureName, alias: i18n`指标名称`, location: 'dimension' }] as Dimension[])\n // 展开指定的维度为指标\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(\n foldedDataset,\n dims,\n [{ id: foldMeasureValue, alias: i18n`指标值` }],\n 0,\n unfoldDimensionGroup,\n unfoldDimensionGroupId,\n foldMeasureId,\n )\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n }\n}\n","import { dataReshapeFor1D1M } from 'src/dataReshape'\nimport type { AdvancedPipe } from 'src/types'\n\n/**\n * 数据重塑, 将任意维度、任意指标, 重塑为2个维度1个指标.\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const reshapeTo1D1M: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { dimensions, measures } = advancedVSeed\n if (!measures || !dimensions || !dataset) {\n return result\n }\n\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n\n const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor1D1M(dataset, dimensions, measures)\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: [\n {\n id: '1D1M',\n index: 0,\n foldInfo,\n unfoldInfo,\n },\n ],\n }\n}\n","import { FoldMeasureId, FoldMeasureName, FoldMeasureValue, UnfoldDimensionGroup } from 'src/dataReshape/constant'\nimport { dataReshapeFor1D1M } from 'src/dataReshape'\nimport type { AdvancedPipe, Dataset, DatasetReshapeInfo, Dimensions, MeasureGroup } from 'src/types'\n\n/**\n * 数据重塑为透视结构, 如果存在指标分组, 则将数据按组划分. 如果存在行列维度, 则生成行列树结构.\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const pivotReshapeTo1D1M: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { measures } = advancedVSeed\n const dimensions = advancedVSeed.dimensions as Dimensions\n\n if (!measures || !dimensions) {\n return result\n }\n\n const measureGroups: MeasureGroup[] = []\n if (measures) {\n measures.forEach((measure: MeasureGroup) => {\n if (measure.children && measure.children.length > 0) {\n measureGroups.push(measure)\n }\n })\n }\n const newDatasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n measureGroups.forEach((measureGroup, index) => {\n const measures = measureGroup.children\n if (!measures) {\n return\n }\n\n const commonDimensions = dimensions.filter((dim) => dim.location === 'dimension')\n const groupId = measureGroup.id\n const {\n dataset: newSubDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeFor1D1M(dataset, commonDimensions, measures, {\n foldMeasureId: FoldMeasureId,\n foldMeasureName: FoldMeasureName,\n foldMeasureValue: FoldMeasureValue + groupId,\n unfoldDimensionGroup: UnfoldDimensionGroup,\n })\n const reshapeInfo = {\n id: groupId,\n index,\n foldInfo,\n unfoldInfo,\n }\n newDatasets.push(newSubDataset)\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n","import type { AdvancedPipe, FoldInfo, UnfoldInfo } from 'src/types'\nimport type { Encoding } from 'src/types'\n\nexport const encodingPie: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const { datasetReshapeInfo } = advancedVSeed\n if (!datasetReshapeInfo) {\n return result\n }\n\n const encoding = datasetReshapeInfo.reduce<Encoding>((prev, cur) => {\n const { foldInfo, unfoldInfo } = cur as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n const radius = [foldInfo.measureValue]\n const angle = [unfoldInfo.groupId]\n const group = [unfoldInfo.groupId]\n const color = [unfoldInfo.groupId]\n\n return [\n ...prev,\n {\n angle,\n radius,\n group,\n color,\n },\n ] as Encoding\n }, [])\n\n return {\n ...result,\n encoding,\n }\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n reshapeTo1D1M,\n pivotReshapeTo1D1M,\n encodingPie,\n pieConfig,\n annotation,\n} from '../pipes'\n\nexport const pieAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo1D1M], [pivotReshapeTo1D1M]),\n encodingPie,\n pieConfig,\n theme,\n annotation\n]\n","import type { IPieChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initPie: SpecPipe = (spec, context) => {\n const result = { ...spec } as IPieChartSpec\n const { advancedVSeed } = context\n const { encoding, dataset } = advancedVSeed\n\n if (!encoding[0].angle || !encoding[0].radius || !encoding[0].group) {\n return result\n }\n\n const showStroke = dataset.length <= 30\n\n result.type = 'pie'\n result.outerRadius = 0.8\n result.innerRadius = 0\n result.valueField = encoding[0].radius[0]\n result.categoryField = encoding[0].angle[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.pie = {\n style: {\n stroke: '#ffffff',\n lineWidth: showStroke ? 1 : 0,\n centerOffset: 0,\n },\n state: {\n hover: {\n outerRadius: result.outerRadius * 1.1,\n },\n },\n }\n result.animation = true\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n backgroundColor,\n color,\n datasetXY,\n datasetPivot,\n initPie,\n initPivot,\n label,\n discreteLegend,\n pivotAdapter,\n pivotColumnDimensions,\n pivotGridStyle,\n pivotIndicators,\n pivotIndicatorsAsRow,\n pivotDiscreteLegend,\n pivotRowDimensions,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n progressive,\n} from '../pipes'\n\nconst pie: SpecPipeline = [\n initPie,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n label,\n tooltip,\n discreteLegend,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotPie: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initPie,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n label,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const pieSpecPipeline: SpecPipeline = [pivotAdapter(pie, pivotPie)]\n","import { pieAdvancedPipeline, pieSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerPie = () => {\n Builder._advancedPipelineMap['pie'] = pieAdvancedPipeline\n Builder._specPipelineMap['pie'] = pieSpecPipeline\n}","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n reshapeTo1D1M,\n pivotReshapeTo1D1M,\n encodingPie,\n annotation,\n donutConfig,\n} from '../pipes'\n\nexport const donutAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo1D1M], [pivotReshapeTo1D1M]),\n encodingPie,\n donutConfig,\n theme,\n annotation\n]\n","import type { IPieChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initDonut: SpecPipe = (spec, context) => {\n const result = { ...spec } as IPieChartSpec\n const { advancedVSeed } = context\n const { encoding, dataset } = advancedVSeed\n\n if (!encoding[0].angle || !encoding[0].radius || !encoding[0].group) {\n return result\n }\n const showStroke = dataset.length <= 30\n\n result.type = 'pie'\n result.outerRadius = 0.8\n result.innerRadius = result.outerRadius * 0.8\n result.valueField = encoding[0].radius[0]\n result.categoryField = encoding[0].angle[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n\n result.pie = {\n style: {\n stroke: '#ffffff',\n lineWidth: showStroke ? 1 : 0,\n },\n state: {\n hover: {\n outerRadius: result.outerRadius * 1.1,\n },\n },\n }\n\n result.animation = true\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n backgroundColor,\n color,\n datasetXY,\n datasetPivot,\n initDonut,\n initPivot,\n label,\n discreteLegend,\n pivotAdapter,\n pivotColumnDimensions,\n pivotGridStyle,\n pivotIndicators,\n pivotIndicatorsAsRow,\n pivotDiscreteLegend,\n pivotRowDimensions,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n progressive,\n} from '../pipes'\n\nconst donut: SpecPipeline = [\n initDonut,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n label,\n tooltip,\n discreteLegend,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotDonut: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initDonut,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n label,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const donutSpecPipeline: SpecPipeline = [pivotAdapter(donut, pivotDonut)]\n","import { donutAdvancedPipeline, donutSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerDonut = () => {\n Builder._advancedPipelineMap['donut'] = donutAdvancedPipeline\n Builder._specPipelineMap['donut'] = donutSpecPipeline\n}","import type { AdvancedPipe, Dimensions, FoldInfo, UnfoldInfo } from 'src/types'\nimport type { Encoding } from 'src/types'\n\nexport const encodingRose: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const { datasetReshapeInfo, dimensions, measures } = advancedVSeed\n if (!datasetReshapeInfo || !dimensions || !measures) {\n return result\n }\n\n const angleDimension =\n (dimensions as Dimensions).find(\n (item) => item.location !== 'rowDimension' && item.location !== 'columnDimension',\n ) || dimensions[0]\n\n const is1D1M = dimensions.length === 1 && measures.length === 1\n const isZeroDimension = dimensions.length === 0\n\n const encoding = datasetReshapeInfo.reduce<Encoding>((prev, cur) => {\n const { foldInfo, unfoldInfo } = cur as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n const radius = [foldInfo.measureValue]\n const angle = [isZeroDimension ? foldInfo.measureName : angleDimension?.id]\n const group = [is1D1M ? angleDimension?.id : unfoldInfo.groupId]\n const color = [is1D1M ? angleDimension?.id : unfoldInfo.groupId]\n\n return [\n ...prev,\n {\n angle,\n radius,\n group,\n color,\n },\n ] as Encoding\n }, [])\n\n return {\n ...result,\n encoding,\n }\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n initAdvancedVSeed,\n reshapeTo2D1M,\n theme,\n pivotAdapter,\n markStyle,\n annotation,\n roseConfig,\n encodingRose,\n pivotReshapeTo2D1M,\n} from '../pipes'\n\nexport const roseAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingRose,\n roseConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initRose: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRoseChartSpec\n const { advancedVSeed } = context\n const { encoding, dataset, datasetReshapeInfo } = advancedVSeed\n const { foldInfo } = datasetReshapeInfo[0]\n if (!encoding[0].radius || !encoding[0].angle || !encoding[0].group) {\n return result\n }\n\n result.type = 'rose'\n result.categoryField = encoding[0].angle[0]\n result.valueField = encoding[0].radius[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n result.outerRadius = 0.9\n result.innerRadius = 0\n\n const hasNegativeValue = dataset.flat().find((d) => d[foldInfo.measureValue] < 0)\n if (hasNegativeValue) {\n result.innerRadius = 0.05\n }\n\n result.rose = {\n style: {\n stroke: '#ffffff',\n lineWidth: 1,\n },\n state: {\n hover: {\n lineWidth: 1,\n fillOpacity: 0.6,\n },\n },\n }\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const radiusAxis: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRoseChartSpec\n const { advancedVSeed } = context\n const { dimensions, measures } = advancedVSeed\n\n if (!dimensions || !measures) {\n return result\n }\n\n const is0D = dimensions.length === 0\n const is1M1D = dimensions.length === 1 && measures.length === 1\n const showAxis = !(is0D || is1M1D)\n\n if (!result.axes) {\n result.axes = []\n }\n\n result.axes.push({\n orient: 'radius',\n visible: showAxis,\n zero: true,\n nice: showAxis ? true : false,\n grid: {\n visible: showAxis,\n },\n tick: {\n visible: showAxis,\n },\n label: {\n visible: showAxis,\n },\n domainLine: {\n visible: showAxis,\n },\n })\n\n return result\n}\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const angleAxis: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRoseChartSpec\n const { advancedVSeed } = context\n const { dimensions, measures } = advancedVSeed\n\n if (!dimensions || !measures) {\n return result\n }\n\n const is0D = dimensions.length === 0\n const is1M1D = dimensions.length === 1 && measures.length === 1\n const showAxis = !(is0D || is1M1D)\n\n if (!result.axes) {\n result.axes = []\n }\n\n result.axes.push({\n orient: 'angle',\n visible: showAxis,\n zero: true,\n nice: showAxis ? true : false,\n paddingInner: showAxis ? [0.15, 0.1] : [0, 0],\n paddingOuter: showAxis ? [0.075, 0.1] : [0, 0],\n grid: {\n visible: showAxis,\n },\n domainLine: {\n visible: showAxis,\n },\n tick: {\n visible: showAxis,\n },\n })\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n pivotAdapter,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n stackInverse,\n verticalCrosshairRect,\n stackCornerRadius,\n initRose,\n radiusAxis,\n angleAxis,\n progressive,\n} from '../pipes'\n\nconst rose: SpecPipeline = [\n initRose,\n stackCornerRadius,\n stackInverse,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n radiusAxis,\n angleAxis,\n label,\n tooltip,\n verticalCrosshairRect,\n discreteLegend,\n]\n\nconst pivotRose: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initRose,\n stackCornerRadius,\n stackInverse,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n radiusAxis,\n angleAxis,\n label,\n tooltip,\n verticalCrosshairRect,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const roseSpecPipeline = [pivotAdapter(rose, pivotRose)]\n","import { roseAdvancedPipeline, roseSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerRose = () => {\n Builder._advancedPipelineMap['rose'] = roseAdvancedPipeline\n Builder._specPipelineMap['rose'] = roseSpecPipeline\n}","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n initAdvancedVSeed,\n reshapeTo2D1M,\n theme,\n pivotAdapter,\n pivotReshapeTo2D1M,\n markStyle,\n annotation,\n roseParallelConfig,\n encodingRose,\n} from '../pipes'\n\nexport const roseParallelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingRose,\n roseParallelConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initRoseParallel: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRoseChartSpec\n const { advancedVSeed } = context\n const { encoding, datasetReshapeInfo, dataset } = advancedVSeed\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n if (!encoding[0].radius || !encoding[0].angle || !encoding[0].group) {\n return result\n }\n\n result.type = 'rose'\n result.categoryField = [encoding[0].angle[0], unfoldInfo.groupId]\n result.valueField = encoding[0].radius[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n\n result.outerRadius = 0.9\n result.innerRadius = 0\n\n const hasNegativeValue = dataset.flat().find((d) => d[foldInfo.measureValue] < 0)\n if (hasNegativeValue) {\n result.innerRadius = 0.05\n }\n\n result.rose = {\n style: {\n stroke: '#ffffff',\n lineWidth: 1,\n },\n state: {\n hover: {\n lineWidth: 1,\n fillOpacity: 0.6,\n },\n },\n }\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n pivotIndicators,\n initPivot,\n datasetPivot,\n pivotAdapter,\n pivotDiscreteLegend,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n verticalCrosshairRect,\n stackCornerRadius,\n initRoseParallel,\n radiusAxis,\n angleAxis,\n progressive,\n} from '../pipes'\n\nconst roseParallel: SpecPipeline = [\n initRoseParallel,\n stackCornerRadius,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n radiusAxis,\n angleAxis,\n label,\n tooltip,\n discreteLegend,\n verticalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotRoseParallel: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initRoseParallel,\n stackCornerRadius,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n radiusAxis,\n angleAxis,\n label,\n tooltip,\n verticalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const roseParallelSpecPipeline: SpecPipeline = [pivotAdapter(roseParallel, pivotRoseParallel)]\n","import { roseParallelAdvancedPipeline, roseParallelSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerRoseParallel = () => {\n Builder._advancedPipelineMap['roseParallel'] = roseParallelAdvancedPipeline\n Builder._specPipelineMap['roseParallel'] = roseParallelSpecPipeline\n}","import type { AdvancedPipe, Dimensions, FoldInfo, UnfoldInfo } from 'src/types'\nimport type { Encoding } from 'src/types'\n\nexport const encodingAR: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const { datasetReshapeInfo, dimensions, measures } = advancedVSeed\n if (!datasetReshapeInfo || !dimensions || !measures) {\n return result\n }\n\n const angleDimension =\n (dimensions as Dimensions).find(\n (item) => item.location !== 'rowDimension' && item.location !== 'columnDimension',\n ) || dimensions[0]\n\n const isZeroDimension = dimensions.length === 0\n\n const encoding = datasetReshapeInfo.reduce<Encoding>((prev, cur) => {\n const { foldInfo, unfoldInfo } = cur as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n const angle = [isZeroDimension ? foldInfo.measureName : angleDimension?.id]\n const radius = [foldInfo.measureValue]\n const group = [unfoldInfo.groupId]\n const color = [unfoldInfo.groupId]\n\n return [\n ...prev,\n {\n angle,\n radius,\n group,\n color,\n },\n ] as Encoding\n }, [])\n\n return {\n ...result,\n encoding,\n }\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n annotation,\n markStyle,\n sortLegend,\n radarConfig,\n encodingAR,\n reshapeTo2D1M0Name,\n pivotReshapeTo2D1M0Name,\n} from '../pipes'\n\nexport const radarAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M0Name], [pivotReshapeTo2D1M0Name]),\n encodingAR,\n // sortXBandAxis,\n sortLegend,\n radarConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IRadarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initRadar: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRadarChartSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].angle || !encoding[0].radius || !encoding[0].group) {\n return result\n }\n\n result.type = 'radar'\n result.angleField = encoding[0].angle[0]\n result.radiusField = encoding[0].radius[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const radarAngleAxis: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRoseChartSpec\n const { advancedVSeed } = context\n const { dimensions, measures } = advancedVSeed\n\n if (!dimensions || !measures) {\n return result\n }\n\n if (!result.axes) {\n result.axes = []\n }\n\n result.axes.push({\n orient: 'angle',\n visible: true,\n zero: true,\n nice: true,\n grid: {\n visible: true,\n },\n domainLine: {\n visible: true,\n },\n tick: {\n visible: true,\n },\n })\n\n return result\n}\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const radarRadiusAxis: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRoseChartSpec\n const { advancedVSeed } = context\n const { dimensions, measures } = advancedVSeed\n\n if (!dimensions || !measures) {\n return result\n }\n\n if (!result.axes) {\n result.axes = []\n }\n\n result.axes.push({\n orient: 'radius',\n visible: true,\n zero: true,\n nice: true,\n grid: {\n visible: true,\n },\n tick: {\n visible: true,\n },\n label: {\n visible: true,\n },\n domainLine: {\n visible: true,\n },\n })\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n initPivot,\n datasetPivot,\n pivotDiscreteLegend,\n pivotIndicators,\n pivotAdapter,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n pointStyle,\n lineStyle,\n verticalCrosshairLine,\n pointStateDimensionHover,\n initRadar,\n areaStyle,\n radarAngleAxis,\n radarRadiusAxis,\n progressive,\n} from '../pipes'\n\nconst radar: SpecPipeline = [\n initRadar,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n radarAngleAxis,\n radarRadiusAxis,\n label,\n tooltip,\n verticalCrosshairLine,\n discreteLegend,\n pointStyle,\n pointStateDimensionHover,\n lineStyle,\n areaStyle,\n // annotationPoint,\n // annotationVerticalLine,\n // annotationHorizontalLine,\n // annotationArea,\n]\n\nconst pivotRadar: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initRadar,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n radarAngleAxis,\n radarRadiusAxis,\n label,\n tooltip,\n verticalCrosshairLine,\n pointStyle,\n pointStateDimensionHover,\n lineStyle,\n areaStyle,\n // annotationPoint,\n // annotationVerticalLine,\n // annotationHorizontalLine,\n // annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const radarSpecPipeline: SpecPipeline = [pivotAdapter(radar, pivotRadar)]\n","import { radarAdvancedPipeline, radarSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerRadar = () => {\n Builder._advancedPipelineMap['radar'] = radarAdvancedPipeline\n Builder._specPipelineMap['radar'] = radarSpecPipeline\n}","import type { AdvancedPipe, FoldInfo, UnfoldInfo } from 'src/types'\nimport type { Encoding } from 'src/types'\n\nexport const encodingFunnel: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const { datasetReshapeInfo } = advancedVSeed\n if (!datasetReshapeInfo) {\n return result\n }\n\n const encoding = datasetReshapeInfo.reduce<Encoding>((prev, cur) => {\n const { foldInfo, unfoldInfo } = cur as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n const size = [foldInfo.measureValue]\n const group = [unfoldInfo.groupId]\n const color = [foldInfo.measureValue]\n\n return [\n ...prev,\n {\n size,\n group,\n color,\n },\n ] as Encoding\n }, [])\n\n return {\n ...result,\n encoding,\n }\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n reshapeTo1D1M,\n pivotReshapeTo1D1M,\n annotation,\n encodingFunnel,\n funnelConfig,\n} from '../pipes'\n\nexport const funnelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo1D1M], [pivotReshapeTo1D1M]),\n encodingFunnel,\n funnelConfig,\n theme,\n annotation,\n]\n","import type { IFunnelChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initFunnel: SpecPipe = (spec, context) => {\n const result = { ...spec } as IFunnelChartSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].size || !encoding[0].group || !encoding[0].color) {\n return result\n }\n\n result.type = 'funnel'\n result.valueField = encoding[0].size[0]\n result.categoryField = encoding[0].group[0]\n result.padding = 0\n result.isTransform = true\n result.shape = 'rect'\n result.maxSize = '75%'\n result.minSize = '10%'\n result.region = [\n {\n clip: true,\n },\n ]\n result.funnel = {\n style: {\n cornerRadius: 4,\n fill: {\n field: encoding[0].color[0],\n scale: 'color',\n },\n },\n state: {\n hover: {\n fillOpacity: 0.6,\n },\n },\n }\n result.transformLabel = {\n visible: true,\n }\n\n result.animation = true\n\n return result\n}\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport type { Color, SpecPipe } from 'src/types'\n\nexport const linearColor: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo, chartType, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { color: Color }\n\n if (!baseConfig || !baseConfig.color) {\n return result\n }\n\n const { color } = baseConfig\n const { colorScheme } = color\n\n result.color = {\n type: 'linear',\n domain: [\n {\n dataId: datasetReshapeInfo[0].id,\n fields: encoding?.[0]?.color,\n },\n ],\n range: colorScheme,\n } as ILineChartSpec['color']\n return result\n}\n","import type { Legend, SpecPipe } from 'src/types'\n\nexport const colorLegend: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { legend: Legend }\n const { encoding } = advancedVSeed\n\n if (!encoding[0].color) {\n return result\n }\n\n if (!baseConfig || !baseConfig.legend) {\n return result\n }\n\n const { legend } = baseConfig\n const { enable, position = 'bottom' } = legend || {}\n\n const orient = ['bottom', 'bottomLeft', 'bottomRight', 'bl', 'br'].includes(position)\n ? 'bottom'\n : ['top', 'topLeft', 'topRight', 'tl', 'tr'].includes(position)\n ? 'top'\n : ['left', 'leftTop', 'leftBottom', 'lt', 'lb'].includes(position)\n ? 'left'\n : 'right'\n\n const legendPosition = ['topLeft', 'bottomLeft', 'leftTop', 'rightTop', 'lt', 'rt', 'tl', 'bl'].includes(position)\n ? 'start'\n : ['topRight', 'bottomRight', 'leftBottom', 'rightBottom', 'lb', 'rb', 'rt', 'br'].includes(position)\n ? 'end'\n : 'middle'\n\n result.legends = {\n type: 'color',\n visible: enable,\n orient,\n position: legendPosition,\n field: encoding[0].color[0],\n inverse: ['left', 'right'].includes(orient) ? true : false,\n }\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n backgroundColor,\n datasetXY,\n datasetPivot,\n initPivot,\n label,\n colorLegend,\n pivotAdapter,\n pivotColumnDimensions,\n pivotGridStyle,\n pivotIndicators,\n pivotIndicatorsAsRow,\n pivotRowDimensions,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n initFunnel,\n linearColor,\n} from '../pipes'\n\nconst funnel: SpecPipeline = [\n initFunnel,\n linearColor,\n backgroundColor,\n datasetXY,\n label,\n tooltip,\n colorLegend,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotFunnel: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initFunnel,\n linearColor,\n backgroundColor,\n datasetXY,\n label,\n tooltip,\n colorLegend,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n]\n\nexport const funnelSpecPipeline: SpecPipeline = [pivotAdapter(funnel, pivotFunnel)]\n","import { funnelAdvancedPipeline, funnelSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerFunnel = () => {\n Builder._advancedPipelineMap['funnel'] = funnelAdvancedPipeline\n Builder._specPipelineMap['funnel'] = funnelSpecPipeline\n}","import type { AdvancedPipe, Dimensions, FoldInfo, UnfoldInfo } from 'src/types'\nimport type { Encoding } from 'src/types'\n\nexport const encodingMatrix: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const { datasetReshapeInfo, dimensions } = advancedVSeed\n if (!datasetReshapeInfo || !dimensions) {\n return result\n }\n\n const xDimension =\n (dimensions as Dimensions).find(\n (item) => item.location !== 'rowDimension' && item.location !== 'columnDimension',\n ) || dimensions[0]\n\n const isZeroDimension = dimensions.length === 0\n\n const encoding = datasetReshapeInfo.reduce<Encoding>((prev, cur) => {\n const { foldInfo, unfoldInfo } = cur as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n const x = [isZeroDimension ? foldInfo.measureName : xDimension?.id]\n const y = [unfoldInfo.groupName]\n const color = [foldInfo.measureValue]\n\n return [\n ...prev,\n {\n x,\n y,\n color,\n },\n ] as Encoding\n }, [])\n\n return {\n ...result,\n encoding,\n }\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n initAdvancedVSeed,\n reshapeTo2D1M,\n theme,\n pivotAdapter,\n pivotReshapeTo2D1M,\n annotation,\n markStyle,\n sortXBandAxis,\n heatmapConfig,\n} from '../pipes'\nimport { encodingMatrix } from '../pipes/encoding/encodingMatrix'\n\nexport const heatmapAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingMatrix,\n sortXBandAxis,\n heatmapConfig,\n theme,\n markStyle,\n annotation\n]\n","import type { IHeatmapChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const labelColorInversion: SpecPipe = (spec) => {\n const result = { ...spec } as IHeatmapChartSpec\n if (result.label) {\n result.label.smartInvert = true\n } else {\n result.label = {\n smartInvert: true,\n }\n }\n return result\n}\n","import type { IHeatmapChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initHeatmap: SpecPipe = (spec, context) => {\n const result = { ...spec } as IHeatmapChartSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].color) {\n return result\n }\n\n result.type = 'heatmap'\n result.direction = 'vertical'\n result.xField = encoding[0].x[0]\n result.yField = encoding[0].y[0]\n result.valueField = encoding[0].color[0]\n result.padding = 0\n result.cell = {\n style: {\n shape: 'rect',\n stroke: '#ffffff',\n lineWidth: 1,\n fill: {\n field: encoding[0].color[0],\n scale: 'color',\n },\n },\n }\n result.axes = [\n {\n type: 'band',\n orient: 'left',\n bandPadding: 0,\n },\n {\n type: 'band',\n orient: 'bottom',\n bandPadding: 0,\n },\n ]\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n backgroundColor,\n label,\n tooltip,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotAdapter,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n pointStyle,\n lineStyle,\n pointStateDimensionHover,\n colorLegend,\n linearColor,\n labelColorInversion,\n} from '../pipes'\nimport { initHeatmap } from '../pipes/init/heatmap'\n\nconst heatmap: SpecPipeline = [\n initHeatmap,\n linearColor,\n backgroundColor,\n datasetXY,\n label,\n labelColorInversion,\n colorLegend,\n tooltip,\n pointStyle,\n pointStateDimensionHover,\n lineStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotHeatmap: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initHeatmap,\n linearColor,\n backgroundColor,\n datasetXY,\n label,\n labelColorInversion,\n colorLegend,\n tooltip,\n pointStyle,\n pointStateDimensionHover,\n lineStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n]\n\nexport const heatmapSpecPipeline: SpecPipeline = [pivotAdapter(heatmap, pivotHeatmap)]\n","import { heatmapAdvancedPipeline, heatmapSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerHeatmap = () => {\n Builder._advancedPipelineMap['heatmap'] = heatmapAdvancedPipeline\n Builder._specPipelineMap['heatmap'] = heatmapSpecPipeline\n}","import type {\n BackgroundColor,\n Color,\n CustomThemeConfig,\n Label,\n Legend,\n TableConfig,\n Tooltip,\n YBandAxis,\n YLinearAxis,\n} from 'src/types'\n\nexport const lightTheme = (): CustomThemeConfig => {\n const linearAxis: YLinearAxis = {\n nice: true,\n zero: true,\n inverse: false,\n label: {\n visible: true,\n labelAngle: 0,\n labelColor: '#797B85',\n labelFontSize: 12,\n labelFontWeight: 400,\n },\n title: {\n visible: false,\n titleText: '',\n titleColor: '#646A73',\n titleFontSize: 12,\n titleFontWeight: 400,\n },\n grid: {\n visible: true,\n gridColor: '#36415926',\n gridWidth: 0.5,\n },\n tick: {\n visible: false,\n tickInside: false,\n tickSize: 4,\n tickColor: '#3641594d',\n },\n line: {\n visible: false,\n lineColor: '#3641594d',\n lineWidth: 1,\n },\n }\n const bandAxis: YBandAxis = {\n labelAutoHide: true,\n labelAutoHideGap: 4,\n labelAutoLimit: true,\n labelAutoLimitLength: 80,\n labelAutoRotate: false,\n labelAutoRotateAngleRange: [0, -45, -90],\n label: {\n visible: true,\n labelAngle: 0,\n labelColor: '#797B85',\n labelFontSize: 12,\n labelFontWeight: 400,\n },\n title: {\n visible: false,\n titleText: '',\n titleColor: '#646A73',\n titleFontSize: 12,\n titleFontWeight: 400,\n },\n grid: {\n visible: false,\n gridColor: '#36415926',\n gridWidth: 0.5,\n },\n tick: {\n visible: false,\n tickInside: false,\n tickSize: 4,\n tickColor: '#3641594d',\n },\n line: {\n visible: true,\n lineColor: '#3641594d',\n lineWidth: 1,\n },\n }\n const barBandAxis: YBandAxis = {\n ...bandAxis,\n labelAutoHide: false,\n labelAutoHideGap: 1,\n labelAutoLimit: false,\n labelAutoLimitLength: undefined,\n labelAutoRotate: false,\n labelAutoRotateAngleRange: [0, -45, -90],\n }\n\n const crosshairLine = {\n visible: true,\n labelVisible: true,\n lineColor: '#3641594d',\n labelColor: '#ffffff',\n labelBackgroundColor: '#364159',\n }\n const crosshairRect = {\n visible: true,\n labelVisible: true,\n rectColor: '#3641594d',\n labelColor: '#ffffff',\n labelBackgroundColor: '#364159',\n }\n\n const baseConfig: {\n backgroundColor?: BackgroundColor\n color?: Color\n label?: Label\n tooltip?: Tooltip\n legend?: Legend\n } = {\n backgroundColor: 'transparent',\n color: {\n colorScheme: [\n '#8D72F6',\n '#5766EC',\n '#66A3FE',\n '#51D5E6',\n '#4EC0B3',\n '#F9DF90',\n '#F9AD71',\n '#ED8888',\n '#E9A0C3',\n '#D77DD3',\n ],\n },\n label: {\n enable: true,\n },\n tooltip: {\n enable: true,\n },\n legend: {\n enable: true,\n border: true,\n maxSize: 1,\n shapeType: 'rectRound',\n position: 'rt',\n labelFontColor: '#646A73',\n labelFontSize: 12,\n labelFontWeight: 400,\n },\n }\n const tableConfig: TableConfig = {\n borderColor: '#e3e5eb',\n\n bodyFontSize: 12,\n bodyFontColor: '#141414',\n bodyBackgroundColor: 'transparent',\n\n headerFontSize: 12,\n headerFontColor: '#21252c',\n headerBackgroundColor: '#f6f7f9',\n\n hoverBodyBackgroundColor: '#bedaff',\n hoverBodyInlineBackgroundColor: '#bedaff33',\n hoverHeaderBackgroundColor: '#D9DDE4',\n hoverHeaderInlineBackgroundColor: '#D9DDE455',\n\n selectedBorderColor: '#4080ff',\n selectedBackgroundColor: '#bedaff33',\n }\n\n return {\n config: {\n // table\n table: tableConfig,\n pivotTable: tableConfig,\n // cartesian\n line: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine,\n },\n column: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairRect,\n stackCornerRadius: [4, 4, 0, 0],\n },\n columnParallel: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairRect,\n stackCornerRadius: [4, 4, 0, 0],\n },\n columnPercent: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairRect,\n stackCornerRadius: [4, 4, 0, 0],\n },\n bar: {\n ...baseConfig,\n xAxis: linearAxis,\n yAxis: barBandAxis,\n crosshairRect,\n stackCornerRadius: [0, 4, 4, 0],\n },\n barParallel: {\n ...baseConfig,\n xAxis: linearAxis,\n yAxis: barBandAxis,\n crosshairRect,\n stackCornerRadius: [0, 4, 4, 0],\n },\n barPercent: {\n ...baseConfig,\n xAxis: linearAxis,\n yAxis: barBandAxis,\n crosshairRect,\n stackCornerRadius: [0, 4, 4, 0],\n },\n area: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine,\n },\n areaPercent: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine,\n },\n areaRange: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine,\n },\n scatter: {\n ...baseConfig,\n xAxis: {\n ...linearAxis,\n line: {\n ...linearAxis.line,\n visible: true,\n },\n },\n yAxis: {\n ...linearAxis,\n line: {\n ...linearAxis.line,\n visible: true,\n },\n },\n crosshairLine,\n },\n dualAxis: {\n ...baseConfig,\n xAxis: bandAxis,\n primaryYAxis: linearAxis,\n secondaryYAxis: { ...linearAxis, grid: { visible: false } },\n dualChartType: {\n primary: 'column',\n secondary: 'line',\n },\n crosshairRect,\n },\n // polar\n pie: {\n ...baseConfig,\n },\n donut: {\n ...baseConfig,\n },\n radar: {\n ...baseConfig,\n },\n rose: {\n ...baseConfig,\n },\n roseParallel: {\n ...baseConfig,\n },\n // other\n funnel: {\n ...baseConfig,\n color: {\n colorScheme: [\n '#5766EC',\n '#6372F0',\n '#7080F4',\n '#7C8CFA',\n '#8998FF',\n '#95A3FF',\n '#A0AEFF',\n '#ACB9FF',\n '#B7C4FF',\n '#C2CEFF',\n ].reverse(),\n },\n },\n heatmap: {\n ...baseConfig,\n color: {\n colorScheme: [\n '#5766EC',\n '#6372F0',\n '#7080F4',\n '#7C8CFA',\n '#8998FF',\n '#95A3FF',\n '#A0AEFF',\n '#ACB9FF',\n '#B7C4FF',\n '#C2CEFF',\n ].reverse(),\n },\n },\n },\n }\n}\n","import type {\n BackgroundColor,\n Color,\n CustomThemeConfig,\n Label,\n Legend,\n TableConfig,\n Tooltip,\n YBandAxis,\n YLinearAxis,\n} from 'src/types'\n\nexport const darkTheme = (): CustomThemeConfig => {\n const linearAxis: YLinearAxis = {\n nice: true,\n zero: true,\n label: {\n visible: true,\n labelAngle: 0,\n labelColor: '#E2E3E6',\n labelFontSize: 12,\n labelFontWeight: 400,\n },\n title: {\n visible: false,\n titleText: '',\n titleColor: '#FDFDFD',\n titleFontSize: 12,\n titleFontWeight: 400,\n },\n grid: {\n visible: true,\n gridColor: '#404349',\n gridWidth: 0.5,\n },\n tick: {\n visible: false,\n tickInside: false,\n tickSize: 4,\n tickColor: '#4B4F54',\n },\n line: {\n visible: false,\n lineColor: '#4B4F54',\n lineWidth: 1,\n },\n }\n const bandAxis: YBandAxis = {\n labelAutoHide: true,\n labelAutoHideGap: 4,\n labelAutoLimit: true,\n labelAutoLimitLength: 80,\n labelAutoRotate: false,\n labelAutoRotateAngleRange: [0, -45, -90],\n label: {\n visible: true,\n labelAngle: 0,\n labelColor: '#E2E3E6',\n labelFontSize: 12,\n labelFontWeight: 400,\n },\n title: {\n visible: false,\n titleText: '',\n titleColor: '#FDFDFD',\n titleFontSize: 12,\n titleFontWeight: 400,\n },\n grid: {\n visible: false,\n gridColor: '#404349',\n gridWidth: 0.5,\n },\n tick: {\n visible: false,\n tickInside: false,\n tickSize: 4,\n tickColor: '#4B4F54',\n },\n line: {\n visible: true,\n lineColor: '#4B4F54',\n lineWidth: 1,\n },\n }\n const barBandAxis: YBandAxis = {\n ...bandAxis,\n labelAutoHide: false,\n labelAutoHideGap: 1,\n labelAutoLimit: false,\n labelAutoLimitLength: undefined,\n labelAutoRotate: false,\n labelAutoRotateAngleRange: [0, -45, -90],\n }\n const crosshairLine = {\n visible: true,\n labelVisible: true,\n lineColor: '#E2E3E6',\n labelColor: '#4B4F54',\n labelBackgroundColor: '#ffffff',\n }\n const crosshairRect = {\n visible: true,\n labelVisible: true,\n lineColor: '#E2E3E6',\n labelColor: '#4B4F54',\n labelBackgroundColor: '#ffffff',\n }\n\n const baseConfig: {\n backgroundColor?: BackgroundColor\n color?: Color\n label?: Label\n tooltip?: Tooltip\n legend?: Legend\n } = {\n backgroundColor: 'transparent',\n color: {\n colorScheme: [\n '#2E62F1',\n '#4DC36A',\n '#FF8406',\n '#FFCC00',\n '#4F44CF',\n '#5AC8FA',\n '#003A8C',\n '#B08AE2',\n '#FF6341',\n '#98DD62',\n ],\n },\n label: {\n enable: true,\n },\n tooltip: {\n enable: true,\n },\n legend: {\n enable: true,\n border: true,\n maxSize: 1,\n position: 'rt',\n shapeType: 'rectRound',\n labelFontColor: '#FDFDFD',\n labelFontSize: 12,\n labelFontWeight: 400,\n },\n }\n\n const tableConfig: TableConfig = {\n borderColor: '#4b4e53',\n\n bodyFontSize: 12,\n bodyFontColor: '#fdfdfd',\n bodyBackgroundColor: 'transparent',\n\n headerFontSize: 12,\n headerFontColor: '#fdfdfd',\n headerBackgroundColor: '#36393e',\n\n hoverBodyBackgroundColor: '#4284ff66',\n hoverBodyInlineBackgroundColor: '#4284ff10',\n hoverHeaderBackgroundColor: '#6f7984cc',\n hoverHeaderInlineBackgroundColor: '#4b4f54',\n\n selectedBorderColor: '#3073f2',\n selectedBackgroundColor: '#4284ff33',\n }\n\n return {\n config: {\n table: tableConfig,\n pivotTable: tableConfig,\n\n // cartesian\n line: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine: crosshairLine,\n },\n column: {\n ...baseConfig,\n\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairRect: crosshairRect,\n stackCornerRadius: [4, 4, 0, 0],\n },\n columnParallel: {\n ...baseConfig,\n\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairRect: crosshairRect,\n stackCornerRadius: [4, 4, 0, 0],\n },\n columnPercent: {\n ...baseConfig,\n\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairRect: crosshairRect,\n stackCornerRadius: [4, 4, 0, 0],\n },\n bar: {\n ...baseConfig,\n\n xAxis: linearAxis,\n yAxis: barBandAxis,\n crosshairRect: crosshairRect,\n stackCornerRadius: [0, 4, 4, 0],\n },\n barParallel: {\n ...baseConfig,\n\n xAxis: linearAxis,\n yAxis: barBandAxis,\n crosshairRect: crosshairRect,\n stackCornerRadius: [0, 4, 4, 0],\n },\n barPercent: {\n ...baseConfig,\n\n xAxis: linearAxis,\n yAxis: barBandAxis,\n crosshairRect: crosshairRect,\n stackCornerRadius: [0, 4, 4, 0],\n },\n area: {\n ...baseConfig,\n\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine: crosshairLine,\n },\n areaPercent: {\n ...baseConfig,\n\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine: crosshairLine,\n },\n areaRange: {\n ...baseConfig,\n\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine: crosshairLine,\n },\n scatter: {\n ...baseConfig,\n\n xAxis: {\n ...linearAxis,\n line: {\n ...linearAxis.line,\n visible: true,\n },\n },\n yAxis: {\n ...linearAxis,\n line: {\n ...linearAxis.line,\n visible: true,\n },\n },\n crosshairLine,\n },\n dualAxis: {\n ...baseConfig,\n xAxis: bandAxis,\n primaryYAxis: linearAxis,\n secondaryYAxis: { ...linearAxis, grid: { visible: false } },\n dualChartType: {\n primary: 'column',\n secondary: 'line',\n },\n crosshairRect,\n },\n // polar\n pie: {\n ...baseConfig,\n },\n donut: {\n ...baseConfig,\n },\n radar: {\n ...baseConfig,\n },\n rose: {\n ...baseConfig,\n },\n roseParallel: {\n ...baseConfig,\n },\n // other\n funnel: {\n ...baseConfig,\n color: {\n colorScheme: [\n '#2E62F1',\n '#3A6EF6',\n '#4780FA',\n '#548CFE',\n '#6198FF',\n '#6FA3FF',\n '#7CACFF',\n '#88B7FF',\n '#94C2FF',\n '#A0CEFF',\n ],\n },\n },\n heatmap: {\n ...baseConfig,\n },\n },\n }\n}\n","import type { CustomThemeConfig } from 'src/types'\nimport { Builder } from '../../builder'\nimport { darkTheme, lightTheme } from '../../../theme'\n\nexport const registerCustomTheme = (\n key: string,\n themeConfig:\n | CustomThemeConfig\n | ((props: { lightTheme: CustomThemeConfig; darkTheme: CustomThemeConfig }) => CustomThemeConfig),\n) => {\n const customTheme =\n typeof themeConfig === 'function' ? themeConfig({ lightTheme: lightTheme(), darkTheme: darkTheme() }) : themeConfig\n Builder._themeMap[key] = customTheme\n}\n","import { registerCustomTheme } from './custom'\nimport { lightTheme } from '../../../theme'\n\nexport const registerLightTheme = () => {\n registerCustomTheme('light', lightTheme())\n}\n","import { darkTheme } from '../../../theme'\nimport { registerCustomTheme } from './custom'\n\nexport const registerDarkTheme = () => {\n registerCustomTheme('dark', darkTheme())\n}\n","import {\n registerArea,\n registerAreaPercent,\n registerBar,\n registerBarParallel,\n registerBarPercent,\n registerColumn,\n registerColumnParallel,\n registerColumnPercent,\n registerLine,\n registerPie,\n registerDonut,\n registerRose,\n registerRoseParallel,\n registerFunnel,\n registerScatter,\n registerTable,\n registerPivotTable,\n registerAreaRange,\n registerHeatmap,\n registerRadar,\n registerDualAxis,\n} from './chartType'\nimport { registerDarkTheme, registerLightTheme } from './theme'\n\nexport const registerAll = () => {\n // table\n registerTable()\n registerPivotTable()\n // cartesian\n registerLine()\n registerColumn()\n registerColumnParallel()\n registerColumnPercent()\n registerBar()\n registerBarParallel()\n registerBarPercent()\n registerArea()\n registerAreaPercent()\n registerAreaRange()\n registerScatter()\n registerDualAxis()\n // polar\n registerPie()\n registerDonut()\n registerRose()\n registerRoseParallel()\n registerRadar()\n // other\n registerFunnel()\n registerHeatmap()\n // theme\n registerLightTheme()\n registerDarkTheme()\n}\n","import type { AdvancedPipe, ChartType, SpecPipe } from 'src/types'\nimport { Builder } from '../builder'\n\nexport const updateAdvanced = (chartType: ChartType, advancedPipe: AdvancedPipe) => {\n Builder._customAdvancedPipe[chartType] = advancedPipe\n}\nexport const updateSpec = (chartType: ChartType, specPipe: SpecPipe) => {\n Builder._customSpecPipe[chartType] = specPipe\n}\n","import { z } from 'zod'\n\nexport type ChartType =\n | 'table'\n | 'pivotTable'\n // cartesian\n | 'line'\n | 'column'\n | 'columnPercent'\n | 'columnParallel'\n | 'bar'\n | 'barPercent'\n | 'barParallel'\n | 'area'\n | 'areaPercent'\n | 'areaRange'\n | 'scatter'\n | 'dualAxis'\n // polar\n | 'rose'\n | 'roseParallel'\n | 'pie'\n | 'donut'\n | 'radar'\n // other\n | 'heatmap'\n | 'funnel'\n\nexport enum ChartTypeEnum {\n Table = 'table',\n PivotTable = 'pivotTable',\n // cartesian\n Line = 'line',\n Column = 'column',\n ColumnPercent = 'columnPercent',\n ColumnParallel = 'columnParallel',\n Bar = 'bar',\n BarPercent = 'barPercent',\n BarParallel = 'barParallel',\n Area = 'area',\n AreaPercent = 'areaPercent',\n AreaRange = 'areaRange',\n DualAxis = 'dualAxis',\n Scatter = 'scatter',\n // polar\n Rose = 'rose',\n RoseParallel = 'roseParallel',\n Pie = 'pie',\n Donut = 'donut',\n Radar = 'radar',\n // other\n Funnel = 'funnel',\n Heatmap = 'heatmap',\n}\n\nexport const zChartType = z.enum([\n 'table',\n 'pivotTable',\n // cartesian\n 'line',\n 'column',\n 'columnPercent',\n 'columnParallel',\n 'bar',\n 'barPercent',\n 'barParallel',\n 'area',\n 'areaPercent',\n 'areaRange',\n 'scatter',\n 'dualAxis',\n // polar\n 'rose',\n 'roseParallel',\n 'pie',\n 'donut',\n 'radar',\n // other\n 'funnel',\n 'heatmap',\n])\n","import { z } from 'zod'\n\n// 'columnPercent' 和 'areaPercent' 会改变轴值域为[0,1], VTable不支持.\nexport const zDualChartType = z.object({\n primary: z.enum(['line', 'column', 'columnParallel', 'area', 'scatter']).default('column'),\n secondary: z.enum(['line', 'column', 'columnParallel', 'area', 'scatter']).default('line'),\n})\n\nexport type DualChartType = z.infer<typeof zDualChartType>\n","import { z } from 'zod'\n\n/**\n * example dataset link:\n * [\n * { date: '2019', 20001:'type', profit:10, sales: null, },\n * { date: '2020', 20001:'type', profit:30, sales: -1.1, },\n * { date: '2021', 20001:'type', profit:30, sales: 1, },\n * { date: '2023', 20001:'type', profit:40, sales: undefined, },\n * { date: '2022', 20001:'type', profit:50, sales: 100, },\n * ]\n */\nexport const zDatum = z.record(z.string().or(z.number()), z.any())\nexport const zDataset = z.array(zDatum)\n\nexport type Datum = z.infer<typeof zDatum>\nexport type Dataset = z.infer<typeof zDataset>\n","import { z } from 'zod'\n\nexport type Dimension = {\n id: string\n alias?: string\n location?: 'dimension' | 'rowDimension' | 'columnDimension'\n}\n\nexport type DimensionGroup = {\n id: string\n alias?: string\n children?: (Dimension | DimensionGroup)[]\n}\n\nexport type Dimensions = Dimension[]\n\nexport type DimensionTree = (Dimension | DimensionGroup)[]\n\nexport const zDimension = z.object({\n id: z.string(),\n alias: z.string().optional(),\n location: z.enum(['dimension', 'rowDimension', 'columnDimension']).default('dimension'),\n})\nexport const zDimensionGroup: z.ZodType<DimensionGroup> = z.object({\n id: z.string(),\n alias: z.string().optional(),\n get children() {\n return z.array(zDimensionGroup.or(zDimension)).optional()\n },\n})\nexport const zDimensions = z.array(zDimension)\nexport const zDimensionTree = z.array(zDimensionGroup.or(zDimension))\n","import { z } from 'zod'\n\nexport interface NumFormat {\n /**\n * @description 数字格式化类型, 支持数值(十进制)、百分比(%)、千分比(‰)、科学计数法\n * @default 'number'\n */\n type?: 'number' | 'percent' | 'permille' | 'scientific'\n\n /**\n * @description 数值格式化比例, 百分比和千分比需要设置比例\n * @default 1\n * @example\n * - 100000 转换为 10万, ratio:10000, symbol:\"万\"\n * - 100000 转换为 10K, ratio:1000, symbol:\"K\"\n * - 100000 转换为 100%, ratio:100, symbol:\"%\"\n * - 100000 转换为 100‰, ratio:1000, symbol:\"‰\"\n */\n ratio?: number\n\n /**\n * @description 数值格式化符号, 例如%、‰\n * @default ''\n * @example\n * - 100000 转换为 10万, ratio:10000, symbol:\"万\"\n * - 100000 转换为 10K, ratio:1000, symbol:\"K\"\n * - 100000 转换为 100%, ratio:100, symbol:\"%\"\n * - 100000 转换为 100‰, ratio:1000, symbol:\"‰\"\n */\n symbol?: string\n\n /**\n * @description 数值格式化千分位分隔符\n * @default true\n */\n thousandSeparator?: boolean\n\n /**\n * @description 数值格式化后缀\n * @default ''\n */\n suffix?: string\n /**\n * @description 数值格式化前缀\n * @default ''\n */\n prefix?: string\n\n /**\n * @description 数值格式化小数位, 使用浏览器提供的 Intl.NumberFormat 中的 minimumFractionDigits 和 maximumFractionDigits 进行格式化, 优先级低于 significantDigits\n * @default 2\n * @example\n * - 1234.5678 转换为 1235, fractionDigits:0 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.6, fractionDigits:1 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.57, fractionDigits:2 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1230.568, fractionDigits:3 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.5678, fractionDigits:4 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.56780, fractionDigits:5 (roundingMode:halfCeil)\n */\n fractionDigits?: number\n\n /**\n * @description 数值格式化有效位, 使用浏览器提供的 Intl.NumberFormat 中的 minimumSignificantDigits 和 maximumSignificantDigits 进行格式化, 优先级高于 fractionDigits\n * @default undefined\n * @example\n * - 1234.5678 转换为 1000, significantDigits:1\n * - 1234.5678 转换为 1200, significantDigits:2\n * - 1234.5678 转换为 1230, significantDigits:3\n * - 1234.5678 转换为 1234, significantDigits:4\n * - 1234.5678 转换为 1234.6, significantDigits:5 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.57, significantDigits:6 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.568, significantDigits:7 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.5678, significantDigits:8 (roundingMode:halfCeil)\n */\n significantDigits?: number\n\n /**\n * @description 数值格式化舍入优先级, 处理同时设置了 significantDigits 和 fractionDigits 时的舍入优先级, 使用浏览器提供的 Intl.NumberFormat 进行格式化, 规则同 Intl.NumberFormat 中的 roundingPriority\n * @default 'morePrecision'\n * @example\n * - 1234.5678 转换为 1230, significantDigits:3 (roundingPriority:lessPrecision)\n * - 1234.5678 转换为 1234.5678, significantDigits:3 (roundingPriority:morePrecision)\n */\n roundingPriority?: 'morePrecision' | 'lessPrecision'\n\n /**\n * @description 数值格式化舍入模式, 使用浏览器提供的 Intl.NumberFormat 进行格式化, 规则同 Intl.NumberFormat 中的 roundingMode\n * @default 'halfExpand'\n * @example\n */\n roundingMode?:\n | 'floor'\n | 'ceil'\n | 'expand'\n | 'trunc'\n | 'halfCeil'\n | 'halfFloor'\n | 'halfExpand'\n | 'halfTrunc'\n | 'halfEven'\n}\n\nexport const zNumFormat = z\n .object({\n type: z.enum(['number', 'percent', 'permille', 'scientific']).default('number').optional(),\n ratio: z.number().default(1).optional(),\n symbol: z.string().default('').optional(),\n thousandSeparator: z.boolean().default(false).optional(),\n prefix: z.string().default('').optional(),\n suffix: z.string().default('').optional(),\n\n fractionDigits: z.number().default(2).optional(),\n significantDigits: z.number().default(0).optional(),\n roundingPriority: z.enum(['morePrecision', 'lessPrecision']).default('morePrecision').optional(),\n roundingMode: z\n .enum(['floor', 'ceil', 'halfEven', 'expand', 'trunc', 'halfFloor', 'halfCeil', 'halfExpand', 'halfTrunc'])\n .default('halfCeil')\n .optional(),\n })\n .optional()\n","import { z } from 'zod'\nimport { zNumFormat } from './format/numFormat'\nimport type { MeasureGroup } from './measures'\n\nexport const zMeasure = z.object({\n id: z.string(),\n alias: z.string().optional(),\n autoFormat: z.boolean().default(true),\n format: zNumFormat.default({}),\n})\n\nexport const zMeasureGroup: z.ZodType<MeasureGroup> = z.object({\n id: z.string(),\n alias: z.string().optional(),\n get children() {\n return z.array(zMeasureGroup.or(zMeasure)).optional()\n },\n})\n\nexport const zMeasures = z.array(zMeasure)\nexport const zMeasureTree = z.array(zMeasureGroup.or(zMeasure))\n","import { z } from 'zod'\nimport { zMeasure } from './zMeasures'\n\nexport const zDualMeasure = z.object({\n id: z.string(),\n\n primaryMeasures: z.array(zMeasure).or(zMeasure).optional(),\n\n secondaryMeasures: z.array(zMeasure).or(zMeasure).optional(),\n})\n\nexport const zDualMeasures = z.array(zDualMeasure)\n","import { z } from 'zod'\n\nexport type FoldInfo = {\n foldMap: Record<string, string | undefined>\n measureId: string\n measureName: string\n measureValue: string\n}\n\nexport type UnfoldInfo = {\n groupName: string\n groupId: string\n colorItems: string[]\n colorIdMap: Record<string, string>\n}\n\nexport const zFoldInfo = z.object({\n foldMap: z.record(z.string(), z.string().or(z.undefined())),\n measureId: z.string(),\n measureName: z.string(),\n measureValue: z.string(),\n})\nexport const zUnfoldInfo = z.object({\n colorItems: z.array(z.string()),\n groupId: z.string(),\n colorIdMap: z.record(z.string(), z.string()),\n groupName: z.string(),\n})\n\nexport const zDatasetReshapeInfo = z.array(\n z.object({\n id: z.string(),\n index: z.number(),\n foldInfo: zFoldInfo,\n foldInfoList: z.array(zFoldInfo).optional(),\n unfoldInfo: zUnfoldInfo,\n }),\n)\n\nexport type DatasetReshapeInfo = z.infer<typeof zDatasetReshapeInfo>\n","import { z } from 'zod'\n\nexport const zEncoding = z.array(\n z.object({\n x: z.array(z.string()).optional(),\n y: z.array(z.string()).optional(),\n color: z.array(z.string()).optional(),\n group: z.array(z.string()).optional(),\n angle: z.array(z.string()).optional(),\n radius: z.array(z.string()).optional(),\n tooltip: z.array(z.string()).optional(),\n size: z.array(z.string()).optional(),\n }),\n)\n\nexport type Encoding = Array<{\n x?: string[]\n y?: string[]\n color?: string[]\n group?: string[]\n angle?: string[]\n radius?: string[]\n tooltip?: string[]\n size?: string[]\n}>\n","import { z } from 'zod'\nimport type { Axis } from './axis'\n\nexport type XBandAxis = Omit<Axis, 'min' | 'max' | 'nice' | 'zero' | 'log' | 'logBase'>\nexport type YBandAxis = Omit<Axis, 'min' | 'max' | 'nice' | 'zero' | 'log' | 'logBase'>\n\nexport const zXBandAxis = z.object({\n visible: z.boolean().default(true).optional(),\n\n labelAutoHide: z.boolean().default(true).optional(),\n labelAutoHideGap: z.number().default(0).optional(),\n labelAutoRotate: z.boolean().default(true).optional(),\n labelAutoRotateAngleRange: z.array(z.number()).default([0, -45, -90]).optional(),\n labelAutoLimit: z.boolean().default(true).optional(),\n labelAutoLimitLength: z.number().default(100).optional(),\n label: z\n .object({\n visible: z.boolean().default(true).optional(),\n labelColor: z.string().default('#797B85').optional(),\n labelFontSize: z.number().default(12).optional(),\n labelFontWeight: z.number().default(400).optional(),\n labelAngle: z.number().default(0).optional(),\n })\n .optional(),\n line: z\n .object({\n visible: z.boolean().default(true).optional(),\n lineColor: z.string().default('rgba(54, 65, 89, 0.30)').optional(),\n lineWidth: z.number().default(1).optional(),\n })\n .optional(),\n tick: z\n .object({\n visible: z.boolean().default(true).optional(),\n tickInside: z.boolean().default(false).optional(),\n tickColor: z.string().default('rgba(54, 65, 89, 0.30)').optional(),\n tickSize: z.number().default(4).optional(),\n })\n .optional(),\n title: z\n .object({\n visible: z.boolean().default(false).optional(),\n titleText: z.string().default('').optional(),\n titleColor: z.string().default('#646A73').optional(),\n titleFontSize: z.number().default(12).optional(),\n titleFontWeight: z.number().default(400).optional(),\n })\n .optional(),\n grid: z\n .object({\n visible: z.boolean().default(false).optional(),\n gridColor: z.string().default('rgba(54, 65, 89, 0.15)').optional(),\n gridWidth: z.number().default(0.5).optional(),\n })\n .optional(),\n})\nexport const zYBandAxis = zXBandAxis\n","import { z } from 'zod'\nimport { type Axis } from './axis'\n\nexport type XLinearAxis = Omit<\n Axis,\n | 'labelAutoHide'\n | 'labelAutoHideGap'\n | 'labelAutoRotate'\n | 'labelAutoRotateAngleRange'\n | 'labelAutoLimit'\n | 'labelAutoLimitLength'\n>\nexport type YLinearAxis = Omit<\n Axis,\n | 'labelAutoHide'\n | 'labelAutoHideGap'\n | 'labelAutoRotate'\n | 'labelAutoRotateAngleRange'\n | 'labelAutoLimit'\n | 'labelAutoLimitLength'\n>\n\nexport const zXLinearAxis = z.object({\n visible: z.boolean().default(true).optional(),\n\n min: z.number().optional(),\n max: z.number().optional(),\n nice: z.boolean().default(true).optional(),\n zero: z.boolean().default(true).optional(),\n log: z.boolean().default(false).optional(),\n logBase: z.number().default(10).optional(),\n inverse: z.boolean().default(false).optional(),\n\n label: z\n .object({\n visible: z.boolean().default(true).optional(),\n labelColor: z.string().default('#797B85').optional(),\n labelFontSize: z.number().default(12).optional(),\n labelFontWeight: z.number().default(400).optional(),\n labelAngle: z.number().default(0).optional(),\n })\n .optional(),\n line: z\n .object({\n visible: z.boolean().default(true).optional(),\n lineColor: z.string().default('rgba(54, 65, 89, 0.30)').optional(),\n lineWidth: z.number().default(1).optional(),\n })\n .optional(),\n tick: z\n .object({\n visible: z.boolean().default(true).optional(),\n tickInside: z.boolean().default(false).optional(),\n tickColor: z.string().default('rgba(54, 65, 89, 0.30)').optional(),\n tickSize: z.number().default(4).optional(),\n })\n .optional(),\n title: z\n .object({\n visible: z.boolean().default(false).optional(),\n titleText: z.string().default('').optional(),\n titleColor: z.string().default('#646A73').optional(),\n titleFontSize: z.number().default(12).optional(),\n titleFontWeight: z.number().default(400).optional(),\n })\n .optional(),\n grid: z\n .object({\n visible: z.boolean().default(false).optional(),\n gridColor: z.string().default('rgba(54, 65, 89, 0.15)').optional(),\n gridWidth: z.number().default(0.5).optional(),\n })\n .optional(),\n})\n\nexport const zYLinearAxis = zXLinearAxis\n","import { z } from 'zod'\n\nexport const zCrosshairLine = z.object({\n visible: z.boolean().optional(),\n lineColor: z.string().optional(),\n labelColor: z.string().optional(),\n labelVisible: z.boolean().optional(),\n labelBackgroundColor: z.string().optional(),\n})\n\nexport type CrosshairLine = z.infer<typeof zCrosshairLine>\n\nexport const zCrosshairRect = z.object({\n visible: z.boolean().optional(),\n rectColor: z.string().optional(),\n labelColor: z.string().optional(),\n labelVisible: z.boolean().optional(),\n labelBackgroundColor: z.string().optional(),\n})\n\nexport type CrosshairRect = z.infer<typeof zCrosshairLine>\n","import { z } from 'zod'\n\nexport const zStackCornerRadius = z.number().or(z.array(z.number())).default([3, 3, 0, 0])\n\nexport type StackCornerRadius = z.infer<typeof zStackCornerRadius>\n","import { z } from 'zod'\nexport const zBackgroundColor = z.string().default('transparent').optional()\n\n/**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\nexport type BackgroundColor = string | undefined\n","import { z } from 'zod'\n\nexport const zColor = z.object({\n colorScheme: z.array(z.string()).optional(),\n colorMapping: z.record(z.string(), z.string()).optional(),\n})\n\nexport const zLinearColor = z.object({\n colorScheme: z.array(z.string()).optional(),\n})\n\nexport type Color = {\n /**\n * 颜色配色方案\n * @description 颜色配色方案用于定义图表中不同元素的颜色\n * @example ['#FFCDD2,#F8BBD0,#E1BEE7,#D1C4E9,#C5CAE9,#BBDEFB,#B3E5FC,#B2EBF2,#B2DFDB,#C8E6C9,#DCEDC8,#F0F4C3,#FFF9C4,#FFECB3,#FFE0B2']\n */\n colorScheme?: string[]\n /**\n * 颜色映射\n * @description 颜色映射用于将数据值映射到具体的颜色\n * @example\n * {\n * 'profit': 'red',\n * 'sales': 'blue',\n * }\n */\n colorMapping?: Record<string, string>\n}\n\nexport type LinearColor = {\n /**\n * 线性渐变颜色配色方案\n * @description 线性渐变颜色配色方案用于定义图表中不同元素的颜色\n * @example ['#FFCDD2,#F8BBD0,#E1BEE7,#D1C4E9,#C5CAE9,#BBDEFB,#B3E5FC,#B2EBF2,#B2DFDB,#C8E6C9,#DCEDC8,#F0F4C3,#FFF9C4,#FFECB3,#FFE0B2']\n */\n colorScheme?: string[]\n}\n","import { z } from 'zod'\n\nexport const zLabel = z.object({\n enable: z.boolean().default(true).optional(),\n})\n\nexport type Label = {\n /**\n * 标签功能是否开启\n * @default true\n */\n enable: boolean\n}\n","import { z } from 'zod'\n\nexport type Legend = {\n /**\n * 图例功能是否开启\n * @default true\n * @example enable: true\n */\n enable?: boolean\n /**\n * 图例边框是否开启\n * @default true\n * @example border: true\n */\n border?: boolean\n /**\n * 图例字体大小\n * @default 12\n * @example labelFontSize: 10\n */\n labelFontSize?: number\n /**\n * 图例字体颜色\n * @default '#fff'\n * @example labelFontColor: '#212121'\n */\n labelFontColor?: string\n /**\n * 图例字体粗细\n * @default 400\n * @example labelFontWeight: 400\n */\n labelFontWeight?: number | string\n /**\n * 图例形状\n * @default 'rectRound'\n * @example shapeType: 'circle'\n */\n shapeType?:\n | 'circle'\n | 'cross'\n | 'diamond'\n | 'square'\n | 'arrow'\n | 'arrow2Left'\n | 'arrow2Right'\n | 'wedge'\n | 'thinTriangle'\n | 'triangle'\n | 'triangleUp'\n | 'triangleDown'\n | 'triangleRight'\n | 'triangleLeft'\n | 'stroke'\n | 'star'\n | 'wye'\n | 'rect'\n | 'arrowLeft'\n | 'arrowRight'\n | 'rectRound'\n | 'roundLine'\n /**\n * 图例位置\n * @default 'right'\n * @example position: 'rightTop'\n */\n position?:\n | 'left'\n | 'leftTop'\n | 'leftBottom'\n | 'lt'\n | 'lb'\n | 'top'\n | 'topLeft'\n | 'topRight'\n | 'tl'\n | 'tr'\n | 'right'\n | 'rightTop'\n | 'rightBottom'\n | 'rt'\n | 'rb'\n | 'bottom'\n | 'bottomLeft'\n | 'bottomRight'\n | 'bl'\n | 'br'\n\n /**\n * @description 存在大量图例时, 最大列数 或 图例最大行数\n * 如果position为水平方向(bottom, bottomLeft, bottomRight, bl, br, top, topLeft, topRight, tl, tr), maxSize控制显示的列数\n * 如果position为垂直方向(left, leftTop, leftBottom, lt, lb, right, rightTop, rightBottom, rt, rb), maxSize控制显示的行数\n * @example maxSize: 2\n * @default 1\n */\n maxSize?: number\n}\n\nexport const zLegend = z.object({\n enable: z.boolean().default(true).optional(),\n border: z.boolean().default(true).optional(),\n maxSize: z.number().default(1).optional(),\n shapeType: z\n .enum([\n 'circle',\n 'cross',\n 'diamond',\n 'square',\n 'arrow',\n 'arrow2Left',\n 'arrow2Right',\n 'wedge',\n 'thinTriangle',\n 'triangle',\n 'triangleUp',\n 'triangleDown',\n 'triangleRight',\n 'triangleLeft',\n 'stroke',\n 'star',\n 'wye',\n 'rect',\n 'arrowLeft',\n 'arrowRight',\n 'rectRound',\n 'roundLine',\n ])\n .default('rectRound')\n .optional(),\n position: z\n .enum([\n 'left',\n 'leftTop',\n 'leftBottom',\n 'lt',\n 'lb',\n 'top',\n 'topLeft',\n 'topRight',\n 'tl',\n 'tr',\n 'right',\n 'rightTop',\n 'rightBottom',\n 'rt',\n 'rb',\n 'bottom',\n 'bottomLeft',\n 'bottomRight',\n 'bl',\n 'br',\n ])\n .default('bottom')\n .optional(),\n labelFontSize: z.number().default(12).optional(),\n labelFontColor: z.string().default('#fff').optional(),\n labelFontWeight: z.number().or(z.string()).default(400).optional(),\n})\n\nexport type ColorLegend = Pick<Legend, 'position' | 'enable'>\nexport const zColorLegend = z.object({\n position: z\n .enum([\n 'left',\n 'leftTop',\n 'leftBottom',\n 'lt',\n 'lb',\n 'top',\n 'topLeft',\n 'topRight',\n 'tl',\n 'tr',\n 'right',\n 'rightTop',\n 'rightBottom',\n 'rt',\n 'rb',\n 'bottom',\n 'bottomLeft',\n 'bottomRight',\n 'bl',\n 'br',\n ])\n .default('bottom')\n .optional(),\n enable: z.boolean().default(true).optional(),\n})\n","import { z } from 'zod'\n\nexport const zTooltip = z.object({\n enable: z.boolean().default(true).optional(),\n})\n\nexport type Tooltip = {\n /**\n * 提示信息功能是否开启\n * @default true\n */\n enable: boolean\n}\n","import { z } from 'zod'\nimport { zXBandAxis, zYBandAxis } from './axes/bandAxis'\nimport { zXLinearAxis, zYLinearAxis } from './axes/linearAxis'\nimport { zCrosshairLine, zCrosshairRect } from './crosshair/crosshair'\nimport { zStackCornerRadius } from './stackCornerRadius/stackCornerRadius'\nimport { zBackgroundColor } from './backgroundColor/backgroundColor'\nimport { zColor } from './color/color'\nimport { zLabel } from './label/label'\nimport { zLegend } from './legend/legend'\nimport { zTooltip } from './tooltip/tooltip'\nimport { zDualChartType } from '../chartType'\n\n/**\n * ---\n * zConfig by 图表类型\n */\nexport const zTableConfig = z.object({\n // Border\n borderColor: z.string().optional(),\n\n // Body\n bodyFontSize: z.number().optional(),\n bodyFontColor: z.string().optional(),\n bodyBackgroundColor: z.string().optional(),\n // Body interaction\n hoverBodyBackgroundColor: z.string().optional(),\n hoverBodyInlineBackgroundColor: z.string().optional(),\n\n // Header\n headerFontSize: z.number().optional(),\n headerFontColor: z.string().optional(),\n headerBackgroundColor: z.string().optional(),\n // Header interaction\n hoverHeaderBackgroundColor: z.string().optional(),\n hoverHeaderInlineBackgroundColor: z.string().optional(),\n\n // Interaction\n selectedBorderColor: z.string().optional(),\n selectedBackgroundColor: z.string().optional(),\n})\nexport const zPivotTableConfig = zTableConfig\n\nexport const zLineConfig = z.object({\n backgroundColor: zBackgroundColor.optional(),\n label: zLabel.optional(),\n color: zColor.optional(),\n tooltip: zTooltip.optional(),\n legend: zLegend.optional(),\n\n xAxis: zXBandAxis.optional(),\n yAxis: zYLinearAxis.optional(),\n crosshairLine: zCrosshairLine.optional(),\n})\nexport const zColumnConfig = z.object({\n backgroundColor: zBackgroundColor.optional(),\n label: zLabel.optional(),\n color: zColor.optional(),\n tooltip: zTooltip.optional(),\n legend: zLegend.optional(),\n\n xAxis: zXBandAxis.optional(),\n yAxis: zYLinearAxis.optional(),\n crosshairRect: zCrosshairRect.optional(),\n stackCornerRadius: zStackCornerRadius.optional(),\n})\nexport const zColumnParallelConfig = zColumnConfig\nexport const zColumnPercentConfig = zColumnConfig\nexport const zBarConfig = z.object({\n backgroundColor: zBackgroundColor.optional(),\n label: zLabel.optional(),\n color: zColor.optional(),\n tooltip: zTooltip.optional(),\n legend: zLegend.optional(),\n\n xAxis: zXLinearAxis.optional(),\n yAxis: zYBandAxis.optional(),\n crosshairRect: zCrosshairRect.optional(),\n stackCornerRadius: zStackCornerRadius.optional(),\n})\nexport const zBarParallelConfig = zBarConfig\nexport const zBarPercentConfig = zBarConfig\nexport const zAreaConfig = z.object({\n backgroundColor: zBackgroundColor.optional(),\n label: zLabel.optional(),\n color: zColor.optional(),\n tooltip: zTooltip.optional(),\n legend: zLegend.optional(),\n\n xAxis: zXBandAxis.optional(),\n yAxis: zYLinearAxis.optional(),\n crosshairLine: zCrosshairLine.optional(),\n})\nexport const zAreaPercentConfig = zAreaConfig\nexport const zAreaRangeConfig = zAreaConfig\nexport const zDualAxisConfig = z.object({\n backgroundColor: zBackgroundColor.optional(),\n label: zLabel.optional(),\n color: zColor.optional(),\n tooltip: zTooltip.optional(),\n legend: zLegend.optional(),\n\n dualChartType: z.array(zDualChartType).or(zDualChartType).optional(),\n primaryYAxis: z.array(zYLinearAxis).or(zYLinearAxis).optional(),\n secondaryYAxis: z.array(zYLinearAxis).or(zYLinearAxis).optional(),\n\n xAxis: zXBandAxis.optional(),\n crosshairRect: zCrosshairRect.optional(),\n})\nexport const zScatterConfig = z.object({\n backgroundColor: zBackgroundColor.optional(),\n label: zLabel.optional(),\n color: zColor.optional(),\n tooltip: zTooltip.optional(),\n legend: zLegend.optional(),\n\n xAxis: zXLinearAxis.optional(),\n yAxis: zYLinearAxis.optional(),\n crosshairLine: zCrosshairLine.optional(),\n})\n\n// polar\nexport const zRoseConfig = z.object({\n backgroundColor: zBackgroundColor.optional(),\n label: zLabel.optional(),\n color: zColor.optional(),\n tooltip: zTooltip.optional(),\n legend: zLegend.optional(),\n})\nexport const zRoseParallelConfig = zRoseConfig\nexport const zPieConfig = z.object({\n backgroundColor: zBackgroundColor.optional(),\n label: zLabel.optional(),\n color: zColor.optional(),\n tooltip: zTooltip.optional(),\n legend: zLegend.optional(),\n})\nexport const zDonutConfig = zPieConfig\nexport const zRadarConfig = zPieConfig\n// other\nexport const zFunnelConfig = zPieConfig\nexport const zHeatmapConfig = zPieConfig\n\n/**\n * ---\n * Type config by chart type\n */\nexport type TableConfig = z.infer<typeof zTableConfig>\nexport type PivotTableConfig = z.infer<typeof zPivotTableConfig>\n// cartesian\nexport type LineConfig = z.infer<typeof zLineConfig>\nexport type ColumnConfig = z.infer<typeof zColumnConfig>\nexport type ColumnParallelConfig = z.infer<typeof zColumnParallelConfig>\nexport type ColumnPercentConfig = z.infer<typeof zColumnPercentConfig>\nexport type BarConfig = z.infer<typeof zBarConfig>\nexport type BarParallelConfig = z.infer<typeof zBarParallelConfig>\nexport type BarPercentConfig = z.infer<typeof zBarPercentConfig>\nexport type AreaConfig = z.infer<typeof zAreaConfig>\nexport type AreaPercentConfig = z.infer<typeof zAreaPercentConfig>\nexport type AreaRangeConfig = z.infer<typeof zAreaRangeConfig>\nexport type ScatterConfig = z.infer<typeof zScatterConfig>\nexport type DualAxisConfig = z.infer<typeof zDualAxisConfig>\n// polar\nexport type RoseConfig = z.infer<typeof zRoseConfig>\nexport type RoseParallelConfig = z.infer<typeof zRoseParallelConfig>\nexport type PieConfig = z.infer<typeof zPieConfig>\nexport type DonutConfig = z.infer<typeof zDonutConfig>\nexport type RadarConfig = z.infer<typeof zRadarConfig>\n// other\nexport type FunnelConfig = z.infer<typeof zFunnelConfig>\nexport type HeatmapConfig = z.infer<typeof zHeatmapConfig>\n\n/**\n * config and type\n */\nexport type Config = z.infer<typeof zConfig>\nexport const zConfig = z.object({\n table: zTableConfig.optional(),\n pivotTable: zPivotTableConfig.optional(),\n\n // cartesian\n line: zLineConfig.optional(),\n column: zColumnConfig.optional(),\n columnParallel: zColumnParallelConfig.optional(),\n columnPercent: zColumnPercentConfig.optional(),\n bar: zBarConfig.optional(),\n barParallel: zBarParallelConfig.optional(),\n barPercent: zBarPercentConfig.optional(),\n area: zAreaConfig.optional(),\n areaPercent: zAreaPercentConfig.optional(),\n areaRange: zAreaRangeConfig.optional(),\n scatter: zScatterConfig.optional(),\n dualAxis: zDualAxisConfig.optional(),\n\n // polar\n rose: zRoseConfig.optional(),\n roseParallel: zRoseParallelConfig.optional(),\n pie: zPieConfig.optional(),\n donut: zDonutConfig.optional(),\n radar: zRadarConfig.optional(),\n // other\n funnel: zFunnelConfig.optional(),\n heatmap: zHeatmapConfig.optional(),\n})\n","import { z } from 'zod'\n\nexport type Axis = {\n /**\n * 轴是否可见\n * @default true\n * @example true\n */\n visible?: boolean\n\n /**\n * 轴的最小值\n * @description 优先级高于 nice 与 zero\n * @default undefined\n * @example 100\n */\n min?: number\n\n /**\n * 轴的最大值\n * @description 优先级高于 nice 与 zero\n * @default undefined\n * @example 10000\n */\n max?: number\n\n /**\n * @description 是否使用对数轴, 仅对数值轴生效\n * @default false\n */\n log?: boolean\n\n /**\n * @description 对数轴的底数, 仅对数值轴生效\n * @default 10\n */\n logBase?: number\n\n /**\n * 是否自动调整轴的刻度间隔,使刻度标签更易读\n * @description 当配置了 min 和 max, 该配置项失效, 仅对数值轴生效\n * @default true\n * @example true\n */\n nice?: boolean\n\n /**\n * 轴是否反向展示\n * @description 仅对数值轴生效\n * @default false\n * @example false\n */\n inverse?: boolean\n\n /**\n * 是否在坐标轴上强制显示 0 值,\n * @description 当配置了 min 和 max, 该配置项失效, 仅对数值轴生效\n * @default true\n * @example true\n */\n zero?: boolean\n\n /**\n * 轴标签, 自动隐藏\n * @description 2个标签若重叠(间隔小于autoHideGap), 则自动隐藏导致重叠的标签. 仅对类目轴生效.\n * @default true\n */\n labelAutoHide?: boolean\n /**\n * 轴标签, 自动隐藏间隔\n * @description 若2个文本标签的间隔小于autoHideGap, 则自动隐藏导致重叠的标签. 仅对类目轴生效.\n * autoHide开启时, 使用autoHide, 设置在autoHideSeparation上\n * autoHide关闭时, 使用sampling采样, 设置在minGap上\n * @default 4\n */\n labelAutoHideGap?: number\n /**\n * 轴标签, 自动旋转\n * @description 当标签宽度超过轴长度时, 自动旋转标签. 仅对类目轴生效.\n * @default true\n */\n labelAutoRotate?: boolean\n /**\n * 轴标签, 自动旋转角度范围\n * @description 当自动旋转开启时, 标签旋转角度范围. 仅对类目轴生效.\n * @default [0, -45, -90]\n */\n labelAutoRotateAngleRange?: number[]\n /**\n * 轴标签, 自动限制长度,\n * @description 当标签宽度超过轴长度时, 超出部分省略号表示, 鼠标悬浮后可见标签, 自动限制标签宽度. 仅对类目轴生效.\n * @default true\n */\n labelAutoLimit?: boolean\n /**\n * 轴标签, 自动限制长度的最大长度\n * @description 当标签文本长度超过最大长度时, 超出部分省略号表示, 鼠标悬浮后可见标签. 仅对类目轴生效.\n * @default 80\n */\n labelAutoLimitLength?: number\n\n /**\n * X轴刻度标签\n * @default true\n */\n label?: {\n /**\n * 标签是否可见\n * @default true\n */\n visible?: boolean\n /**\n * 标签颜色\n * @default '#797B85'\n */\n labelColor?: string\n /**\n * 标签字体大小\n * @default 12\n */\n labelFontSize?: number\n /**\n * 标签字体粗细\n * @default 400\n */\n labelFontWeight?: number\n /**\n * 标签旋转角度\n * @default 0\n */\n labelAngle?: number\n }\n\n /**\n * X轴线\n * @example\n * {\n * visible: true,\n * lineColor: '#ffeecc',\n * lineWidth: 2,\n * }\n */\n line?: {\n /**\n * 轴线是否可见\n * @default true\n */\n visible?: boolean\n /**\n * 轴线颜色\n * @default 'rgba(54, 65, 89, 0.30)'\n */\n lineColor?: string\n /**\n * 轴线宽度\n * @default 1\n */\n lineWidth?: number\n }\n\n /**\n * X轴刻度\n * @default true\n */\n tick?: {\n /**\n * 刻度是否可见\n * @default true\n */\n visible?: boolean\n /**\n * 刻度是否朝内\n * @default false\n */\n tickInside?: boolean\n /**\n * 刻度颜色\n * @default 'rgba(54, 65, 89, 0.30)'\n */\n tickColor?: string\n /**\n * 刻度尺寸\n * @default 4\n */\n tickSize?: number\n }\n\n /**\n * X轴标题\n * @default false\n */\n title?: {\n /**\n * 标题是否可见\n * @default false\n */\n visible?: boolean\n /**\n * 标题文本, 默认跟随字段配置\n * @default ''\n */\n titleText?: string\n /**\n * 标题颜色\n * @default '#646A73'\n */\n titleColor?: string\n /**\n * 标题字体大小\n * @default 12\n */\n titleFontSize?: number\n /**\n * 标题字体粗细\n * @default 400\n */\n titleFontWeight?: number\n }\n\n /**\n * X轴网格线\n * @default false\n */\n grid?: {\n visible?: boolean\n /**\n * 网格线颜色\n * @default 'rgba(54, 65, 89, 0.15)'\n */\n gridColor?: string\n /**\n * 网格线宽度\n * @default 0.5\n */\n gridWidth?: number\n }\n}\n\nexport const zAxis = z.object({\n visible: z.boolean().default(true).optional(),\n\n min: z.number().optional(),\n max: z.number().optional(),\n nice: z.boolean().default(true).optional(),\n zero: z.boolean().default(true).optional(),\n inverse: z.boolean().default(false).optional(),\n log: z.boolean().default(false).optional(),\n logBase: z.number().default(10).optional(),\n\n labelAutoHide: z.boolean().default(true).optional(),\n labelAutoHideGap: z.number().default(4).optional(),\n labelAutoRotate: z.boolean().default(true).optional(),\n labelAutoRotateAngleRange: z.array(z.number()).default([0, -45, -90]).optional(),\n labelAutoLimit: z.boolean().default(true).optional(),\n labelAutoLimitLength: z.number().default(100).optional(),\n label: z\n .object({\n visible: z.boolean().default(true).optional(),\n labelColor: z.string().default('#797B85').optional(),\n labelFontSize: z.number().default(12).optional(),\n labelFontWeight: z.number().default(400).optional(),\n labelAngle: z.number().default(0).optional(),\n })\n .optional(),\n line: z\n .object({\n visible: z.boolean().default(true).optional(),\n lineColor: z.string().default('rgba(54, 65, 89, 0.30)').optional(),\n lineWidth: z.number().default(1).optional(),\n })\n .optional(),\n tick: z\n .object({\n visible: z.boolean().default(true).optional(),\n tickInside: z.boolean().default(false).optional(),\n tickColor: z.string().default('rgba(54, 65, 89, 0.30)').optional(),\n tickSize: z.number().default(4).optional(),\n })\n .optional(),\n title: z\n .object({\n visible: z.boolean().default(false).optional(),\n titleText: z.string().default('').optional(),\n titleColor: z.string().default('#646A73').optional(),\n titleFontSize: z.number().default(12).optional(),\n titleFontWeight: z.number().default(400).optional(),\n })\n .optional(),\n grid: z\n .object({\n visible: z.boolean().default(false).optional(),\n gridColor: z.string().default('rgba(54, 65, 89, 0.15)').optional(),\n gridWidth: z.number().default(0.5).optional(),\n })\n .optional(),\n})\n","import { z } from 'zod'\nimport { zConfig } from '../config'\n\nexport const zCustomThemeConfig = z.object({\n config: zConfig.optional(),\n})\n\nexport const zCustomTheme = z.record(z.string(), zCustomThemeConfig).optional()\n\nexport type CustomTheme = z.infer<typeof zCustomTheme>\nexport type CustomThemeConfig = z.infer<typeof zCustomThemeConfig>\n","import { z } from 'zod'\n\nexport const zTheme = z.string()\n\ntype Light = 'light' & { readonly brand: unique symbol }\ntype Dark = 'dark' & { readonly brand: unique symbol }\n\n/**\n * 主题\n * @default light\n * @description 内置 light、dark 两种主题, 新的主题可以通过registerTheme自定义主题.\n */\nexport type Theme = Light | Dark | string\n","import { z } from 'zod'\nimport type { Datum } from '../properties'\n\nexport type ValueSelector = string | number\n\nexport type PartialDatumSelector = Datum\n\nexport type MeasureSelector = {\n field: string\n operator?: '=' | '==' | '!=' | '>' | '<' | '>=' | '<=' | 'between'\n op?: '=' | '==' | '!=' | '>' | '<' | '>=' | '<=' | 'between'\n value: string | number | Array<string | number>\n}\n\nexport type DimensionSelector = {\n field: string\n operator?: 'in' | 'not in'\n op?: 'in' | 'not in'\n value: string | number | Array<string | number>\n}\n\nexport type Selector = ValueSelector | PartialDatumSelector | MeasureSelector | DimensionSelector\n\nexport type Selectors = Array<Selector>\n\nexport const zSelector = z.union([\n z.string(),\n z.number(),\n z.object({\n field: z.string(),\n operator: z.enum(['=', '==', '!=', '>', '<', '>=', '<=', 'between']).optional(),\n op: z.enum(['=', '==', '!=', '>', '<', '>=', '<=', 'between']).optional(),\n value: z.union([z.string(), z.number(), z.array(z.union([z.string(), z.number()]))]),\n }),\n z.object({\n field: z.string(),\n operator: z.enum(['in', 'not in']).optional(),\n op: z.enum(['in', 'not in']).optional(),\n value: z.union([z.string(), z.number(), z.array(z.union([z.string(), z.number()]))]),\n }),\n])\n\nexport const zSelectors = z.array(zSelector)\n","import { z } from 'zod'\nimport { zSelector, zSelectors, type Selector, type Selectors } from '../../dataSelector'\n\nexport type BarStyle = {\n /**\n * 数据选择器\n * @description\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n * @type {Selector | Selectors}\n * @example 数值选择器\n * selector = \"tool\"\n * selector = [\"tool\", \"book\"]\n * selector = 100\n * selector = [100, 200]\n * @example 局部数据选择器\n * selector = { profit: 100 }\n * selector = [{ profit: 100 }, { profit: 200 }]\n * @example 条件维度选择器\n * selector = {\n * field: 'category',\n * operator: 'in',\n * value: 'tool'\n * }\n * selector = {\n * field: 'category',\n * operator: 'not in',\n * value: 'book'\n * }\n * @example 条件指标选择器\n * selector = {\n * field: 'profit',\n * operator: '>=',\n * value: 100\n * }\n * selector = {\n * field: 'profit',\n * operator: 'between'\n * value: [100, 300]\n * }\n */\n selector?: Selector | Selectors\n\n /**\n * 柱状图颜色\n * @description 柱状图颜色\n * @type {string}\n */\n barColor?: string\n /**\n * 柱状图颜色透明度\n * @description 柱状图颜色透明度\n * @type {number}\n */\n barColorOpacity?: number\n /**\n * 柱状图边框颜色\n * @description 柱状图边框颜色\n * @type {string}\n */\n barBorderColor?: string\n /**\n * 柱状图边框宽度\n * @description 柱状图边框宽度\n * @type {number}\n */\n barBorderWidth?: number\n /**\n * 柱状图边框样式\n * @description 柱状图边框样式\n * @type {number}\n * @example solid\n * @example dashed\n * @example dotted\n */\n barBorderStyle?: 'solid' | 'dashed' | 'dotted'\n /**\n * 柱状图圆角\n * @description 柱状图圆角\n * @type {number | number[]}\n * @example 4\n * @example [0, 0, 10, 10]\n */\n barRadius?: number | number[]\n}\n\nexport const zBarStyle = z.object({\n selector: z.union([zSelector, zSelectors]).optional(),\n barColor: z.string().optional(),\n barColorOpacity: z.number().optional(),\n barBorderColor: z.string().optional(),\n barBorderWidth: z.number().optional(),\n barBorderStyle: z.union([z.literal('solid'), z.literal('dashed'), z.literal('dotted')]).optional(),\n barRadius: z.union([z.number(), z.array(z.number())]).optional(),\n})\n","import { z } from 'zod'\nimport { zSelector, zSelectors, type Selector, type Selectors } from '../../dataSelector'\n\nexport type PointStyle = {\n /**\n * 数据选择器\n * @description\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n * @type {Selector | Selectors}\n * @example 数值选择器\n * selector = \"tool\"\n * selector = [\"tool\", \"book\"]\n * selector = 100\n * selector = [100, 200]\n * @example 局部数据选择器\n * selector = { profit: 100 }\n * selector = [{ profit: 100 }, { profit: 200 }]\n * @example 条件维度选择器\n * selector = {\n * field: 'category',\n * operator: 'in',\n * value: 'tool'\n * }\n * selector = {\n * field: 'category',\n * operator: 'not in',\n * value: 'book'\n * }\n * @example 条件指标选择器\n * selector = {\n * field: 'profit',\n * operator: '>=',\n * value: 100\n * }\n * selector = {\n * field: 'profit',\n * operator: 'between'\n * value: [100, 300]\n * }\n */\n selector?: Selector | Selectors\n\n /**\n * 点大小\n * @description 点大小\n * @type {number}\n */\n pointSize?: number\n /**\n * 柱状图颜色\n * @description 柱状图颜色\n * @type {string}\n */\n pointColor?: string\n /**\n * 柱状图颜色透明度\n * @description 柱状图颜色透明度\n * @type {number}\n */\n pointColorOpacity?: number\n /**\n * 柱状图边框颜色\n * @description 柱状图边框颜色\n * @type {string}\n */\n pointBorderColor?: string\n /**\n * 柱状图边框宽度\n * @description 柱状图边框宽度\n * @type {number}\n */\n pointBorderWidth?: number\n /**\n * 柱状图边框样式\n * @description 柱状图边框样式\n * @type {number}\n * @example solid\n * @example dashed\n * @example dotted\n */\n pointBorderStyle?: 'solid' | 'dashed' | 'dotted'\n}\n\nexport const zPointStyle = z.object({\n selector: z.union([zSelector, zSelectors]).optional(),\n pointSize: z.number().optional(),\n pointColor: z.string().optional(),\n pointColorOpacity: z.number().optional(),\n pointBorderColor: z.string().optional(),\n pointBorderWidth: z.number().optional(),\n pointBorderStyle: z.union([z.enum(['solid', 'dashed', 'dotted'])]).optional(),\n})\n","import { z } from 'zod'\nimport { zSelector, zSelectors, type Selector, type Selectors } from '../../dataSelector'\n\nexport type LineStyle = {\n /**\n * 数据选择器\n * @description\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n * @type {Selector | Selectors}\n * @example 数值选择器\n * selector = \"tool\"\n * selector = [\"tool\", \"book\"]\n * selector = 100\n * selector = [100, 200]\n * @example 局部数据选择器\n * selector = { profit: 100 }\n * selector = [{ profit: 100 }, { profit: 200 }]\n * @example 条件维度选择器\n * selector = {\n * field: 'category',\n * operator: 'in',\n * value: 'tool'\n * }\n * selector = {\n * field: 'category',\n * operator: 'not in',\n * value: 'book'\n * }\n * @example 条件指标选择器\n * selector = {\n * field: 'profit',\n * operator: '>=',\n * value: 100\n * }\n * selector = {\n * field: 'profit',\n * operator: 'between'\n * value: [100, 300]\n * }\n */\n selector?: Selector | Selectors\n\n /**\n * 折线图是否平滑\n * @description 折线图是否平滑\n * @type {boolean}\n */\n lineSmooth?: boolean\n\n /**\n * 柱状图颜色\n * @description 柱状图颜色\n * @type {string}\n */\n lineColor?: string\n /**\n * 柱状图颜色透明度\n * @description 柱状图颜色透明度\n * @type {number}\n */\n lineColorOpacity?: number\n /**\n * 柱状图边框宽度\n * @description 柱状图边框宽度\n * @type {number}\n */\n lineWidth?: number\n /**\n * 柱状图边框样式\n * @description 柱状图边框样式\n * @type {number}\n * @example solid\n * @example dashed\n * @example dotted\n */\n lineStyle?: 'solid' | 'dashed' | 'dotted'\n}\n\nexport const zLineStyle = z.object({\n selector: z.union([zSelector, zSelectors]).optional(),\n lineSmooth: z.boolean().optional(),\n lineColor: z.string().optional(),\n lineColorOpacity: z.number().optional(),\n lineWidth: z.number().optional(),\n lineStyle: z.union([z.enum(['solid', 'dashed', 'dotted'])]).optional(),\n})\n","import { z } from 'zod'\nimport { zSelector, zSelectors, type Selector, type Selectors } from '../../dataSelector'\n\nexport type AreaStyle = {\n /**\n * 数据选择器\n * @description\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n * @type {Selector | Selectors}\n * @example 数值选择器\n * selector = \"tool\"\n * selector = [\"tool\", \"book\"]\n * selector = 100\n * selector = [100, 200]\n * @example 局部数据选择器\n * selector = { profit: 100 }\n * selector = [{ profit: 100 }, { profit: 200 }]\n * @example 条件维度选择器\n * selector = {\n * field: 'category',\n * operator: 'in',\n * value: 'tool'\n * }\n * selector = {\n * field: 'category',\n * operator: 'not in',\n * value: 'book'\n * }\n * @example 条件指标选择器\n * selector = {\n * field: 'profit',\n * operator: '>=',\n * value: 100\n * }\n * selector = {\n * field: 'profit',\n * operator: 'between'\n * value: [100, 300]\n * }\n */\n selector?: Selector | Selectors\n\n /**\n * 面积图元的颜色\n * @description 面积图元的颜色\n * @type {string}\n */\n areaColor?: string\n /**\n * 面积图元的颜色透明度\n * @description 面积图元的颜色透明度\n * @type {number}\n */\n areaColorOpacity?: number\n}\n\nexport const zAreaStyle = z.object({\n selector: z.union([zSelector, zSelectors]).optional(),\n areaColor: z.string().optional(),\n areaColorOpacity: z.number().optional(),\n})\n","import { z } from 'zod'\nimport { zBarStyle } from './barStyle'\nimport { zPointStyle } from './pointStyle'\nimport { zLineStyle } from './lineStyle'\nimport { zAreaStyle } from './areaStyle'\n\nexport const zMarkStyle = z.object({\n barStyle: zBarStyle.or(z.array(zBarStyle)).optional(),\n pointStyle: zPointStyle.or(z.array(zPointStyle)).optional(),\n lineStyle: zLineStyle.or(z.array(zLineStyle)).optional(),\n areaStyle: zAreaStyle.or(z.array(zAreaStyle)).optional(),\n})\n\nexport type MarkStyle = z.infer<typeof zMarkStyle>\n","import { zSelector, zSelectors, type Selector, type Selectors } from '../../dataSelector'\nimport { z } from 'zod'\n/**\n * @description 标注点, 根据用户设置的selector, 在数据点的左下方, 显示一个带有背景的标签.\n */\nexport type AnnotationPoint = {\n /**\n * @description 标注点的选择器, 用于选择数据点.\n */\n selector: Selector | Selectors\n /**\n * @description 标注的文本\n * @default ''\n * @example '标注文本'\n */\n text?: string | string[]\n /**\n * @description 文本颜色\n * @example 'red'\n */\n textColor?: string\n /**\n * @description 文本字体大小\n * @example 12\n */\n textFontSize?: number\n /**\n * @description 文本字体重量\n * @example 400\n */\n textFontWeight?: number\n /**\n * @description 文本对齐方式, 一般情况下, 设置为right, 文本显示在标注点左侧, 确保显示在图表的可见区域\n * 建议设置为'right', 这样可以确保文本在标注点的左侧\n * right: 文本在标注点的左侧, 文本的右侧边缘对齐标注点\n * left: 文本在标注点的右侧, 文本的左侧边缘对齐标注点\n * center: 文本在标注点的中心, 文本的中心对齐标注点\n * @example 'right' 文本在标注点的左侧\n */\n textAlign?: 'left' | 'right' | 'center'\n /**\n * @description 文本垂直对齐方式, 一般情况下, 设置为top, 文本显示在标注点底部, 确保显示在图表的可见区域\n * 建议设置为'top', 这样可以确保文本完整的显示在图表的可见区域\n * top: 文本在标注点的底部, 文本的顶部边缘对齐标注点\n * middle: 文本在标注点的中心, 文本的中心对齐标注点\n * bottom: 文本在标注点的顶部, 文本的底部边缘对齐标注点\n * @example 'top' 文本在标注点的底部\n */\n textBaseline?: 'top' | 'middle' | 'bottom'\n /**\n * @description 标注点整体在Y方向的偏移像素距离, 当标注点在图表上方(数值较大时)时, 建议设置为正值, 标注点在图表下方(数值较小时)时, 建议设置为负值.\n * 负值则整体向上偏移, 例如设置为-10, 则整个标注点组件包括文本、文本背景, 一起向上偏移10像素\n * 正值则整体向下偏移, 例如设置为10, 则整个标注点组件包括文本、文本背景, 一起向下偏移10像素\n * @example offsetY: 5, 标注点整体向下偏移5像素\n */\n offsetY?: number\n /**\n * @description 标注点整体在X方向的偏移像素距离, 当标注点在图表左侧(类目轴起点)时, 建议设置为正值, 标注点在图表右侧(类目轴终点)时, 建议设置为负值.\n * 负值则整体向左偏移, 例如设置为-10, 则整个标注点组件包括文本、文本背景, 一起向左偏移10像素\n * 正值则整体向右偏移, 例如设置为10, 则整个标注点组件包括文本、文本背景, 一起向右偏移10像素\n * @example offsetX: 5, 标注点整体向右偏移5像素\n */\n offsetX?: number\n /**\n * @description 背景可见\n * @example true\n */\n backgroundVisible?: boolean\n /**\n * @description 背景颜色\n * @example 'red'\n */\n backgroundColor?: string\n /**\n * @description 背景边框颜色\n * @example 'red'\n */\n backgroundBorderColor?: string\n /**\n * @description 背景边框宽度\n * @example 2\n */\n backgroundBorderWidth?: number\n /**\n * @description 背景边框圆角\n * @example 4\n */\n backgroundBorderRadius?: number\n /**\n * @description 背景内边距\n * @example 4\n */\n backgroundPadding?: number\n}\n\nexport const zAnnotationPoint = z.object({\n selector: z.union([zSelector, zSelectors]),\n text: z.string().or(z.array(z.string())).optional(),\n textColor: z.string().default('#ffffff').optional(),\n textFontSize: z.number().default(12).optional(),\n textFontWeight: z.number().default(400).optional(),\n textAlign: z.enum(['left', 'right', 'center']).default('center').optional(),\n textBaseline: z.enum(['top', 'middle', 'bottom']).default('middle').optional(),\n backgroundVisible: z.boolean().default(true).optional(),\n backgroundColor: z.string().default('#212121').optional(),\n backgroundBorderColor: z.string().optional(),\n backgroundBorderWidth: z.number().default(1).optional(),\n backgroundBorderRadius: z.number().default(4).optional(),\n backgroundPadding: z.number().optional(),\n offsetY: z.number().default(0).optional(),\n offsetX: z.number().default(0).optional(),\n})\n","import { zSelector, zSelectors, type Selector, type Selectors } from '../../dataSelector'\nimport { z } from 'zod'\n\n/**\n * @description 垂直标注线, 根据用户设置的selector 或 xValue, 从下向上绘制一条末尾有箭头的线, 标签默认在标注线终点的正左侧\n */\nexport type AnnotationVerticalLine = {\n /**\n * @description 依赖选择的数据, 进行数据标记.\n */\n selector?: Selector | Selectors\n /**\n * @description 固定的x值, 用于标注垂直线, 类目轴在x方向, 则可输入维值, 数值轴在x方向, 则可输入具体的数值\n */\n xValue?: (number | string) | (number | string)[]\n /**\n * @description 标注的文本\n * @default ''\n * @example '标注文本'\n */\n text?: string | string[]\n /**\n * @description 文本位置, 标注线的标签位置(标签相对线的相对位置)。\n * @example 'outsideEnd'\n */\n textPosition?: 'outsideStart' | 'outsideEnd' | 'outsideMiddle' | 'insideStart' | 'insideMiddle' | 'insideEnd'\n /**\n * @description 文本颜色\n * @example 'red'\n */\n textColor?: string\n /**\n * @description 文本字体大小\n * @example 12\n */\n textFontSize?: number\n /**\n * @description 文本字体重量\n * @example 400\n */\n textFontWeight?: number\n /**\n * @description 文本对齐方式, 一般情况下, 无需设置\n * 建议设置为'right', 这样可以确保文本在标注线的左侧\n * right: 文本在参考线的左侧, 文本的右侧边缘对齐(垂直)标注线\n * left: 文本在参考线的右侧, 文本的左侧边缘对齐(垂直)标注线\n * center: 文本在参考线的中心, 文本的中心对齐(垂直)标注线\n * @example 'right'\n */\n textAlign?: 'left' | 'right' | 'center'\n /**\n * @description 文本垂直对齐方式, 一般情况下, 无需设置\n * 建议设置为'top', 这样可以确保文本完整的显示在图表的可见区域\n * top: 文本在参考线的底部, 文本的顶部边缘对齐(垂直)标注线的终点\n * middle: 文本在参考线的中心, 文本的中心对齐(垂直)标注线的终点\n * bottom: 文本在参考线的顶部, 文本的底部边缘对齐(垂直)标注线的终点\n * @example 'top'\n */\n textBaseline?: 'top' | 'middle' | 'bottom'\n /**\n * @description (垂直)标注线整体在Y方向的偏移像素距离, 一般情况下, 无需设置\n * 负值则整体向上偏移, 例如设置为-10, 则整个标注线组件包括文本、箭头、线段, 一起向上偏移10像素\n * 正值则整体向下偏移, 例如设置为10, 则整个标注线组件包括文本、箭头、线段, 一起向下偏移10像素\n * @example offsetY: 0\n */\n offsetY?: number\n /**\n * @description (垂直)标注线整体在X方向的偏移像素距离, 一般情况下, 无需设置\n * 负值则整体向左偏移, 例如设置为-10, 则整个标注线组件包括文本、箭头、线段, 一起向左偏移10像素\n * 正值则整体向右偏移, 例如设置为10, 则整个标注线组件包括文本、箭头、线段, 一起向右偏移10像素\n * @example offsetX: 0\n */\n offsetX?: number\n /**\n * @description 线可见\n * @example true\n */\n lineVisible?: boolean\n /**\n * @description 线颜色\n * @example 'red'\n */\n lineColor?: string\n /**\n * @description 线宽度\n * @example 2\n */\n lineWidth?: number\n /**\n * @description 线样式\n * @example 'solid'\n */\n lineStyle?: 'solid' | 'dashed' | 'dotted'\n /**\n * @description 背景可见\n * @example true\n */\n backgroundVisible?: boolean\n /**\n * @description 背景颜色\n * @example 'red'\n */\n backgroundColor?: string\n /**\n * @description 背景边框颜色\n * @example 'red'\n */\n backgroundBorderColor?: string\n /**\n * @description 背景边框宽度\n * @example 2\n */\n backgroundBorderWidth?: number\n /**\n * @description 背景边框圆角\n * @example 4\n */\n backgroundBorderRadius?: number\n /**\n * @description 背景内边距\n * @example 4\n */\n backgroundPadding?: number\n}\n\nexport const zAnnotationVerticalLine = z.object({\n selector: z.union([zSelector, zSelectors]).optional(),\n xValue: z.union([z.number(), z.string(), z.array(z.union([z.number(), z.string()]))]).optional(),\n text: z.string().or(z.array(z.string())).optional(),\n textPosition: z\n .enum(['outsideStart', 'outsideEnd', 'outsideMiddle', 'insideStart', 'insideMiddle', 'insideEnd'])\n .default('insideEnd')\n .optional(),\n textColor: z.string().default('#ffffff').optional(),\n textFontSize: z.number().default(12).optional(),\n textFontWeight: z.number().default(400).optional(),\n textAlign: z.enum(['left', 'right', 'center']).default('right').optional(),\n textBaseline: z.enum(['top', 'middle', 'bottom']).default('top').optional(),\n\n lineVisible: z.boolean().default(true).optional(),\n lineColor: z.string().default('#212121').optional(),\n lineWidth: z.number().default(1).optional(),\n lineStyle: z\n .union([z.literal('solid'), z.literal('dashed'), z.literal('dotted')])\n .default('dashed')\n .optional(),\n\n backgroundVisible: z.boolean().default(true).optional(),\n backgroundColor: z.string().default('#212121').optional(),\n backgroundBorderColor: z.string().default('#212121').optional(),\n backgroundBorderRadius: z.number().default(4).optional(),\n backgroundBorderWidth: z.number().default(1).optional(),\n backgroundPadding: z.number().default(2).optional(),\n\n offsetX: z.number().default(0),\n offsetY: z.number().default(0),\n})\n","import { zSelector, zSelectors, type Selector, type Selectors } from '../../dataSelector'\nimport { z } from 'zod'\n\n/**\n * @description 水平标注线, 根据用户设置的selector 或 yValue, 从左向右绘制一条末尾有箭头的线, 标签默认在标注线的终点正下方\n */\nexport type AnnotationHorizontalLine = {\n /**\n * @description 依赖选择的数据, 进行数据标记.\n */\n selector?: Selector | Selectors\n /**\n * @description 固定的y值, 用于标注水平线, 类目轴在y方向, 则可输入维值, 数值轴在y方向, 则可输入具体的数值\n */\n yValue?: (number | string) | (number | string)[]\n /**\n * @description 标注的文本\n * @default ''\n * @example '标注文本'\n */\n text?: string | string[]\n /**\n * 文本位置\n * @description 标注线的标签位置(标签相对线的相对位置)。\n * @example 'outsideEnd'\n */\n textPosition?: 'outsideStart' | 'outsideEnd' | 'outsideMiddle' | 'insideStart' | 'insideMiddle' | 'insideEnd'\n /**\n * @description 文本颜色\n * @example 'red'\n */\n textColor?: string\n /**\n * @description 文本字体大小\n * @example 12\n */\n textFontSize?: number\n /**\n * @description 文本字体重量\n * @example 400\n */\n textFontWeight?: number\n /**\n * @description 文本对齐方式, 一般情况下, 无需设置\n * 建议设置为'right', 这样可以确保文本在标注线的左侧\n * right: 文本在参考线的左侧, 文本的右侧边缘对齐(水平)标注线的终点\n * left: 文本在参考线的右侧, 文本的左侧边缘对齐(水平)标注线的终点\n * center: 文本在参考线的中心, 文本的中心对齐(水平)标注线的终点\n * @example 'right'\n */\n textAlign?: 'left' | 'right' | 'center'\n /**\n * @description 文本垂直对齐方式, 一般情况下, 无需设置\n * 建议设置为'top', 这样可以确保文本完整的显示在图表的可见区域\n * top: 文本在参考线的底部, 文本的顶部边缘对齐(水平)标注线\n * middle: 文本在参考线的中心, 文本的中心对齐(水平)标注线\n * bottom: 文本在参考线的顶部, 文本的底部边缘对齐(水平)标注线\n * @example 'top'\n */\n textBaseline?: 'top' | 'middle' | 'bottom'\n /**\n * @description (水平)标注线整体在Y方向的偏移像素距离, 一般情况下, 无需设置\n * 负值则整体向上偏移, 例如设置为-10, 则整个(水平)标注线组件包括文本、箭头、线段, 一起向上偏移10像素\n * 正值则整体向下偏移, 例如设置为10, 则整个(水平)标注线组件包括文本、箭头、线段, 一起向下偏移10像素\n * @example offsetY: 0\n */\n offsetY?: number\n /**\n * @description (水平)标注线整体在X方向的偏移像素距离, 一般情况下, 无需设置\n * 负值则整体向左偏移, 例如设置为-10, 则整个(水平)标注线组件包括文本、箭头、线段, 一起向左偏移10像素\n * 正值则整体向右偏移, 例如设置为10, 则整个(水平)标注线组件包括文本、箭头、线段, 一起向右偏移10像素\n * @example offsetX: 0\n */\n offsetX?: number\n /**\n * 线可见\n * @description 线可见\n * @example true\n */\n lineVisible?: boolean\n /**\n * @description 线颜色\n * @example 'red'\n */\n lineColor?: string\n /**\n * @description 线宽度\n * @example 2\n */\n lineWidth?: number\n /**\n * @description 线样式\n * @example 'solid'\n */\n lineStyle?: 'solid' | 'dashed' | 'dotted'\n /**\n * @description 背景可见\n * @example true\n */\n backgroundVisible?: boolean\n /**\n * @description 背景颜色\n * @example 'red'\n */\n backgroundColor?: string\n /**\n * @description 背景边框颜色\n * @example 'red'\n */\n backgroundBorderColor?: string\n /**\n * 背景边框宽度\n * @description 背景边框宽度\n * @example 2\n */\n backgroundBorderWidth?: number\n /**\n * @description 背景边框圆角\n * @example 4\n */\n backgroundBorderRadius?: number\n /**\n * @description 背景内边距\n * @example 4\n */\n backgroundPadding?: number\n}\n\nexport const zAnnotationHorizontalLine = z.object({\n selector: z.union([zSelector, zSelectors]).optional(),\n yValue: z.union([z.number(), z.string(), z.array(z.union([z.number(), z.string()]))]).optional(),\n text: z.string().or(z.array(z.string())).optional(),\n textPosition: z\n .enum(['outsideStart', 'outsideEnd', 'outsideMiddle', 'insideStart', 'insideMiddle', 'insideEnd'])\n .default('insideEnd')\n .optional(),\n textColor: z.string().default('#ffffff').optional(),\n textFontSize: z.number().default(12).optional(),\n textFontWeight: z.number().default(400).optional(),\n textAlign: z.enum(['left', 'right', 'center']).default('right').optional(),\n textBaseline: z.enum(['top', 'middle', 'bottom']).default('top').optional(),\n\n lineVisible: z.boolean().default(true).optional(),\n lineColor: z.string().default('#212121').optional(),\n lineWidth: z.number().default(1).optional(),\n lineStyle: z\n .union([z.literal('solid'), z.literal('dashed'), z.literal('dotted')])\n .default('dashed')\n .optional(),\n\n backgroundVisible: z.boolean().default(true).optional(),\n backgroundColor: z.string().default('#212121').optional(),\n backgroundBorderColor: z.string().default('#212121').optional(),\n backgroundBorderRadius: z.number().default(4).optional(),\n backgroundBorderWidth: z.number().default(1).optional(),\n backgroundPadding: z.number().default(2).optional(),\n\n offsetX: z.number().default(0),\n offsetY: z.number().default(0),\n})\n","import { zSelector, zSelectors, type Selector, type Selectors } from '../../dataSelector'\nimport { z } from 'zod'\n\nexport type AnnotationArea = {\n /**\n * @description 依赖选择的数据, 进行数据标记.\n */\n selector: Selector | Selectors\n /**\n * @description 标注的文本\n * @default ''\n * @example '标注文本'\n */\n text?: string | string[]\n /**\n * @description 文本位置\n * @example 'top'\n */\n textPosition?: 'top' | 'topRight' | 'topLeft' | 'bottom' | 'bottomLeft' | 'bottomRight' | 'left' | 'right'\n\n /**\n * @description 文本颜色\n * @example 'red'\n */\n textColor?: string\n /**\n * @description 文本字体大小\n * @example 12\n */\n textFontSize?: number\n /**\n * @description 文本字体重量\n * @example 400\n */\n textFontWeight?: number\n /**\n * @description 文本对齐方式, 一般情况下, 设置为right, 文本显示在标注面中间, 确保显示在图表的可见区域\n * 建议设置为'center', 这样可以确保文本在标注面的中间\n * right: 文本在标注面的左侧, 文本的右侧边缘对齐标注面\n * left: 文本在标注面的右侧, 文本的左侧边缘对齐标注面\n * center: 文本在标注面的中心, 文本的中心对齐标注面\n * @example 'center' 文本在标注面的中间\n */\n textAlign?: 'left' | 'right' | 'center'\n /**\n * @description 文本垂直对齐方式, 一般情况下, 设置为top, 文本显示在标注面底部, 确保显示在图表的可见区域\n * 建议设置为'top', 这样可以确保文本完整的显示在图表的可见区域\n * top: 文本在标注面的底部, 文本的顶部边缘对齐标注面\n * middle: 文本在标注面的中心, 文本的中心对齐标注面\n * bottom: 文本在标注面的顶部, 文本的底部边缘对齐标注面\n * @example 'top' 文本在标注面的底部\n */\n textBaseline?: 'top' | 'middle' | 'bottom'\n /**\n * @description 标注面整体在Y方向的偏移像素距离, 当标注面在图表上方(数值较大时)时, 建议设置为正值, 标注面在图表下方(数值较小时)时, 建议设置为负值.\n * 负值则整体向上偏移, 例如设置为-10, 则整个标注面组件包括文本、面图元, 一起向上偏移10像素\n * 正值则整体向下偏移, 例如设置为10, 则整个标注面组件包括文本、面图元, 一起向下偏移10像素\n * @example offsetY: 5, 标注面整体向下偏移5像素\n */\n offsetY?: number\n /**\n * @description 标注面整体在X方向的偏移像素距离, 当标注面在图表左侧(类目轴起点)时, 建议设置为正值, 标注面在图表右侧(类目轴终点)时, 建议设置为负值.\n * 负值则整体向左偏移, 例如设置为-10, 则整个标注面组件包括文本、面图元, 一起向左偏移10像素\n * 正值则整体向右偏移, 例如设置为10, 则整个标注面组件包括文本、面图元, 一起向右偏移10像素\n * @example offsetX: 5, 标注面整体向右偏移5像素\n */\n offsetX?: number\n /**\n * @description 背景可见\n * @example true\n */\n backgroundVisible?: boolean\n /**\n * @description 背景颜色\n * @example 'red'\n */\n backgroundColor?: string\n /**\n * 背景边框颜色\n * @description 背景边框颜色\n * @example 'red'\n */\n backgroundBorderColor?: string\n /**\n * @description 背景边框宽度\n * @example 2\n */\n backgroundBorderWidth?: number\n /**\n * 背景边框圆角\n * @description 背景边框圆角\n * @example 4\n */\n backgroundBorderRadius?: number\n /**\n * @description 背景内边距\n * @example 4\n */\n backgroundPadding?: number\n /**\n * @description 面积区域颜色\n * @example 'red'\n */\n areaColor?: string\n /**\n * @description 面积区域颜色透明度\n * @example 0.5\n */\n areaColorOpacity?: number\n /**\n * @description 面积区域边框颜色\n * @default 'red'\n * @example 'red'\n */\n areaBorderColor?: number\n /**\n * @description 面积区域边框宽度\n * @example 2\n */\n areaBorderWidth?: number\n /**\n * @description 面积区域边框圆角\n * @example 4\n */\n areaBorderRadius?: number\n /**\n * @description 面积区域的边距\n * @example 0\n */\n outerPadding?: number\n}\n\nexport const zAnnotationArea = z.object({\n selector: z.union([zSelector, zSelectors]),\n textPosition: z\n .enum(['top', 'topRight', 'topLeft', 'bottom', 'bottomLeft', 'bottomRight', 'left', 'right'])\n .default('top')\n .optional(),\n text: z.string().or(z.array(z.string())).optional(),\n textColor: z.string().default('#ffffff').optional(),\n textFontSize: z.number().default(12).optional(),\n textFontWeight: z.number().default(400).optional(),\n textAlign: z.enum(['left', 'right', 'center']).default('center').optional(),\n textBaseline: z.enum(['top', 'middle', 'bottom']).default('top').optional(),\n\n backgroundVisible: z.boolean().default(true).optional(),\n backgroundColor: z.string().default('#191d24').optional(),\n backgroundBorderColor: z.string().default('#191d24').optional(),\n backgroundBorderWidth: z.number().default(1).optional(),\n backgroundBorderRadius: z.number().default(4).optional(),\n backgroundPadding: z.number().default(4).optional(),\n\n areaColor: z.string().default('#888888').optional(),\n areaColorOpacity: z.number().default(0.15).optional(),\n areaBorderColor: z.string().default('#888888').optional(),\n areaBorderWidth: z.number().default(1).optional(),\n areaBorderRadius: z.number().default(4).optional(),\n\n outerPadding: z.number().default(4).optional(),\n offsetX: z.number().default(0).optional(),\n offsetY: z.number().default(0).optional(),\n})\n","import { z } from 'zod'\nimport { zAnnotationPoint } from './annotationPoint'\nimport { zAnnotationVerticalLine } from './annotationVerticalLine'\nimport { zAnnotationHorizontalLine } from './annotationHorizontalLine'\nimport { zAnnotationArea } from './annotationArea'\n\nexport const zAnnotation = z.object({\n annotationPoint: zAnnotationPoint.or(z.array(zAnnotationPoint)).optional(),\n annotationVerticalLine: zAnnotationVerticalLine.or(z.array(zAnnotationVerticalLine)).optional(),\n annotationHorizontalLine: zAnnotationHorizontalLine.or(z.array(zAnnotationHorizontalLine)).optional(),\n annotationArea: zAnnotationArea.or(z.array(zAnnotationArea)).optional(),\n})\n\nexport type Annotation = z.infer<typeof zAnnotation>\n","import { z } from 'zod'\n\nexport const zSort = z.object({\n order: z.enum(['asc', 'desc']).default('asc'),\n orderBy: z.string().optional(),\n customOrder: z.array(z.any()).optional(),\n})\n\n/**\n * @description 类目轴排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @default {}\n * @example \n * - order:'asc'\n * - orderBy:'date'\n * 或\n * - customOrder:['2019', '2020', '2021']\n */\nexport type Sort = {\n /**\n * @description 排序顺序, 可选值为 'asc' 或 'desc'\n * @default 'asc'\n * @enum ['asc', 'desc']\n * @example order:'asc'\n */\n order?: 'asc' | 'desc'\n\n /**\n * @description 排序依赖的字段, 可以是维度id或指标id\n * @default ''\n * @example \n * - orderBy:'date'\n * - orderBy:'profit'\n */\n orderBy?: string\n\n /**\n * @description 自定义排序顺序, 该顺序将直接应用至类目轴\n */\n customOrder?: string[]\n}\n","import { z } from 'zod'\n\nexport const zSortLegend = z.object({\n order: z.enum(['asc', 'desc']).default('asc'),\n orderBy: z.string().optional(),\n customOrder: z.array(z.any()).optional(),\n})\n\n/**\n * @description 图例排序配置, 支持根据维度或指标排序, 以及自定义排序顺序; 排序数组遵循从左到右或从上到下的顺序\n * @default {}\n * @example \n * - order:'asc'\n * - orderBy:'date'\n * 或\n * - customOrder:['2019', '2020', '2021']\n */\nexport type SortLegend = {\n /**\n * @description 排序顺序, 可选值为 'asc' 或 'desc'\n * @default 'asc'\n * @enum ['asc', 'desc']\n * @example order:'asc'\n */\n order?: 'asc' | 'desc'\n /**\n * @description 排序依赖的字段, 可以是维度id或指标id\n * @default ''\n * @example \n * - orderBy:'date'\n * - orderBy:'profit'\n */\n orderBy?: string\n /**\n * @description 自定义排序顺序, 该顺序将直接应用至图例, 升序从左到右或从上到下, 降序从右到左或从下到上\n */\n customOrder?: string[]\n}\n","import { z } from 'zod'\n\nexport const zAnalysis = z.object({\n orderMapping: z.record(z.string(), z.array(z.string())).optional(),\n})\n","import { z } from 'zod'\n\nexport type Locale = 'zh-CN' | 'en-US'\n\nexport type TranslateRecordType = Record<string, { [local in Locale]: string }>\n\nexport const zLocale = z.enum(['zh-CN', 'en-US']).default('zh-CN')\n","import { z } from 'zod'\nimport { zLocale, type Locale } from '../../i18n'\nimport type { DimensionTree, MeasureTree } from '../../properties'\nimport {\n zBackgroundColor,\n zDataset,\n zDimensions,\n zMeasureTree,\n zTheme,\n type BackgroundColor,\n type Dataset,\n type Theme,\n} from '../../properties'\n\n/**\n * 表格类型定义\n * @description 表格,适用于详细数据展示场景,行列分明,便于查看具体数值\n * 适用场景:\n * - 需要展示详细数据明细\n * - 数据项需要精确比对\n * - 展示多维度数据属性\n * 数据要求:\n * - 至少1个维度字段\n * - 至少1个度量字段\n * - 维度字段会作为表格的列标题\n * 默认开启的功能:\n * - 默认开启排序、筛选、分页功能\n */\nexport interface Table {\n /**\n * 表格\n * @description 标准表格组件,用于展示详细数据\n * @type {'table'}\n * @example 'table'\n */\n chartType: 'table'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, 一个字段对应一列, 一个记录对应一行\n * @type {Array<Record<string|number, any>>}\n * @example [{id: 1, name: \"A\", value: 100}, {id: 2, name: \"B\", value: 200}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 表格的每个维度会对应一列\n * @type {Dimensions}\n * @example [{id: \"name\", alias: \"名称\"}]\n */\n dimensions?: DimensionTree\n\n /**\n * 指标\n * @description 表格的每个指标会对应一行, 并且天生支持指标组合.\n * @type {Measures}\n * @example [{id: \"value\", alias: \"数值\"}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zTable = z.object({\n chartType: z.literal('table'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n theme: zTheme.optional(),\n locale: zLocale.optional(),\n})\n","import { z } from 'zod'\nimport { zLocale, type Locale } from '../../i18n'\nimport type { Measures } from '../../properties'\nimport {\n zBackgroundColor,\n zDataset,\n zDimensions,\n zTheme,\n type BackgroundColor,\n type Dataset,\n type Dimensions,\n type Theme,\n zMeasures,\n} from '../../properties'\n\n/**\n * 透视表类型定义\n * @description 透视表,适用于多维度数据交叉分析场景,可灵活配置行、列维度和指标计算方式\n * 适用场景:\n * - 复杂多维数据统计分析\n * - 数据钻取与聚合展示\n * - 业务报表生成与数据探索\n * 数据要求:\n * - 至少1个行维度 或 1个列维度 或 1个指标\n * - 数据必须已聚合\n * - 数据可被分组\n * 默认开启的功能:\n * - 默认开启行列排序、数据筛选、聚合计算、小计/总计\n */\nexport interface PivotTable {\n /**\n * 透视表\n * @description 透视表,适用于多维度数据交叉分析场景\n * @type {'pivotTable'}\n * @example 'pivotTable'\n */\n chartType: 'pivotTable'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 透视表的数据最终会被转换对应的树形结构, 用户无需手动进行数据处理.\n * @type {Array<Record<string|number, any>>}\n * @example [{region:'华东', product:'A', sales:1000}, {region:'华东', product:'B', sales:1500}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 透视表的行维度和列维度,会自动对数据进行处理为树形结构, 并映射到行和列轴, 可以通过 location : \"rowDimension\" | \"columnDimension\" 来控制一维度的映射位置\n * @type {Dimensions}\n * @example [{id: 'region', alias: '地区', isRow: true}, {id: 'product', alias: '产品', isColumn: true}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 透视表支持多个维度指标\n * @type {Measures}\n * @example [{id: 'sales', alias: '销售额', aggregation: 'sum'}]\n */\n measures?: Measures\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zPivotTable = z.object({\n chartType: z.literal('pivotTable'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasures.optional(),\n backgroundColor: zBackgroundColor.optional(),\n theme: zTheme.optional(),\n locale: zLocale.optional(),\n})\n","import type { Locale } from '../../i18n'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zColor,\n zCrosshairLine,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zLineStyle,\n zMeasureTree,\n zPointStyle,\n zSort,\n zSortLegend,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\nimport type {\n AnnotationArea,\n AnnotationHorizontalLine,\n AnnotationPoint,\n AnnotationVerticalLine,\n BackgroundColor,\n Color,\n Dataset,\n Dimensions,\n Label,\n Legend,\n LineStyle,\n PointStyle,\n Theme,\n Tooltip,\n CrosshairLine,\n XBandAxis,\n YLinearAxis,\n MeasureTree,\n Sort,\n SortLegend,\n} from '../../properties'\nimport { z } from 'zod'\n\n/**\n * 折线图类型定义\n * @description 折线图,适用于展示数据随时间或有序类别变化的趋势,通过线段连接数据点形成趋势线\n * 适用场景:\n * - 展示时间序列数据的变化趋势\n * - 比较多个数据系列的趋势对比\n * - 分析数据的增长或下降规律\n * 数据要求:\n * - 至少1个数值字段(度量)\n * - 第一个维度会放至X轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示\n * - 所有指标会自动合并为一个指标\n * 默认开启的功能:\n * - 默认开启图例、坐标轴、数据点标记、提示信息、趋势线\n */\nexport interface Line {\n /**\n * 折线图\n * @description 折线图,适用于展示数据随时间或有序类别变化的趋势\n * @type {'line'}\n * @example 'line'\n */\n chartType: 'line'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 折线图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{month:'1月', value:100}, {month:'2月', value:150}, {month:'3月', value:120}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 折线图的第一个维度被映射到X轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示\n * @type {Dimensions}\n * @example [{id: \"month\", alias: \"月份\"}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 折线图的所有指标会自动合并为一个指标, 映射到Y轴, 存在多个指标时, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {DimensionTree}\n * @example [{id: \"value\", alias: \"数值\"}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * x轴\n * @description 类目轴, x轴配置, 用于定义图表的x轴, 包括x轴的位置, 格式, 样式等.\n */\n xAxis?: XBandAxis\n\n /**\n * y轴\n * @description 数值轴, y轴配置, 用于定义图表的y轴, 包括y轴的位置, 格式, 样式等.\n */\n yAxis?: YLinearAxis\n\n /**\n * 垂直提示线\n * @description 鼠标移动到图表上时, 显示的垂直提示线\n */\n crosshairLine?: CrosshairLine\n\n /**\n * @description X轴排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sort: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sort: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sort?: Sort\n /**\n * @description 图例排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortLegend: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortLegend: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortLegend?: SortLegend\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 点图元样式\n * @description 点图元样式配置, 用于定义图表的点图元样式, 包括点图元的颜色, 边框等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n pointStyle?: PointStyle | PointStyle[]\n\n /**\n * 线图元样式\n * @description 线图元样式配置, 用于定义图表的线图元样式, 包括线图元的颜色, 透明度, 曲线等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n lineStyle?: LineStyle | LineStyle[]\n\n /**\n * 标注点\n * @description 标注点配置, 根据选择的数据, 定义图表的标注点, 包括标注点的位置, 格式, 样式等.\n */\n annotationPoint?: AnnotationPoint | AnnotationPoint[]\n\n /**\n * 标注垂直线\n * @description 标注垂直线配置, 根据选择的数据, 定义图表的标注垂直线, 包括标注垂直线的位置, 样式等.\n */\n annotationVerticalLine?: AnnotationVerticalLine | AnnotationVerticalLine[]\n\n /**\n * 标注水平线\n * @description 标注水平线配置, 根据选择的数据, 定义图表的标注水平线, 包括标注水平线的位置, 样式等.\n */\n annotationHorizontalLine?: AnnotationHorizontalLine | AnnotationHorizontalLine[]\n\n /**\n * 标注区域\n * @description 标注区域配置, 根据选择的数据, 定义图表的标注区域, 包括标注区域的位置, 样式等.\n */\n annotationArea?: AnnotationArea | AnnotationArea[]\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zLine = z.object({\n chartType: z.literal('line'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n xAxis: zXBandAxis.optional(),\n yAxis: zYLinearAxis.optional(),\n crosshairLine: zCrosshairLine.optional(),\n sort: zSort.optional(),\n sortLegend: zSortLegend.optional(),\n theme: zTheme.optional(),\n pointStyle: z.array(zPointStyle).or(zPointStyle).optional(),\n lineStyle: z.array(zLineStyle).or(zLineStyle).optional(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).optional(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).optional(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).optional(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).optional(),\n locale: zLocale.optional(),\n})\n","import type { Locale } from '../../i18n'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\nimport type {\n AnnotationArea,\n AnnotationHorizontalLine,\n AnnotationPoint,\n AnnotationVerticalLine,\n BackgroundColor,\n BarStyle,\n Color,\n CrosshairRect,\n Dataset,\n Dimensions,\n Label,\n Legend,\n StackCornerRadius,\n Theme,\n Tooltip,\n XBandAxis,\n YLinearAxis,\n MeasureTree,\n Sort,\n SortLegend,\n} from '../../properties'\nimport { z } from 'zod'\n\n/**\n * 柱状图类型定义\n * @description 柱状图,适用于纵向数据对比场景,X轴为类目轴(分类数据),Y轴为数值轴(连续数据),柱子纵向排列\n * 适用场景:\n * - 数据项名称较短时\n * - 需要直观比较不同类别的数值大小\n * - 展示时间序列数据变化趋势\n * 数据要求:\n * - 至少1个数值字段(度量)\n * - 第一个维度会放至X轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示\n * - 所有指标会自动合并为一个指标\n * 默认开启的功能:\n * - 默认开启图例、坐标轴、数据标签、提示信息\n */\nexport interface Column {\n /**\n * 柱状图\n * @description 柱状图,适用于纵向数据对比场景,X轴为类目轴(分类数据),Y轴为数值轴(连续数据),柱子纵向排列\n * @type {'column'}\n * @example 'column'\n */\n chartType: 'column'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 柱状图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{category:'A', value:100}, {category:'B', value:200}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 柱状图的第一个维度被映射到X轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示\n * @type {Dimensions}\n * @example [{id: \"category\", alias: \"类别\"}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 柱状图的所有指标会自动合并为一个指标, 映射到Y轴, 存在多个指标时, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {DimensionTree}\n * @example [{id: \"value\", alias: \"数值\"}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * x轴\n * @description 类目轴, x轴配置, 用于定义图表的x轴, 包括x轴的位置, 格式, 样式等.\n */\n xAxis?: XBandAxis\n\n /**\n * y轴\n * @description 数值轴, y轴配置, 用于定义图表的y轴, 包括y轴的位置, 格式, 样式等.\n */\n yAxis?: YLinearAxis\n\n /**\n * @description X轴排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sort: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sort: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sort?: Sort\n /**\n * @description 图例排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortLegend: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortLegend: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortLegend?: SortLegend\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 垂直提示框\n * @description 垂直提示框配置, 用于定义图表的垂直提示框, 包括垂直提示框的颜色、标签样式等.\n */\n crosshairRect?: CrosshairRect\n\n /**\n * 柱状图 堆叠圆角\n * @description 条形图 堆叠圆角\n * @default 8\n */\n stackCornerRadius?: StackCornerRadius\n\n /**\n * 矩形图元样式\n * @description 条形图样式配置, 用于定义图表的条形图样式, 包括条形图的颜色, 边框, 圆角等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n barStyle?: BarStyle | BarStyle[]\n\n /**\n * 标注点\n * @description 标注点配置, 根据选择的数据, 定义图表的标注点, 包括标注点的位置, 格式, 样式等.\n */\n annotationPoint?: AnnotationPoint | AnnotationPoint[]\n\n /**\n * 标注垂直线\n * @description 标注垂直线配置, 根据选择的数据, 定义图表的标注垂直线, 包括标注垂直线的位置, 样式等.\n */\n annotationVerticalLine?: AnnotationVerticalLine | AnnotationVerticalLine[]\n\n /**\n * 标注水平线\n * @description 标注水平线配置, 根据选择的数据, 定义图表的标注水平线, 包括标注水平线的位置, 样式等.\n */\n annotationHorizontalLine?: AnnotationHorizontalLine | AnnotationHorizontalLine[]\n\n /**\n * 标注区域\n * @description 标注区域配置, 根据选择的数据, 定义图表的标注区域, 包括标注区域的位置, 样式等.\n */\n annotationArea?: AnnotationArea | AnnotationArea[]\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zColumn = z.object({\n chartType: z.literal('column'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n xAxis: zXBandAxis.optional(),\n yAxis: zYLinearAxis.optional(),\n crosshairRect: zCrosshairRect.optional(),\n stackCornerRadius: zStackCornerRadius.optional(),\n theme: zTheme.optional(),\n barStyle: z.array(zBarStyle).or(zBarStyle).optional(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).optional(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).optional(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).optional(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).optional(),\n locale: zLocale.optional(),\n})\n","import type { Locale } from '../../i18n'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\nimport type {\n AnnotationArea,\n AnnotationHorizontalLine,\n AnnotationPoint,\n AnnotationVerticalLine,\n BackgroundColor,\n BarStyle,\n Color,\n CrosshairRect,\n Dataset,\n Dimensions,\n Label,\n Legend,\n StackCornerRadius,\n Theme,\n Tooltip,\n XBandAxis,\n YLinearAxis,\n MeasureTree,\n SortLegend,\n Sort,\n} from '../../properties'\nimport { z } from 'zod'\n\n/**\n * 并列柱状图类型定义\n * @description 并列柱状图,适用于多指标并行对比场景,多个柱子并列排列展示不同指标值\n * 适用场景:\n * - 同一维度下多指标并行对比\n * - 多维度数据的横向比较\n * - 指标间关联性分析\n * 数据要求:\n * - 至少1个指标字段(度量)\n * - 第一个维度会放至X轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * - 所有指标会自动合并为一个指标\n * 默认开启的功能:\n * - 默认开启图例、坐标轴、数据标签、提示信息、指标排序\n */\nexport interface ColumnParallel {\n /**\n * 并列柱状图\n * @description 并列柱状图,适用于多指标并行对比场景\n * @type {'columnParallel'}\n * @example 'columnParallel'\n */\n chartType: 'columnParallel'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 并列柱状图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{category:'A', value1:100, value2:200}, {category:'B', value1:150, value2:250}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 第一个维度被映射到X轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * @type {Dimensions}\n * @example [{id: 'category', alias: '类别'}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 并列柱状图的所有指标会自动合并为一个指标, 映射到Y轴, 存在多个指标时, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {DimensionTree}\n * @example [{id: 'value1', alias: '指标1'}, {id: 'value2', alias: '指标2'}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * x轴\n * @description 类目轴, x轴配置, 用于定义图表的x轴, 包括x轴的位置, 格式, 样式等.\n */\n xAxis?: XBandAxis\n\n /**\n * y轴\n * @description 数值轴, y轴配置, 用于定义图表的y轴, 包括y轴的位置, 格式, 样式等.\n */\n yAxis?: YLinearAxis\n\n /**\n * 垂直提示框\n * @description 垂直提示框配置, 用于定义图表的垂直提示框, 包括垂直提示框的颜色、标签样式等.\n */\n crosshairRect?: CrosshairRect\n\n /**\n * 柱状图 堆叠圆角\n * @description 条形图 堆叠圆角\n * @default 8\n */\n stackCornerRadius?: StackCornerRadius\n\n /**\n * @description X轴排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sort: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sort: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sort?: Sort\n /**\n * @description 图例排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortLegend: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortLegend: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortLegend?: SortLegend\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 矩形图元样式\n * @description 条形图样式配置, 用于定义图表的条形图样式, 包括条形图的颜色, 边框, 圆角等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n barStyle?: BarStyle | BarStyle[]\n\n /**\n * 标注点\n * @description 标注点配置, 根据选择的数据, 定义图表的标注点, 包括标注点的位置, 格式, 样式等.\n */\n annotationPoint?: AnnotationPoint | AnnotationPoint[]\n\n /**\n * 标注垂直线\n * @description 标注垂直线配置, 根据选择的数据, 定义图表的标注垂直线, 包括标注垂直线的位置, 样式等.\n */\n annotationVerticalLine?: AnnotationVerticalLine | AnnotationVerticalLine[]\n\n /**\n * 标注水平线\n * @description 标注水平线配置, 根据选择的数据, 定义图表的标注水平线, 包括标注水平线的位置, 样式等.\n */\n annotationHorizontalLine?: AnnotationHorizontalLine | AnnotationHorizontalLine[]\n\n /**\n * 标注区域\n * @description 标注区域配置, 根据选择的数据, 定义图表的标注区域, 包括标注区域的位置, 样式等.\n */\n annotationArea?: AnnotationArea | AnnotationArea[]\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zColumnParallel = z.object({\n chartType: z.literal('columnParallel'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n xAxis: zXBandAxis.optional(),\n yAxis: zYLinearAxis.optional(),\n crosshairRect: zCrosshairRect.optional(),\n stackCornerRadius: zStackCornerRadius.optional(),\n theme: zTheme.optional(),\n barStyle: z.array(zBarStyle).or(zBarStyle).optional(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).optional(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).optional(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).optional(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).optional(),\n locale: zLocale.optional(),\n})\n","import type { Locale } from '../../i18n'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\nimport type {\n AnnotationArea,\n AnnotationHorizontalLine,\n AnnotationPoint,\n AnnotationVerticalLine,\n BackgroundColor,\n BarStyle,\n Color,\n CrosshairRect,\n Dataset,\n Dimensions,\n Label,\n Legend,\n StackCornerRadius,\n Theme,\n Tooltip,\n XBandAxis,\n YLinearAxis,\n MeasureTree,\n Sort,\n SortLegend,\n} from '../../properties'\nimport { z } from 'zod'\n\n/**\n * 百分比柱状图类型定义\n * @description 百分比柱状图,适用于展示各类别占比关系的场景,Y轴以百分比形式展示数据占比\n * 适用场景:\n * - 不同类别数据的占比对比\n * - 多维度数据的构成分析\n * - 时间序列的占比变化趋势\n * 数据要求:\n * - 至少1个指标字段(度量)\n * - 第一个维度会放至X轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * - 所有指标会自动合并为一个指标\n * 默认开启的功能:\n * - 默认开启图例、坐标轴、百分比标签、提示信息、占比计算\n */\nexport interface ColumnPercent {\n /**\n * 百分比柱状图\n * @description 百分比柱状图,以百分比形式展示各类别数据占比关系\n * @type {'columnPercent'}\n * @example 'columnPercent'\n */\n chartType: 'columnPercent'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 百分比柱状图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{category:'A', value:30}, {category:'B', value:70}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 第一个维度被映射到X轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * @type {Dimensions}\n * @example [{id: 'category', alias: '类别'}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 百分比柱状图指标会自动合并为一个指标, 映射到Y轴, 存在多个指标时, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {DimensionTree}\n * @example [{id: 'value', alias: '数值占比', format: 'percent'}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * x轴\n * @description 类目轴, x轴配置, 用于定义图表的x轴, 包括x轴的位置, 格式, 样式等.\n */\n xAxis?: XBandAxis\n\n /**\n * y轴\n * @description 数值轴, y轴配置, 用于定义图表的y轴, 包括y轴的位置, 格式, 样式等.\n */\n yAxis?: YLinearAxis\n\n /**\n * 垂直提示框\n * @description 垂直提示框配置, 用于定义图表的垂直提示框, 包括垂直提示框的颜色、标签样式等.\n */\n crosshairRect?: CrosshairRect\n\n /**\n * 柱状图 堆叠圆角\n * @description 条形图 堆叠圆角\n * @default 8\n */\n stackCornerRadius?: StackCornerRadius\n\n /**\n * @description X轴排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sort: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sort: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sort?: Sort\n /**\n * @description 图例排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortLegend: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortLegend: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortLegend?: SortLegend\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 矩形图元样式\n * @description 条形图样式配置, 用于定义图表的条形图样式, 包括条形图的颜色, 边框, 圆角等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n barStyle?: BarStyle | BarStyle[]\n\n /**\n * 标注点\n * @description 标注点配置, 根据选择的数据, 定义图表的标注点, 包括标注点的位置, 格式, 样式等.\n */\n annotationPoint?: AnnotationPoint | AnnotationPoint[]\n\n /**\n * 标注垂直线\n * @description 标注垂直线配置, 根据选择的数据, 定义图表的标注垂直线, 包括标注垂直线的位置, 样式等.\n */\n annotationVerticalLine?: AnnotationVerticalLine | AnnotationVerticalLine[]\n\n /**\n * 标注水平线\n * @description 标注水平线配置, 根据选择的数据, 定义图表的标注水平线, 包括标注水平线的位置, 样式等.\n */\n annotationHorizontalLine?: AnnotationHorizontalLine | AnnotationHorizontalLine[]\n\n /**\n * 标注区域\n * @description 标注区域配置, 根据选择的数据, 定义图表的标注区域, 包括标注区域的位置, 样式等.\n */\n annotationArea?: AnnotationArea | AnnotationArea[]\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zColumnPercent = z.object({\n chartType: z.literal('columnPercent'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n xAxis: zXBandAxis.optional(),\n yAxis: zYLinearAxis.optional(),\n crosshairRect: zCrosshairRect.optional(),\n stackCornerRadius: zStackCornerRadius.optional(),\n theme: zTheme.optional(),\n barStyle: z.array(zBarStyle).or(zBarStyle).optional(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).optional(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).optional(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).optional(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).optional(),\n locale: zLocale.optional(),\n})\n","import { zLocale, type Locale } from '../../i18n'\nimport type { MeasureTree, Sort, SortLegend } from '../../properties'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXLinearAxis,\n zYBandAxis,\n} from '../../properties'\nimport {\n type AnnotationArea,\n type AnnotationHorizontalLine,\n type AnnotationPoint,\n type AnnotationVerticalLine,\n type BackgroundColor,\n type BarStyle,\n type Color,\n type CrosshairRect,\n type Dataset,\n type Dimensions,\n type Label,\n type Legend,\n type StackCornerRadius,\n type Theme,\n type Tooltip,\n type XLinearAxis,\n type YBandAxis,\n} from '../../properties'\nimport { z } from 'zod'\n\n/**\n * 条形图类型定义\n * @description 条形图,适用于横向数据对比场景,Y轴为类目轴(分类数据),X轴为数值轴(连续数据),柱子横向排列\n * 适用场景:\n * - 数据项名称较长时\n * - 需要展示数据排名对比\n * - 展示正负双向数据\n * 数据要求:\n * - 至少1个指标字段(度量)\n * - 第一个维度会放至Y轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * - 所有指标会自动合并为一个指标\n * 默认开启的功能:\n * - 默认开启图例、坐标轴、数据标签、提示信息\n */\nexport interface Bar {\n /**\n * 条形图\n * @description 条形图,适用于横向数据对比场景,Y轴为类目轴(分类数据),X轴为数值轴(连续数据),柱子横向排列\n * @type {'bar'}\n * @example 'bar'\n */\n chartType: 'bar'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 条形图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{date:'2020-01-01', value:100}, {date:'2020-01-02', value:200}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 第一个维度被映射到Y轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * @type {Dimensions}\n * @example [{id: \"date\", alias: \"日期\"}, {id: \"value\", alias: \"数值\"}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 条形图指标会自动合并为一个指标, 映射到X轴, 存在多个指标时, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {DimensionTree}\n * @example [{id: \"value\", alias: \"数值\"}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * x轴\n * @description 数值轴, x轴配置, 用于定义图表的x轴, 包括x轴的位置, 格式, 样式等.\n */\n xAxis?: XLinearAxis\n\n /**\n * y轴\n * @description 类目轴, y轴配置, 用于定义图表的y轴, 包括y轴的位置, 格式, 样式等.\n */\n yAxis?: YBandAxis\n\n /**\n * 水平提示框\n * @description 水平提示框配置, 用于定义图表的水平提示框, 包括水平提示框的颜色、标签样式等.\n */\n crosshairRect?: CrosshairRect\n\n /**\n * 条形图 堆叠圆角\n * @description 条形图 堆叠圆角\n * @default 8\n */\n stackCornerRadius?: StackCornerRadius\n\n /**\n * @description Y轴排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sort: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sort: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sort?: Sort\n /**\n * @description 图例排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortLegend: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortLegend: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortLegend?: SortLegend\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 矩形图元样式\n * @description 条形图样式配置, 用于定义图表的条形图样式, 包括条形图的颜色, 边框, 圆角等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n barStyle?: BarStyle | BarStyle[]\n\n /**\n * 标注点\n * @description 标注点配置, 根据选择的数据, 定义图表的标注点, 包括标注点的位置, 格式, 样式等.\n */\n annotationPoint?: AnnotationPoint | AnnotationPoint[]\n\n /**\n * 标注垂直线\n * @description 标注垂直线配置, 根据选择的数据, 定义图表的标注垂直线, 包括标注垂直线的位置, 样式等.\n */\n annotationVerticalLine?: AnnotationVerticalLine | AnnotationVerticalLine[]\n\n /**\n * 标注水平线\n * @description 标注水平线配置, 根据选择的数据, 定义图表的标注水平线, 包括标注水平线的位置, 样式等.\n */\n annotationHorizontalLine?: AnnotationHorizontalLine | AnnotationHorizontalLine[]\n\n /**\n * 标注区域\n * @description 标注区域配置, 根据选择的数据, 定义图表的标注区域, 包括标注区域的位置, 样式等.\n */\n annotationArea?: AnnotationArea | AnnotationArea[]\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zBar = z.object({\n chartType: z.literal('bar'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n xAxis: zXLinearAxis.optional(),\n yAxis: zYBandAxis.optional(),\n crosshairRect: zCrosshairRect.optional(),\n stackCornerRadius: zStackCornerRadius.optional(),\n theme: zTheme.optional(),\n barStyle: z.array(zBarStyle).or(zBarStyle).optional(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).optional(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).optional(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).optional(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).optional(),\n locale: zLocale.optional(),\n})\n","import { z } from 'zod'\nimport type { Locale } from '../../i18n'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXLinearAxis,\n zYBandAxis,\n} from '../../properties'\nimport type {\n AnnotationArea,\n AnnotationHorizontalLine,\n AnnotationPoint,\n AnnotationVerticalLine,\n BackgroundColor,\n BarStyle,\n Color,\n CrosshairRect,\n Dataset,\n Dimensions,\n Label,\n Legend,\n StackCornerRadius,\n Theme,\n Tooltip,\n XLinearAxis,\n YBandAxis,\n MeasureTree,\n Sort,\n SortLegend,\n} from '../../properties'\n\n/**\n * 并列条形图类型定义\n * @description 并列条形图,适用于多指标横向并行对比场景,多个条形平行排列展示不同指标值\n * 适用场景:\n * - 类别名称较长时的多指标对比\n * - 排名与数值同时展示的横向比较\n * - 多维度数据的并列分析\n * 数据要求:\n * - 至少1个指标字段(度量)\n * - 第一个维度会放至Y轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * - 所有指标会自动合并为一个指标\n * 默认开启的功能:\n * - 默认开启图例、坐标轴、数据标签、提示信息\n */\nexport interface BarParallel {\n /**\n * 并列条形图\n * @description 并列条形图,适用于多指标横向并行对比场景\n * @type {'barParallel'}\n * @example 'barParallel'\n */\n chartType: 'barParallel'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 并列条形图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{category:'A', value1:100, value2:200}, {category:'B', value1:150, value2:250}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 第一个维度被映射到Y轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * @type {Dimensions}\n * @example [{id: 'category', alias: '类别'}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 并列条形图指标会自动合并为一个指标, 映射到X轴, 存在多个指标时, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {DimensionTree}\n * @example [{id: 'value1', alias: '指标1'}, {id: 'value2', alias: '指标2'}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * x轴\n * @description 数值轴, x轴配置, 用于定义图表的x轴, 包括x轴的位置, 格式, 样式等.\n */\n xAxis?: XLinearAxis\n\n /**\n * y轴\n * @description 类目轴, y轴配置, 用于定义图表的y轴, 包括y轴的位置, 格式, 样式等.\n */\n yAxis?: YBandAxis\n\n /**\n * 水平提示框\n * @description 水平提示框配置, 用于定义图表的水平提示框, 包括水平提示框的颜色、标签样式等.\n */\n crosshairRect?: CrosshairRect\n\n /**\n * 条形图 堆叠圆角\n * @description 条形图 堆叠圆角\n * @default 8\n */\n stackCornerRadius?: StackCornerRadius\n\n /**\n * @description Y轴排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sort: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sort: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sort?: Sort\n /**\n * @description 图例排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortLegend: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortLegend: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortLegend?: SortLegend\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 矩形图元样式\n * @description 条形图样式配置, 用于定义图表的条形图样式, 包括条形图的颜色, 边框, 圆角等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n barStyle?: BarStyle | BarStyle[]\n\n /**\n * 标注点\n * @description 标注点配置, 根据选择的数据, 定义图表的标注点, 包括标注点的位置, 格式, 样式等.\n */\n annotationPoint?: AnnotationPoint | AnnotationPoint[]\n\n /**\n * 标注垂直线\n * @description 标注垂直线配置, 根据选择的数据, 定义图表的标注垂直线, 包括标注垂直线的位置, 样式等.\n */\n annotationVerticalLine?: AnnotationVerticalLine | AnnotationVerticalLine[]\n\n /**\n * 标注水平线\n * @description 标注水平线配置, 根据选择的数据, 定义图表的标注水平线, 包括标注水平线的位置, 样式等.\n */\n annotationHorizontalLine?: AnnotationHorizontalLine | AnnotationHorizontalLine[]\n\n /**\n * 标注区域\n * @description 标注区域配置, 根据选择的数据, 定义图表的标注区域, 包括标注区域的位置, 样式等.\n */\n annotationArea?: AnnotationArea | AnnotationArea[]\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zBarParallel = z.object({\n chartType: z.literal('barParallel'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n xAxis: zXLinearAxis.optional(),\n yAxis: zYBandAxis.optional(),\n crosshairRect: zCrosshairRect.optional(),\n stackCornerRadius: zStackCornerRadius.optional(),\n theme: zTheme.optional(),\n barStyle: z.array(zBarStyle).or(zBarStyle).optional(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).optional(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).optional(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).optional(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).optional(),\n locale: zLocale.optional(),\n})\n","import { z } from 'zod'\nimport type { Locale } from '../../i18n'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXLinearAxis,\n zYBandAxis,\n} from '../../properties'\nimport type {\n AnnotationArea,\n AnnotationHorizontalLine,\n AnnotationPoint,\n AnnotationVerticalLine,\n BackgroundColor,\n BarStyle,\n Color,\n CrosshairRect,\n Dataset,\n Dimensions,\n Label,\n Legend,\n StackCornerRadius,\n Theme,\n Tooltip,\n XLinearAxis,\n YBandAxis,\n MeasureTree,\n Sort,\n SortLegend,\n} from '../../properties'\n\n/**\n * 百分比条形图类型定义\n * @description 百分比条形图,适用于横向展示各类别占比关系的场景,X轴以百分比形式展示数据占比\n * 适用场景:\n * - 类别名称较长时的占比对比\n * - 多维度数据的横向构成分析\n * - 排名与占比同时展示的场景\n * 数据要求:\n * - 至少1个维度字段和1个度量字段\n * - 所有类别占比之和为100%\n * - 支持多系列堆叠展示占比关系\n * 默认开启的功能:\n * - 默认开启图例、坐标轴、百分比标签、提示信息、占比计算\n */\nexport interface BarPercent {\n /**\n * 百分比条形图\n * @description 百分比条形图,以横向百分比形式展示各类别数据占比关系\n * @type {'barPercent'}\n * @example 'barPercent'\n */\n chartType: 'barPercent'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 百分比条形图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{category:'A', value:30}, {category:'B', value:70}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 第一个维度会放至Y轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * @type {Dimensions}\n * @example [{id: 'category', alias: '类别'}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 指标会自动合并为一个指标, 映射到X轴, 存在多个指标时, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {DimensionTree}\n * @example [{id: 'value', alias: '数值占比', format: 'percent'}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * x轴\n * @description 数值轴, x轴配置, 用于定义图表的x轴, 包括x轴的位置, 格式, 样式等.\n */\n xAxis?: XLinearAxis\n\n /**\n * y轴\n * @description 类目轴, y轴配置, 用于定义图表的y轴, 包括y轴的位置, 格式, 样式等.\n */\n yAxis?: YBandAxis\n\n /**\n * 水平提示框\n * @description 水平提示框配置, 用于定义图表的水平提示框, 包括水平提示框的颜色、标签样式等.\n */\n crosshairRect?: CrosshairRect\n\n /**\n * 条形图 堆叠圆角\n * @description 条形图 堆叠圆角\n * @default 8\n */\n stackCornerRadius?: StackCornerRadius\n\n /**\n * @description Y轴排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sort: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sort: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sort?: Sort\n /**\n * @description 图例排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortLegend: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortLegend: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortLegend?: SortLegend\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 矩形图元样式\n * @description 条形图样式配置, 用于定义图表的条形图样式, 包括条形图的颜色, 边框, 圆角等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n barStyle?: BarStyle | BarStyle[]\n\n /**\n * 标注点\n * @description 标注点配置, 根据选择的数据, 定义图表的标注点, 包括标注点的位置, 格式, 样式等.\n */\n annotationPoint?: AnnotationPoint | AnnotationPoint[]\n\n /**\n * 标注垂直线\n * @description 标注垂直线配置, 根据选择的数据, 定义图表的标注垂直线, 包括标注垂直线的位置, 样式等.\n */\n annotationVerticalLine?: AnnotationVerticalLine | AnnotationVerticalLine[]\n\n /**\n * 标注水平线\n * @description 标注水平线配置, 根据选择的数据, 定义图表的标注水平线, 包括标注水平线的位置, 样式等.\n */\n annotationHorizontalLine?: AnnotationHorizontalLine | AnnotationHorizontalLine[]\n\n /**\n * 标注区域\n * @description 标注区域配置, 根据选择的数据, 定义图表的标注区域, 包括标注区域的位置, 样式等.\n */\n annotationArea?: AnnotationArea | AnnotationArea[]\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zBarPercent = z.object({\n chartType: z.literal('barPercent'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n xAxis: zXLinearAxis.optional(),\n yAxis: zYBandAxis.optional(),\n crosshairRect: zCrosshairRect.optional(),\n stackCornerRadius: zStackCornerRadius.optional(),\n theme: zTheme.optional(),\n barStyle: z.array(zBarStyle).or(zBarStyle).optional(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).optional(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).optional(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).optional(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).optional(),\n locale: zLocale.optional(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zAreaStyle,\n zBackgroundColor,\n zColor,\n zCrosshairLine,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zLineStyle,\n zMeasureTree,\n zPointStyle,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\n\nexport const zArea = z.object({\n chartType: z.literal('area'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n xAxis: zXBandAxis.optional(),\n yAxis: zYLinearAxis.optional(),\n crosshairLine: zCrosshairLine.optional(),\n theme: zTheme.optional(),\n pointStyle: z.array(zPointStyle).or(zPointStyle).optional(),\n lineStyle: z.array(zLineStyle).or(zLineStyle).optional(),\n areaStyle: z.array(zAreaStyle).or(zAreaStyle).optional(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).optional(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).optional(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).optional(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).optional(),\n locale: zLocale.optional(),\n})\n","import { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zAreaStyle,\n zBackgroundColor,\n zColor,\n zCrosshairLine,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zLineStyle,\n zMeasureTree,\n zPointStyle,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\n\nimport { z } from 'zod'\n\nexport const zAreaPercent = z.object({\n chartType: z.literal('areaPercent'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n xAxis: zXBandAxis.optional(),\n yAxis: zYLinearAxis.optional(),\n crosshairLine: zCrosshairLine.optional(),\n theme: zTheme.optional(),\n pointStyle: z.array(zPointStyle).or(zPointStyle).optional(),\n lineStyle: z.array(zLineStyle).or(zLineStyle).optional(),\n areaStyle: z.array(zAreaStyle).or(zAreaStyle).optional(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).optional(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).optional(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).optional(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).optional(),\n locale: zLocale.optional(),\n})\n","import { z } from 'zod'\n\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zAreaStyle,\n zBackgroundColor,\n zCrosshairLine,\n zDataset,\n zDimensions,\n zLabel,\n zLineStyle,\n zMeasureTree,\n zPointStyle,\n zTheme,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\n\nexport const zAreaRange = z.object({\n chartType: z.literal('areaRange'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n label: zLabel.optional(),\n xAxis: zXBandAxis.optional(),\n yAxis: zYLinearAxis.optional(),\n crosshairLine: zCrosshairLine.optional(),\n theme: zTheme.optional(),\n pointStyle: z.array(zPointStyle).or(zPointStyle).optional(),\n lineStyle: z.array(zLineStyle).or(zLineStyle).optional(),\n areaStyle: z.array(zAreaStyle).or(zAreaStyle).optional(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).optional(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).optional(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).optional(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).optional(),\n locale: zLocale.optional(),\n})\n","import type { Locale } from '../../i18n'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zColor,\n zCrosshairLine,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zPointStyle,\n zTheme,\n zTooltip,\n zXLinearAxis,\n zYLinearAxis,\n} from '../../properties'\nimport type {\n AnnotationArea,\n AnnotationHorizontalLine,\n AnnotationPoint,\n AnnotationVerticalLine,\n BackgroundColor,\n Color,\n Dataset,\n Dimensions,\n Label,\n Legend,\n PointStyle,\n Theme,\n Tooltip,\n CrosshairLine,\n YLinearAxis,\n XLinearAxis,\n MeasureTree,\n} from '../../properties'\nimport { z } from 'zod'\n\n/**\n * 散点图类型定义\n * @description 散点图,适用于展示数据的分布情况,通过点的位置表示数据的数值\n * 适用场景:\n * - 分析数据的分布特征, 如数据的中心趋势, 分布范围, 异常值等\n * 数据要求:\n * - 至少2个数值字段(度量)\n * - 第一个指标字段会放至X轴, 其余指标会进行合并, 映射至Y轴\n * - 指标名称和维度名称会合并, 作为图例项展示\n * 默认开启的功能:\n * - 默认开启图例、坐标轴、数据点标记、提示信息、趋势线\n */\nexport interface Scatter {\n /**\n * 散点图\n * @description 散点图,适用于展示数据的分布情况,通过点的位置表示数据的数值\n * @type {'scatter'}\n * @example 'scatter'\n */\n chartType: 'scatter'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 折线图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{month:'1月', value:100}, {month:'2月', value:150}, {month:'3月', value:120}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 散点图的第一个维度被映射到X轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示\n * @type {Dimensions}\n * @example [{id: \"month\", alias: \"月份\"}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 散点图的第一个指标字段会放至X轴, 其余指标会进行合并, 映射至Y轴\n * @type {DimensionTree}\n * @example [{id: \"value\", alias: \"数值\"}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * x轴\n * @description 数值轴, x轴配置, 用于定义图表的x轴, 包括x轴的位置, 格式, 样式等.\n */\n xAxis?: XLinearAxis\n\n /**\n * y轴\n * @description 数值轴, y轴配置, 用于定义图表的y轴, 包括y轴的位置, 格式, 样式等.\n */\n yAxis?: YLinearAxis\n\n /**\n * 垂直提示线\n * @description 鼠标移动到图表上时, 显示的垂直提示线\n */\n crosshairLine?: CrosshairLine\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 点图元样式\n * @description 点图元样式配置, 用于定义图表的点图元样式, 包括点图元的颜色, 边框等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n pointStyle?: PointStyle | PointStyle[]\n\n /**\n * 标注点\n * @description 标注点配置, 根据选择的数据, 定义图表的标注点, 包括标注点的位置, 格式, 样式等.\n */\n annotationPoint?: AnnotationPoint | AnnotationPoint[]\n\n /**\n * 标注垂直线\n * @description 标注垂直线配置, 根据选择的数据, 定义图表的标注垂直线, 包括标注垂直线的位置, 样式等.\n */\n annotationVerticalLine?: AnnotationVerticalLine | AnnotationVerticalLine[]\n\n /**\n * 标注水平线\n * @description 标注水平线配置, 根据选择的数据, 定义图表的标注水平线, 包括标注水平线的位置, 样式等.\n */\n annotationHorizontalLine?: AnnotationHorizontalLine | AnnotationHorizontalLine[]\n\n /**\n * 标注区域\n * @description 标注区域配置, 根据选择的数据, 定义图表的标注区域, 包括标注区域的位置, 样式等.\n */\n annotationArea?: AnnotationArea | AnnotationArea[]\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zScatter = z.object({\n chartType: z.literal('scatter'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n xAxis: zXLinearAxis.optional(),\n yAxis: zYLinearAxis.optional(),\n crosshairLine: zCrosshairLine.optional(),\n theme: zTheme.optional(),\n pointStyle: z.array(zPointStyle).or(zPointStyle).optional(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).optional(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).optional(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).optional(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).optional(),\n locale: zLocale.optional(),\n})\n","import { z } from 'zod'\nimport { zLocale } from 'src/types/i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zAreaStyle,\n zBackgroundColor,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zDualChartType,\n zDualMeasures,\n zLabel,\n zLegend,\n zLineStyle,\n zMeasureTree,\n zPointStyle,\n zSort,\n zSortLegend,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from 'src/types/properties'\n\nexport const zDualAxis = z.object({\n chartType: z.literal('dualAxis'),\n\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n dualMeasures: zDualMeasures.optional(),\n\n dualChartType: z.array(zDualChartType).or(zDualChartType).optional(),\n\n primaryYAxis: z.array(zYLinearAxis).or(zYLinearAxis).optional(),\n secondaryYAxis: z.array(zYLinearAxis).or(zYLinearAxis).optional(),\n xAxis: zXBandAxis.optional(),\n\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n\n crosshairRect: zCrosshairRect.optional(),\n sort: zSort.optional(),\n sortLegend: zSortLegend.optional(),\n theme: zTheme.optional(),\n\n barStyle: z.array(zBarStyle).or(zBarStyle).optional(),\n pointStyle: z.array(zPointStyle).or(zPointStyle).optional(),\n lineStyle: z.array(zLineStyle).or(zLineStyle).optional(),\n areaStyle: z.array(zAreaStyle).or(zAreaStyle).optional(),\n\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).optional(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).optional(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).optional(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).optional(),\n\n locale: zLocale.optional(),\n})\n","import { z } from 'zod'\nimport { zLocale, type Locale } from '../../i18n'\nimport type {\n MeasureTree} from '../../properties';\nimport {\n zBackgroundColor,\n zColor,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zTheme,\n zTooltip,\n type BackgroundColor,\n type Color,\n type Dataset,\n type Dimensions,\n type Label,\n type Legend,\n type Theme,\n type Tooltip,\n} from '../../properties'\n\n/**\n * 堆叠玫瑰图类型定义\n * @description 堆叠玫瑰图,适用于多维度数据对比场景,通过极坐标系下的扇形弧度和半径展示数据大小\n * 适用场景:\n * - 多维度数据的分布对比\n * - 周期性数据的强弱比较\n * - 分类数据的数值与占比同时展示\n * 数据要求:\n * - 至少1个数值字段(度量)\n * - 第一个维度会放至角度轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示\n * - 所有指标会自动合并为一个指标\n * 默认开启的功能:\n * - 默认开启图例、极坐标系、数据标签、提示信息、数值缩放\n */\nexport interface Rose {\n /**\n * 堆叠玫瑰图\n * @description 堆叠玫瑰图,通过极坐标系展示多维度数据对比关系\n * @type {'rose'}\n * @example 'rose'\n */\n chartType: 'rose'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 玫瑰图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{month:'1月', value:100}, {month:'2月', value:150}, {month:'3月', value:120}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 玫瑰图的第一个维度被映射到角度轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * @type {Dimensions}\n * @example [{id: 'category', alias: '类别'}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 玫瑰图的指标会自动合并为一个指标, 映射到半径轴, 存在多个指标时, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {Measures}\n * @example [{id: 'value', alias: '数值'}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zRose = z.object({\n chartType: z.literal('rose'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n theme: zTheme.optional(),\n locale: zLocale.optional(),\n})\n","import { z } from 'zod'\nimport { zLocale, type Locale } from '../../i18n'\nimport type {\n MeasureTree} from '../../properties';\nimport {\n zBackgroundColor,\n zColor,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zTheme,\n zTooltip,\n type BackgroundColor,\n type Color,\n type Dataset,\n type Dimensions,\n type Label,\n type Legend,\n type Theme,\n type Tooltip,\n} from '../../properties'\n\n/**\n * 分组玫瑰图类型定义\n * @description 分组玫瑰图,适用于多维度数据对比场景,通过极坐标系下的扇形弧度和半径展示数据大小\n * 适用场景:\n * - 多维度数据的分布对比\n * - 周期性数据的强弱比较\n * - 分类数据的数值与占比同时展示\n * 数据要求:\n * - 至少1个数值字段(度量)\n * - 第一个维度会放至角度轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示\n * - 所有指标会自动合并为一个指标\n * 默认开启的功能:\n * - 默认开启图例、极坐标系、数据标签、提示信息、数值缩放\n */\nexport interface RoseParallel {\n /**\n * 分组玫瑰图\n * @description 分组玫瑰图,通过极坐标系展示多维度数据对比关系\n * @type {'roseParallel'}\n * @example 'roseParallel'\n */\n chartType: 'roseParallel'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 玫瑰图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{month:'1月', value:100}, {month:'2月', value:150}, {month:'3月', value:120}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 玫瑰图的第一个维度被映射到角度轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * @type {Dimensions}\n * @example [{id: 'category', alias: '类别'}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 玫瑰图的指标会自动合并为一个指标, 映射到半径轴, 存在多个指标时, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {MeasureTree}\n * @example [{id: 'value', alias: '数值'}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zRoseParallel = z.object({\n chartType: z.literal('roseParallel'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n theme: zTheme.optional(),\n locale: zLocale.optional(),\n})\n","import { z } from 'zod'\nimport type { Locale } from '../../i18n'\nimport { zLocale } from '../../i18n'\nimport {\n zBackgroundColor,\n zColor,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zTheme,\n zTooltip,\n} from '../../properties'\nimport type {\n BackgroundColor,\n Color,\n Dataset,\n Dimensions,\n Label,\n Legend,\n MeasureTree,\n Theme,\n Tooltip,\n} from '../../properties'\n\n/**\n * 饼图类型定义\n * @description 饼图,适用于展示单一维度数据的占比关系,通过扇形面积大小表示各类别占比\n * 适用场景:\n * - 展示分类数据的占比分布\n * - 强调数据的整体与部分关系\n * - 类别数量较少(建议不超过6个)的占比分析\n * 数据要求:\n * - 至少1个数值字段(度量)\n * - 所有维度会与指标名称(存在多个指标时)合并成一个维度, 作为图例项展示\n * - 所有指标会自动合并为一个指标\n * 默认开启的功能:\n * - 默认开启图例、数据标签、提示信息、占比计算\n */\nexport interface Pie {\n /**\n * 饼图\n * @description 饼图,展示单一维度数据的占比关系\n * @type {'pie'}\n * @example 'pie'\n */\n chartType: 'pie'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 饼图的数据最终会被转换为1个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{category:'A', value:30}, {category:'B', value:70}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 饼图的所有维度会与指标名称(存在多个指标时)合并成一个维度, 映射到角度, 并作为图例项展示\n * @type {Dimensions}\n * @example [{id: 'category', alias: '类别'}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 饼图的所有指标会自动合并为一个指标, 映射到半径轴, 存在多个指标时, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {DimensionTree}\n * @example [{id: 'value', alias: '数值占比', format: 'percent'}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zPie = z.object({\n chartType: z.literal('pie'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n theme: zTheme.optional(),\n locale: zLocale.optional(),\n})\n","import { z } from 'zod'\nimport { zLocale, type Locale } from '../../i18n'\nimport type {\n BackgroundColor,\n Color,\n Dataset,\n Dimensions,\n Label,\n Legend,\n MeasureTree,\n Theme,\n Tooltip,\n} from '../../properties'\nimport {\n zBackgroundColor,\n zColor,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zTheme,\n zTooltip,\n} from '../../properties'\n/**\n * 环形图类型定义\n * @description 环形图,适用于展示单一维度数据的占比关系,中心留有空白区域可展示汇总信息\n * 适用场景:\n * - 需要同时展示整体数据和各部分占比\n * - 强调数据的整体与部分关系\n * - 中心区域需要展示关键指标或标题\n * 数据要求:\n * - 至少1个指标字段(度量)\n * - 所有维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * - 所有指标会自动合并为一个指标\n * 默认开启的功能:\n * - 默认开启图例、数据标签、提示信息、占比计算、中心文本\n */\nexport interface Donut {\n /**\n * 环形图\n * @description 环形图,中心留有空白区域的饼图变体\n * @type {'donut'}\n * @example 'donut'\n */\n chartType: 'donut'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 环形图的数据最终会被转换为1个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{category:'A', value:30}, {category:'B', value:70}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 环形图的所有维度会与指标名称(存在多个指标时)合并成1个维度, 映射到饼图的角度, 并作为图例项展示.\n * @type {Dimensions}\n * @example [{id: 'category', alias: '类别'}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 环形图的所有指标会自动合并为一个指标, 映射到饼图的半径, 存在多个指标时, 指标名称会与其余维度合并, 并作为图例项展示.\n * @type {DimensionTree}\n * @example [{id: 'value', alias: '数值占比', format: 'percent'}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zDonut = z.object({\n chartType: z.literal('donut'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n theme: zTheme.optional(),\n locale: zLocale.optional(),\n})\n","import { z } from 'zod'\nimport { zLocale, type Locale } from '../../i18n'\nimport type {\n MeasureTree} from '../../properties';\nimport {\n zBackgroundColor,\n zColor,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zTheme,\n zTooltip,\n type BackgroundColor,\n type Color,\n type Dataset,\n type Dimensions,\n type Label,\n type Legend,\n type Theme,\n type Tooltip,\n} from '../../properties'\n\n/**\n * 雷达图类型定义\n * @description 雷达图,适用于多维度数据的对比分析,通过多轴坐标系展示各维度的数值分布\n * 适用场景:\n * - 多维度数据的综合表现对比\n * - 多个对象在多个指标上的性能评估\n * - 分类数据的多维度特征展示\n * 数据要求:\n * - 至少1个数值字段(度量)\n * - 第一个维度作为雷达图的各个维度轴,其他维度作为不同的系列进行对比\n * - 支持多个指标分别作为不同的系列展示\n * 默认开启的功能:\n * - 默认开启图例、雷达坐标系、数据标签、提示信息、数值缩放\n */\nexport interface Radar {\n /**\n * 雷达图\n * @description 雷达图,通过多轴坐标系展示多维度数据对比关系\n * @type {'radar'}\n * @example 'radar'\n */\n chartType: 'radar'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 玫瑰图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{month:'1月', value:100}, {month:'2月', value:150}, {month:'3月', value:120}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 雷达图的第一个维度被映射到角度轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * @type {Dimensions}\n * @example [{id: 'category', alias: '类别'}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 雷达图的指标会自动合并为一个指标, 映射到半径轴, 存在多个指标时, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {MeasureTree}\n * @example [{id: 'value', alias: '数值'}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zRadar = z.object({\n chartType: z.literal('radar'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n theme: zTheme.optional(),\n locale: zLocale.optional(),\n})\n","import { z } from 'zod'\nimport type { Locale } from '../../i18n'\nimport { zLocale } from '../../i18n'\nimport {\n zBackgroundColor,\n zColorLegend,\n zDataset,\n zDimensions,\n zLabel,\n zLinearColor,\n zMeasureTree,\n zTheme,\n zTooltip,\n} from '../../properties'\nimport type {\n BackgroundColor,\n ColorLegend,\n Dataset,\n Dimensions,\n Label,\n LinearColor,\n MeasureTree,\n Theme,\n Tooltip,\n} from '../../properties'\n\n/**\n * 漏斗图\n * @description 漏斗图,用于展示单一维度数据的占比关系\n * 适用场景:\n * 漏斗图适用场景:\n * - 适合用来分析具有多个连续、规范化步骤的流程,并清晰地展示在每个环节的数据流失或转化情况\n * 数据要求:\n * - 至少1个数值字段(指标)\n * - 所有维度会与指标名称(存在多个指标时)合并成一个维度, 作为图例项展示\n * - 所有指标会自动合并为一个指标\n * 默认开启的功能:\n * - 默认开启图例、数据标签、提示信息、占比计算\n */\nexport interface Funnel {\n /**\n * 漏斗图\n * @description 漏斗图,展示单一维度数据的占比关系\n * @type {'funnel'}\n * @example 'funnel'\n */\n chartType: 'funnel'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 饼图的数据最终会被转换为1个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{category:'A', value:30}, {category:'B', value:70}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 漏斗图的所有维度会与指标名称(存在多个指标时)合并成一个维度,并作为图例项展示\n * @type {Dimensions}\n * @example [{id: 'category', alias: '类别'}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 漏斗图的所有指标会自动合并为一个指标, 存在多个指标时, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {DimensionTree}\n * @example [{id: 'value', alias: '数值占比', format: 'percent'}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * @description 线性渐变颜色配置, 用于定义图表的颜色方案\n */\n color?: LinearColor\n\n /**\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * @description 颜色图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: ColorLegend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zFunnel = z.object({\n chartType: z.literal('funnel'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zLinearColor.optional(),\n label: zLabel.optional(),\n legend: zColorLegend.optional(),\n tooltip: zTooltip.optional(),\n theme: zTheme.optional(),\n locale: zLocale.optional(),\n})\n","import { z } from 'zod'\nimport { zLocale, type Locale } from '../../i18n'\nimport type {\n ColorLegend,\n LinearColor,\n MeasureTree} from '../../properties';\nimport {\n zBackgroundColor,\n zColorLegend,\n zDataset,\n zDimensions,\n zLabel,\n zLinearColor,\n zMeasureTree,\n zTheme,\n zTooltip,\n type BackgroundColor,\n type Dataset,\n type Dimensions,\n type Label,\n type Theme,\n type Tooltip,\n} from '../../properties'\n\n/**\n * 热力图类型定义\n * @description 热力图,通过二维矩阵的颜色深浅展示数据的分布和强弱关系\n * 适用场景:\n * - 大规模二维数据的密度和强度展示\n * - 分类与数值的关联分析\n * - 时间序列与类别的交叉对比\n * 数据要求:\n * - 至少2个维度字段,用于确定热力图的行和列\n * - 至少1个数值字段(度量),用于映射颜色深浅\n * - 支持多个指标时,通常选择一个指标进行颜色映射\n * 默认开启的功能:\n * - 默认开启图例、坐标轴、数据标签、提示信息、数值缩放\n */\nexport interface Heatmap {\n /**\n * 热力图\n * @description 热力图,通过二维矩阵的颜色深浅展示数据的分布和强弱关系\n * @type {'heatmap'}\n * @example 'heatmap'\n */\n chartType: 'heatmap'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 热力图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{month:'1月', value:100}, {month:'2月', value:150}, {month:'3月', value:120}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 热力图的第一个维度被映射到角度轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * @type {Dimensions}\n * @example [{id: 'category', alias: '类别'}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 热力图的指标会自动合并为一个指标, 映射到半径轴, 存在多个指标时, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {MeasureTree}\n * @example [{id: 'value', alias: '数值'}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: LinearColor\n\n /**\n * @description 热力图标签配置, 用于定义图表的数据标签, 自动开启标签反色, 确保标签可读性.\n */\n label?: Label\n\n /**\n * 图例\n * @description 热力图的颜色图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: ColorLegend\n\n /**\n * 提示信息\n * @description 热力图的提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zHeatmap = z.object({\n chartType: z.literal('heatmap'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zLinearColor.optional(),\n label: zLabel.optional(),\n legend: zColorLegend.optional(),\n tooltip: zTooltip.optional(),\n theme: zTheme.optional(),\n locale: zLocale.optional(),\n})\n","import { z } from 'zod'\n\nimport { zBar, type Bar } from './chartType/bar'\nimport { zBarParallel, type BarParallel } from './chartType/barParallel'\nimport { zColumn, type Column } from './chartType/column'\nimport { zColumnParallel, type ColumnParallel } from './chartType/columnParallel'\nimport { zColumnPercent, type ColumnPercent } from './chartType/columnPercent'\nimport { zLine, type Line } from './chartType/line'\nimport type { Table } from './chartType/table'\nimport { zRose, type Rose } from './chartType/rose'\nimport { zBarPercent, type BarPercent } from './chartType/barPercent'\nimport type { PivotTable } from './chartType/pivotTable'\nimport { zPie, type Pie } from './chartType/pie'\nimport { zDonut, type Donut } from './chartType/donut'\nimport type { DualAxis } from './chartType/dualAxis'\nimport { zArea, type Area } from './chartType/area'\nimport { zAreaPercent, type AreaPercent } from './chartType/areaPercent'\nimport type { AreaRange, Heatmap, Radar } from './chartType'\nimport {\n zAreaRange,\n zDualAxis,\n zFunnel,\n zHeatmap,\n zPivotTable,\n zRadar,\n zRoseParallel,\n zScatter,\n zTable,\n type Funnel,\n type RoseParallel,\n type Scatter,\n} from './chartType'\n\nexport type VSeed =\n // table\n | Table\n | PivotTable\n\n // cartesian\n | Line\n | Column\n | ColumnParallel\n | ColumnPercent\n | Bar\n | BarParallel\n | BarPercent\n | Area\n | AreaPercent\n | AreaRange\n | Scatter\n | DualAxis\n\n // polar\n | Rose\n | RoseParallel\n | Pie\n | Donut\n | Radar\n\n // other\n | Funnel\n | Heatmap\n\nexport const zVSeed = z.discriminatedUnion('chartType', [\n zTable,\n zPivotTable,\n // cartesian\n zLine,\n zColumn,\n zColumnParallel,\n zColumnPercent,\n zBar,\n zBarParallel,\n zBarPercent,\n zArea,\n zAreaPercent,\n zAreaRange,\n zScatter,\n zDualAxis,\n // polar\n zPie,\n zDonut,\n zRose,\n zRoseParallel,\n zRadar,\n // other\n zFunnel,\n zHeatmap,\n])\n","import { z } from 'zod'\nimport { zChartType } from './properties/chartType'\nimport { zDataset } from './properties/dataset'\nimport { zDimensionTree } from './properties/dimensions'\nimport { zMeasureTree } from './properties/measures'\nimport { zEncoding } from './properties/encoding/encoding'\nimport { zDatasetReshapeInfo } from './properties/datasetReshapeInfo/datasetReshapeInfo'\nimport { zTheme, zCustomThemeConfig } from './properties/theme'\nimport { zConfig } from './properties/config'\nimport { zAnalysis, zAnnotation, zMarkStyle } from './properties'\nimport { zLocale } from './i18n'\n\nexport const zAdvancedVSeed = z.object({\n chartType: zChartType,\n dataset: zDataset,\n datasetReshapeInfo: zDatasetReshapeInfo,\n dimensions: zDimensionTree,\n measures: zMeasureTree,\n encoding: zEncoding,\n config: zConfig,\n analysis: zAnalysis,\n theme: zTheme,\n markStyle: zMarkStyle,\n customTheme: zCustomThemeConfig,\n annotation: zAnnotation,\n locale: zLocale,\n})\n\nexport type AdvancedVSeed = z.infer<typeof zAdvancedVSeed>\n"],"names":["execPipeline","pipeline","context","initialValue","result","prev","cur","buildAdvanced","builder","start","performance","Date","chartType","Error","Builder","e","console","end","buildSpec","advancedVSeed","build","spec","Intl","translateMap","value","segments","values","text","segment","index","translatedText","isNullish","locale","intl","i18n","getColorItems","datasetReshapeInfo","colorItems","unique","d","colorIdMap","getColorIdMap","vseed","advanced","customPipe","themeKey","initAdvancedVSeed","autoMeasures","measures","dataset","top100dataset","sample","Object","key","item","undefined","measure","preorderTraverse","tree","callback","stack","node","stop","children","i","child","findMeasureById","id","findFirstMeasure","findAllMeasures","autoDimensions","dimensions","dim","records","theme","customTheme","chartConfigTheme","chartConfig","mergedConfig","mergeDeep","clone","_k","Array","mergeArray","chartCustomTheme","arr","themeItem","isObjectType","merge","tableAdvancedPipeline","initTable","measureTreeToColumns","eachNode","columns","treeTreeToColumns","dimensionTreeToColumns","groupNode","field","title","props","bodyStyle","themeConfig","borderColor","backgroundColor","fontColor","fontSize","hoverCellBgColor","hoverInlineColor","headerStyle","themConfig","frameStyle","selectionStyle","tableSpecPipeline","registerTable","autoPivotMeasures","findDimensionById","findFirstDimension","findAllDimensions","autoPivotDimensions","newDimensions","pivotTableAdvancedPipeline","initPivotTable","pivotColumns","pivotRows","rows","pivotIndicators","rowHeaderStyle","cornerHeaderStyle","hoverCellColor","pivotTableSpecPipeline","registerPivotTable","measureDepth","depth","Math","isTable","isPivotTable","isVTable","isVChart","isPivotChart","hasRowOrColumnDimension","dimension","hasMeasureGroup","autoMeasureGroup","newMeasures","currentGroup","createEmptyMeasureGroup","measureGroups","pivotAdapter","pivotPipeline","usePivotChart","FoldMeasureName","FoldMeasureId","FoldMeasureValue","FoldPrimaryMeasureValue","FoldSecondaryMeasureValue","UnfoldDimensionGroup","UnfoldDimensionGroupId","Separator","ORIGINAL_DATA","foldMeasures","measureId","measureName","measureValue","foldInfo","ids","j","datum","omit","alias","unfoldDimensions","unfoldStartIndex","unfoldGroupName","unfoldGroupId","foldMeasureId","dimensionsSeparator","dimensionsToBeUnfolded","unfoldInfo","colorMap","colorName","generateDimGroupName","colorId","dimensionsToBeGrouped","String","unfoldZeroDimensions","emptyReshapeResult","dataReshapeFor2D1M0Name","options","foldMeasureName","foldMeasureValue","unfoldDimensionGroup","unfoldDimensionGroupId","foldedDataset","finalDataset","onlyOneMeasure","onlyOneDimension","dims","reshapeTo2D1M0Name","newDatasets","pivotReshapeTo2D1M0Name","commonDimensions","measureGroup","groupId","newSubDataset","reshapeInfo","encodingXY","xDimension","isZeroDimension","encoding","x","y","group","color","sortXBandAxis","sortAxis","xField","axisOrderResult","calcOrder","sortYBandAxis","yField","sortLegend","groupField","nameMap","pre","orderRes","itemNameOrId","sortConfig","order","orderBy","res","sort","a","b","aValue","bValue","lineConfig","config","pick","columnConfig","pieConfig","areaConfig","areaPercentConfig","scatterConfig","barConfig","barParallelConfig","barPercentConfig","columnParallelConfig","columnPercentConfig","donutConfig","roseConfig","roseParallelConfig","funnelConfig","heatmapConfig","radarConfig","markStyle","annotation","lineAdvancedPipeline","initLine","baseConfig","colorScheme","colorMapping","mappingList","idMap","_","v","datasetXY","analysis","orderMapping","angle","fields","progressive","size","xBand","visible","label","tick","grid","line","labelAutoHide","labelAutoHideGap","labelAutoLimit","labelAutoLimitLength","labelAutoRotate","labelAutoRotateAngleRange","sampling","bandAxis","ANNOTATION_Z_INDEX","LINEAR_AXIS_INNER_OFFSET_TOP","createNumFormatter","format","type","ratio","symbol","thousandSeparator","prefix","suffix","fractionDigits","significantDigits","roundingMode","roundingPriority","numFormatterOptions","isNumber","numFormatter","num","Number","typeSymbol","numStr","parts","autoNumFormatter","createFormatter","autoFormatter","yLinear","zero","nice","inverse","max","min","log","logBase","linearAxis","enable","formatValue","autoFormat","isEmpty","formatter","tooltip","groupName","verticalCrosshairLine","lineColor","labelColor","labelVisible","labelBackgroundColor","crosshair","discreteLegend","legend","position","labelFontColor","labelFontSize","labelFontWeight","maxSize","border","shapeType","orient","legendPosition","items","selector","vchartDatum","selectorMode","vchartKeys","k","selectors","isValueSelector","isMeasureSelector","op","selectorValueArr","isDimensionSelector","isPartialDatumSelector","pointStyle","pointStyles","customMap","style","pointBorderColor","pointBorderStyle","pointBorderWidth","pointColor","pointColorOpacity","pointSize","lineDash","pointStateDimensionHover","point","pointStateHover","lineStyle","lineStyles","lineGroups","groupBy","lineColorOpacity","lineSmooth","lineWidth","dashSegment","dashGap","curveType","lineData","isSubset","sub","obj","annotationPoint","annotationPointList","markPoint","selectorPoint","textColor","textFontSize","textFontWeight","textAlign","textBaseline","backgroundBorderColor","backgroundBorderRadius","backgroundBorderWidth","backgroundPadding","backgroundVisible","offsetX","offsetY","selectedData","data","targetDatum","annotationVerticalLine","annotationVerticalLineList","positionMap","markLine","xValue","textPosition","lineVisible","generateOneMarkLine","isArray","isString","xValueArr","specMarkLine","newMarkLine","annotationHorizontalLine","yValue","yValueArr","annotationArea","annotationAreaList","markArea","areaColor","areaColorOpacity","areaBorderColor","areaBorderRadius","areaBorderWidth","outerPadding","positionData","xyList","yAxisHelper","xAxisHelper","yScale","minX","maxX","minY","maxY","xScale","initPivot","pivotGridStyle","transparent","hoverBackgroundColor","chartPipeline","indicators","newEncoding","newDatasetReshapeInfo","newContext","chartSpec","pivotIndicatorsAsRow","pivotIndicatorsAsCol","datasetPivot","pivotRowDimensions","rowDimensions","pivotColumnDimensions","columnDimensions","pivotDiscreteLegend","legends","pivotLine","lineSpecPipeline","registerLine","dataReshapeFor2D1M","reshapeTo2D1M","pivotReshapeTo2D1M","columnAdvancedPipeline","initColumn","stackCornerRadius","stackInverse","verticalCrosshairRect","rectColor","barStyle","showStroke","barStyles","barBorderColor","barBorderStyle","barBorderWidth","barColor","barColorOpacity","barRadius","annotationAreaBand","xBandWidth","yBandWidth","column","pivotColumn","columnSpecPipeline","registerColumn","columnParallelAdvancedPipeline","initColumnParallel","columnParallel","pivotColumnParallel","columnParallelSpecPipeline","registerColumnParallel","columnPercentAdvancedPipeline","percent","columnPercent","pivotColumnPercent","columnPercentSpecPipeline","registerColumnPercent","encodingYX","yDimension","barAdvancedPipeline","initBar","datasetYX","xLinear","yBand","horizontalCrosshairRect","bar","pivotBar","barSpecPipeline","registerBar","barParallelAdvancedPipeline","initBarParallel","barParallel","pivotBarParallel","barParallelSpecPipeline","registerBarParallel","barPercentAdvancedPipeline","barPercent","pivotBarPercent","barPercentSpecPipeline","registerBarPercent","areaAdvancedPipeline","initArea","areaStyle","areaStyles","area","pivotArea","areaSpecPipeline","registerArea","areaPercentAdvancedPipeline","areaPercent","pivotAreaPercent","areaPercentSpecPipeline","registerAreaPercent","autoMeasuresBy2M1Group","auto2M1Group","allMeasures","groups","singleMeasures","dataReshapeFor1D","reshapeTo1D","pivotReshapeTo1D","encodingAreaRange","m1","m2","areaRangeAdvancedPipeline","series","args","initAreaRange","initAreaRangeLine1","initAreaRangeLine2","tooltipDisable","tooltipAreaRange","areaRange","pivotAreaRange","areaRangeSpecPipeline","registerAreaRange","dataReshapeFor1D2M","reshapeTo1D2M","pivotReshapeTo1D2M","encodingYY","firstMeasure","scatterAdvancedPipeline","initScatter","horizontalCrosshairLine","scatter","pivotScatter","scatterSpecPipeline","registerScatter","reshapeTo2D2M","datasets","foldInfoList","unfoldInfoList","primaryMeasures","secondaryMeasures","pivotReshapeTo2D2M","datasetList","encodingXYY","dualAxisConfig","autoDualMeasures","dualMeasures","dualMeasuresToMeasureTree","measureTree","groupChildren","arrPrimaryMeasures","arrSecondaryMeasures","dualAxisAdvancedPipeline","initDualAxisPrimary","initDualAxisSecondary","dualChartTypePrimary","primary","columnSpec","dualChartTypeSecondary","secondary","datasetPrimary","datasetSecondary","labelPrimary","labelSecondary","tooltipPrimary","tooltipSecondary","yLinearPrimary","primaryYAxis","seriesId","yLinearSecondary","secondaryYAxis","dualAxis","pivotDualAxis","dualAxisSpecPipeline","registerDualAxis","dataReshapeFor1D1M","reshapeTo1D1M","pivotReshapeTo1D1M","encodingPie","radius","pieAdvancedPipeline","initPie","pie","pivotPie","pieSpecPipeline","registerPie","donutAdvancedPipeline","initDonut","donut","pivotDonut","donutSpecPipeline","registerDonut","encodingRose","angleDimension","is1D1M","roseAdvancedPipeline","initRose","hasNegativeValue","radiusAxis","is0D","is1M1D","showAxis","angleAxis","rose","pivotRose","roseSpecPipeline","registerRose","roseParallelAdvancedPipeline","initRoseParallel","roseParallel","pivotRoseParallel","roseParallelSpecPipeline","registerRoseParallel","encodingAR","radarAdvancedPipeline","initRadar","radarAngleAxis","radarRadiusAxis","radar","pivotRadar","radarSpecPipeline","registerRadar","encodingFunnel","funnelAdvancedPipeline","initFunnel","linearColor","colorLegend","funnel","pivotFunnel","funnelSpecPipeline","registerFunnel","encodingMatrix","heatmapAdvancedPipeline","labelColorInversion","initHeatmap","heatmap","pivotHeatmap","heatmapSpecPipeline","registerHeatmap","lightTheme","barBandAxis","crosshairLine","crosshairRect","tableConfig","darkTheme","registerCustomTheme","registerLightTheme","registerDarkTheme","registerAll","updateAdvanced","advancedPipe","updateSpec","specPipe","zChartType","z","zDualChartType","zDatum","zDataset","zDimension","zDimensionGroup","zDimensions","zDimensionTree","zNumFormat","zMeasure","zMeasureGroup","zMeasures","zMeasureTree","zDualMeasure","zDualMeasures","zFoldInfo","zUnfoldInfo","zDatasetReshapeInfo","zEncoding","zXBandAxis","zYBandAxis","zXLinearAxis","zYLinearAxis","zCrosshairLine","zCrosshairRect","zStackCornerRadius","zBackgroundColor","zColor","zLinearColor","zLabel","zLegend","zColorLegend","zTooltip","zTableConfig","zPivotTableConfig","zLineConfig","zColumnConfig","zColumnParallelConfig","zColumnPercentConfig","zBarConfig","zBarParallelConfig","zBarPercentConfig","zAreaConfig","zAreaPercentConfig","zAreaRangeConfig","zDualAxisConfig","zScatterConfig","zRoseConfig","zRoseParallelConfig","zPieConfig","zDonutConfig","zRadarConfig","zFunnelConfig","zHeatmapConfig","zConfig","zAxis","zCustomThemeConfig","zCustomTheme","zTheme","zSelector","zSelectors","zBarStyle","zPointStyle","zLineStyle","zAreaStyle","zMarkStyle","zAnnotationPoint","zAnnotationVerticalLine","zAnnotationHorizontalLine","zAnnotationArea","zAnnotation","zSort","zSortLegend","zAnalysis","zLocale","zTable","zPivotTable","zLine","zColumn","zColumnParallel","zColumnPercent","zBar","zBarParallel","zBarPercent","zArea","zAreaPercent","zAreaRange","zScatter","zDualAxis","zRose","zRoseParallel","zPie","zDonut","zRadar","zFunnel","zHeatmap","zVSeed","zAdvancedVSeed"],"mappings":"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;IACAmD;IACAE;IACAM;IACAwB;IACAW;IACAG;IACAwJ;IACA1I;IACAmB;IACAa;IACAG;CACD;AAED,MAAM0G,YAA0B;IAC9BvF;IACAC;IACAS;IACAE;IACArU,gCAAgB;QACd4Y;QACAtT;QACA5G;QACA2W;QACA1M;QACAK;QACAE;QACAuC;QACArC;QACAmD;QACAE;QACA8B;QACAW;QACAG;QACAwJ;QACA1I;QACAmB;QACAa;QACAG;KACD;IACDgC;IACAE;IACAE;CACD;AAEM,MAAMuE,mBAAmB;IAAC3X,0BAAayX,WAAMC;CAAW;ACpFxD,MAAME,eAAe;IAC1BjgB,QAAQ,oBAAoB,CAA5BA,IAAoC,GAAG0f;IACvC1f,QAAQ,gBAAgB,CAAxBA,IAAgC,GAAGggB;AACrC;ACWO,MAAME,8BAAgD;IAC3Dle;IACAC;IACAuB;IACA6E,aAAa;QAACiD;KAAmB,EAAE;QAACE;KAAwB;IAC5DM;IACAQ;IACAO;IACAqB;IACAtK;IACAmL;IACAC;CACD;ACID,MAAMmR,cAA4B;IAChCR;IACAvD;IACA/P;IACA5G;IACAqY;IACApO;IACAK;IACAE;IACAuC;IACArC;IACAmD;IACAE;IACAM;IACAwB;IACAc;IACAwJ;IACA1I;IACAmB;IACAa;IACAG;CACD;AAED,MAAM+G,mBAAiC;IACrC5F;IAEAC;IACAS;IACAE;IACArU,gCAAgB;QACd4Y;QACAvD;QACA/P;QACA5G;QACAqY;QACApO;QACAK;QACAE;QACAuC;QACArC;QACAmD;QACAE;QACA8B;QACAc;QACAwJ;QACA1I;QACAmB;QACAa;QACAG;KACD;IACDgC;IACAE;IACAE;CACD;AAEM,MAAM4E,0BAA0B;IAAChY,0BAAa8X,aAAaC;CAAkB;ACrF7E,MAAME,sBAAsB;IACjCtgB,QAAQ,oBAAoB,CAA5BA,WAA2C,GAAGkgB;IAC9ClgB,QAAQ,gBAAgB,CAAxBA,WAAuC,GAAGqgB;AAC5C;ACGO,MAAME,yBAAuC,CAAClgB,eAAejB;IAClE,MAAME,SAAS;QAAE,GAAGe,aAAa;IAAC;IAClC,MAAM,EAAEuB,KAAK,EAAE,G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"}
|
1
|
+
{"version":3,"file":"index.js","sources":["webpack://@visactor/vseed/./src/pipeline/utils/pipeline.ts","webpack://@visactor/vseed/./src/builder/builder/buildAdvanced.ts","webpack://@visactor/vseed/./src/builder/builder/buildSpec.ts","webpack://@visactor/vseed/./src/builder/builder/build.ts","webpack://@visactor/vseed/./src/i18n/i18n.ts","webpack://@visactor/vseed/./src/builder/builder/advanced/colorItems.ts","webpack://@visactor/vseed/./src/builder/builder/builder.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/init/initAdvancedVSeed.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/init/autoMeasures.ts","webpack://@visactor/vseed/./src/pipeline/utils/tree/traverse.ts","webpack://@visactor/vseed/./src/pipeline/utils/measures/find.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/init/autoDimensions.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/records/records.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/config/tableConfig.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/theme/theme.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipeline/table.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/init/table.ts","webpack://@visactor/vseed/./src/pipeline/utils/measures/typeGuard.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/columns/dimensionsToColumns.ts","webpack://@visactor/vseed/./src/pipeline/utils/format/createNumFormatter.ts","webpack://@visactor/vseed/./src/pipeline/utils/format/createFormatter.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/columns/measuresToColumns.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/theme/bodyStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/theme/headerStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/theme/frameStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/theme/selectionStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipeline/table.ts","webpack://@visactor/vseed/./src/builder/register/chartType/table.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/init/autoPivotMeasures.ts","webpack://@visactor/vseed/./src/pipeline/utils/dimensions/find.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/init/autoPivotDimensions.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/config/pivotTableConfig.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipeline/pivotTable.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/init/pivotTable.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/columns/pivotColumns.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/rows/pivotRows.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/indicators/pivotIndicators.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/theme/rowHeaderStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/theme/cornerHeaderStyle.ts","webpack://@visactor/vseed/../../node_modules/.pnpm/@visactor+vtable@1.19.7/node_modules/@visactor/vtable/es/ts-types/new-data-set.js","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/indicators/pivotDataConfig.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipeline/pivotTable.ts","webpack://@visactor/vseed/./src/builder/register/chartType/pivotTable.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/init/initAdvancedVSeed.ts","webpack://@visactor/vseed/./src/pipeline/utils/measures/depth.ts","webpack://@visactor/vseed/./src/pipeline/utils/chatType.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/init/autoMeasures.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/init/autoDimensions.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/pivot/pivotAdapter.ts","webpack://@visactor/vseed/./src/dataReshape/constant.ts","webpack://@visactor/vseed/./src/dataReshape/foldMeasures.ts","webpack://@visactor/vseed/./src/dataReshape/unfoldDimensions.ts","webpack://@visactor/vseed/./src/dataReshape/unfoldZeroDimensions.ts","webpack://@visactor/vseed/./src/dataReshape/dataReshapeFor2D1M0Name.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeTo2D1M0Name.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo2D1M0Name.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/encodingXY.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/analysis/sort.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/config/config.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/markStyle/markStyle.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/annotation/annotation.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/line.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/line.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/color.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/backgroundColor/background.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/datasetXY.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/progressive.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/xBand.ts","webpack://@visactor/vseed/./src/pipeline/utils/constant.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/yLinear.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/label/label.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltip.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/crosshair/verticalCrosshairLine.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/legend/discreteLegend.ts","webpack://@visactor/vseed/./src/dataSelector/selector.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/pointStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/pointState.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/lineStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/utils.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/annotationPoint.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/annotationVerticalLine.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/annotationHorizontalLine.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/annotationArea.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/pivot.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/pivotChart/pivotGridStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/pivotChart/pivotIndicators.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/datasetPivot.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/pivotChart/pivotRowDimensions.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/pivotChart/pivotColumnDimensions.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/legend/pivotDiscreteLegend.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/pivotChart/pivotAdapter.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/line.ts","webpack://@visactor/vseed/./src/builder/register/chartType/line.ts","webpack://@visactor/vseed/./src/dataReshape/dataReshapeFor2D1M.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeTo2D1M.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo2D1M.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/column.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/column.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/stack/stackCornerRadius.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/stack/stack.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/crosshair/verticalCrosshairRect.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/barStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/annotationAreaBand.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/column.ts","webpack://@visactor/vseed/./src/builder/register/chartType/column.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/columnParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/columnParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/columnParallel.ts","webpack://@visactor/vseed/./src/builder/register/chartType/columnParallel.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/columnPercent.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/percent/percent.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/columnPercent.ts","webpack://@visactor/vseed/./src/builder/register/chartType/columnPercent.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/encodingYX.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/bar.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/bar.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/datasetYX.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/xLinear.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/yBand.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/crosshair/horizontalCrosshairRect.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/bar.ts","webpack://@visactor/vseed/./src/builder/register/chartType/bar.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/barParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/barParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/barParallel.ts","webpack://@visactor/vseed/./src/builder/register/chartType/barParallel.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/barPercent.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/barPercent.ts","webpack://@visactor/vseed/./src/builder/register/chartType/barPercent.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/area.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/area.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/areaStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/area.ts","webpack://@visactor/vseed/./src/builder/register/chartType/area.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/areaPercent.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/areaPercent.ts","webpack://@visactor/vseed/./src/builder/register/chartType/areaPercent.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/init/autoMeasuresBy2M1Group.ts","webpack://@visactor/vseed/./src/dataReshape/dataReshapeFor1D.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeTo1D.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo1D.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/encodingAreaRange.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/areaRange.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/series/series.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/areaRange.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipDisable.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipAreaRange.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/areaRange.ts","webpack://@visactor/vseed/./src/builder/register/chartType/areaRange.ts","webpack://@visactor/vseed/./src/dataReshape/dataReshapeFor1D2M.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeTo1D2M.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo1D2M.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/encodingYY.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/scatter.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/scatter.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/crosshair/horizontalCrosshairLine.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/scatter.ts","webpack://@visactor/vseed/./src/builder/register/chartType/scatter.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeTo2D2M.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo2D2M.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/encodingXYY.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/config/dualAxis.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/init/autoDualMeasures.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/dualAxis.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/initDualAxis.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dual/dualChartType.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/datasetDualAxis.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/label/labelDualAxis.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/yLinearPrimary.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/yLinearSecondary.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/dualAxis.ts","webpack://@visactor/vseed/./src/builder/register/chartType/dualAxis.ts","webpack://@visactor/vseed/./src/dataReshape/dataReshapeFor1D1M.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeTo1D1M.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo1D1M.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/encodingPie.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/pie.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/pie.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/pie.ts","webpack://@visactor/vseed/./src/builder/register/chartType/pie.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/donut.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/donut.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/donut.ts","webpack://@visactor/vseed/./src/builder/register/chartType/donut.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/encodingRose.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/rose.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/rose.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/radius.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/angle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/rose.ts","webpack://@visactor/vseed/./src/builder/register/chartType/rose.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/roseParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/roseParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/roseParallel.ts","webpack://@visactor/vseed/./src/builder/register/chartType/roseParallel.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/encodingAR.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/radar.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/radar.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/radarAngle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/radarRadius.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/radar.ts","webpack://@visactor/vseed/./src/builder/register/chartType/radar.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/encodingFunnel.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/funnel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/funnel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/linearColor.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/legend/colorLegend.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/funnel.ts","webpack://@visactor/vseed/./src/builder/register/chartType/funnel.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/encodingMatrix.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/heatmap.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/label/labelColorInversion.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/heatmap.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/heatmap.ts","webpack://@visactor/vseed/./src/builder/register/chartType/heatmap.ts","webpack://@visactor/vseed/./src/theme/light.ts","webpack://@visactor/vseed/./src/theme/dark.ts","webpack://@visactor/vseed/./src/builder/register/theme/custom.ts","webpack://@visactor/vseed/./src/builder/register/theme/light.ts","webpack://@visactor/vseed/./src/builder/register/theme/dark.ts","webpack://@visactor/vseed/./src/builder/register/all.ts","webpack://@visactor/vseed/./src/builder/register/custom.ts","webpack://@visactor/vseed/./src/pipeline/utils/dimensions/typeGuard.ts","webpack://@visactor/vseed/./src/types/properties/chartType/chartType.ts","webpack://@visactor/vseed/./src/types/properties/chartType/dualChartType.ts","webpack://@visactor/vseed/./src/types/properties/dataset/dataset.ts","webpack://@visactor/vseed/./src/types/properties/dimensions/dimensions.ts","webpack://@visactor/vseed/./src/types/properties/measures/format/numFormat.ts","webpack://@visactor/vseed/./src/types/properties/measures/zMeasures.ts","webpack://@visactor/vseed/./src/types/properties/measures/zDualMeasures.ts","webpack://@visactor/vseed/./src/types/properties/datasetReshapeInfo/datasetReshapeInfo.ts","webpack://@visactor/vseed/./src/types/properties/encoding/encoding.ts","webpack://@visactor/vseed/./src/types/properties/config/axes/bandAxis.ts","webpack://@visactor/vseed/./src/types/properties/config/axes/linearAxis.ts","webpack://@visactor/vseed/./src/types/properties/config/crosshair/crosshair.ts","webpack://@visactor/vseed/./src/types/properties/config/stackCornerRadius/stackCornerRadius.ts","webpack://@visactor/vseed/./src/types/properties/config/backgroundColor/backgroundColor.ts","webpack://@visactor/vseed/./src/types/properties/config/color/color.ts","webpack://@visactor/vseed/./src/types/properties/config/label/label.ts","webpack://@visactor/vseed/./src/types/properties/config/legend/legend.ts","webpack://@visactor/vseed/./src/types/properties/config/tooltip/tooltip.ts","webpack://@visactor/vseed/./src/types/properties/config/config.ts","webpack://@visactor/vseed/./src/types/properties/config/axes/axis.ts","webpack://@visactor/vseed/./src/types/properties/theme/customTheme.ts","webpack://@visactor/vseed/./src/types/properties/theme/theme.ts","webpack://@visactor/vseed/./src/types/dataSelector/selector.ts","webpack://@visactor/vseed/./src/types/properties/markStyle/barStyle.ts","webpack://@visactor/vseed/./src/types/properties/markStyle/pointStyle.ts","webpack://@visactor/vseed/./src/types/properties/markStyle/lineStyle.ts","webpack://@visactor/vseed/./src/types/properties/markStyle/areaStyle.ts","webpack://@visactor/vseed/./src/types/properties/markStyle/markStyle.ts","webpack://@visactor/vseed/./src/types/properties/annotation/zAnnotationPoint.ts","webpack://@visactor/vseed/./src/types/properties/annotation/zAnnotationVerticalLine.ts","webpack://@visactor/vseed/./src/types/properties/annotation/zAnnotationHorizontalLine.ts","webpack://@visactor/vseed/./src/types/properties/annotation/zAnnotationArea.ts","webpack://@visactor/vseed/./src/types/properties/annotation/annotation.ts","webpack://@visactor/vseed/./src/types/properties/analysis/sort.ts","webpack://@visactor/vseed/./src/types/properties/analysis/sortLegend.ts","webpack://@visactor/vseed/./src/types/properties/analysis/analysis.ts","webpack://@visactor/vseed/./src/types/i18n/i18n.ts","webpack://@visactor/vseed/./src/types/chartType/table/zTable.ts","webpack://@visactor/vseed/./src/types/chartType/pivotTable/zPivotTable.ts","webpack://@visactor/vseed/./src/types/chartType/line/zLine.ts","webpack://@visactor/vseed/./src/types/chartType/column/zColumn.ts","webpack://@visactor/vseed/./src/types/chartType/columnParallel/zColumnParallel.ts","webpack://@visactor/vseed/./src/types/chartType/columnPercent/zColumnPercent.ts","webpack://@visactor/vseed/./src/types/chartType/bar/zBar.ts","webpack://@visactor/vseed/./src/types/chartType/barParallel/zBarParallel.ts","webpack://@visactor/vseed/./src/types/chartType/barPercent/zBarPercent.ts","webpack://@visactor/vseed/./src/types/chartType/area/zArea.ts","webpack://@visactor/vseed/./src/types/chartType/areaPercent/zAreaPercent.ts","webpack://@visactor/vseed/./src/types/chartType/areaRange/zAreaRange.ts","webpack://@visactor/vseed/./src/types/chartType/scatter/zScatter.ts","webpack://@visactor/vseed/./src/types/chartType/dualAxis/zDualAxis.ts","webpack://@visactor/vseed/./src/types/chartType/rose/zRose.ts","webpack://@visactor/vseed/./src/types/chartType/roseParallel/zRoseParallel.ts","webpack://@visactor/vseed/./src/types/chartType/pie/zPie.ts","webpack://@visactor/vseed/./src/types/chartType/donut/zDonut.ts","webpack://@visactor/vseed/./src/types/chartType/radar/zRadar.ts","webpack://@visactor/vseed/./src/types/chartType/funnel/zFunnel.ts","webpack://@visactor/vseed/./src/types/chartType/heatmap/zHeatmap.ts","webpack://@visactor/vseed/./src/types/vseed.ts","webpack://@visactor/vseed/./src/types/advancedVSeed.ts"],"sourcesContent":["import type { ExecPipelineType, Pipe } from 'src/types'\n\n/**\n * 执行pipeline, 每个pipe负责构建结果的一部分, 构建完成后得到完整的目标结果\n * @param pipeline pipeline数组, 每个pipe负责构建结果的一部分\n * @param initialValue 初始值\n * @param context 上下文\n * @returns 执行后的结果\n */\nexport const execPipeline: ExecPipelineType = <T, U>(\n pipeline: Array<Pipe<T, U>>,\n context: U,\n initialValue: Partial<T> = {},\n): T => {\n const result = pipeline.reduce((prev, cur) => {\n return cur(prev, context)\n }, initialValue)\n return result as T\n}\n","import type { AdvancedPipelineContext, AdvancedVSeed } from 'src/types'\nimport { execPipeline } from '../../pipeline'\nimport { Builder } from './builder'\n\nexport const buildAdvanced = (builder: Builder): AdvancedVSeed | null => {\n const start = typeof performance !== 'undefined' ? performance.now() : Date.now()\n const { chartType } = builder.vseed\n if (!chartType) {\n throw new Error('chartType is nil in buildAdvanced')\n }\n\n const pipeline = Builder.getAdvancedPipeline(chartType)\n if (!pipeline) {\n throw new Error(`no advanced pipeline for chartType ${chartType}`)\n }\n\n const context: AdvancedPipelineContext = {\n vseed: builder.vseed,\n customTheme: Builder.getThemeMap(),\n }\n\n try {\n return execPipeline<AdvancedVSeed, AdvancedPipelineContext>(pipeline, context)\n } catch (e) {\n console.error(e)\n throw new Error(`buildAdvanced error, see error info in console`)\n } finally {\n const end = typeof performance !== 'undefined' ? performance.now() : Date.now()\n builder.performance['buildAdvanced'] = `${(end - start).toFixed(4)}ms`\n }\n}\n","import type { Spec } from 'src/types'\nimport { Builder } from './builder'\nimport type { AdvancedVSeed, SpecPipelineContext } from 'src/types'\nimport { execPipeline } from '../../pipeline'\n\nexport const buildSpec = (builder: Builder, advancedVSeed: AdvancedVSeed): Spec => {\n const start = typeof performance !== 'undefined' ? performance.now() : Date.now()\n\n const { chartType } = builder.vseed\n if (!chartType) {\n throw new Error('chartType is nil in buildSpec')\n }\n\n const pipeline = Builder.getSpecPipeline(chartType)\n if (!pipeline) {\n throw new Error(`no spec pipeline for chartType ${chartType}`)\n }\n\n const context: SpecPipelineContext = {\n vseed: builder.vseed,\n advancedVSeed,\n }\n try {\n return execPipeline<Spec, SpecPipelineContext>(pipeline, context)\n } catch (e) {\n console.error(e)\n throw new Error(`buildSpec error, see error info in console`)\n } finally {\n const end = typeof performance !== 'undefined' ? performance.now() : Date.now()\n builder.performance['buildSpec'] = `${(end - start).toFixed(4)}ms`\n }\n}\n","import type { Spec } from 'src/types'\nimport type { Builder } from './builder'\n\nexport const build = (builder: Builder): Spec => {\n // console.log('debug vseed', builder.vseed)\n const advancedVSeed = builder.buildAdvanced()\n builder.advancedVSeed = advancedVSeed\n // console.log('debug advancedVSeed', advancedVSeed)\n if (!advancedVSeed) {\n throw new Error('advancedVSeed is null')\n }\n const spec = builder.buildSpec(advancedVSeed)\n builder.spec = spec\n // console.log('debug spec', spec)\n return spec\n}\n","import { isNullish } from 'remeda'\nimport translateMap from './i18n.json'\nimport type { Locale, TranslateRecordType } from '../types'\n\nclass Intl {\n private static instance: Intl\n\n private translateMap: TranslateRecordType = translateMap as unknown as TranslateRecordType\n private locale: Locale = 'zh-CN'\n\n canTranslate = (value: string) => !!this.translateMap[value]\n\n /**\n * @example i18n`指标名称`\n */\n i18n = (segments: TemplateStringsArray, ...values: Array<number | string>) => {\n const text = segments.map((segment, index) => segment + (values[index] || '')).join('')\n\n const translatedText = this.translateMap?.[text]?.[this.locale]\n if (isNullish(translatedText)) {\n console.warn(`i18n ${this.locale} no translate: ${text}`)\n return text\n }\n return translatedText\n }\n\n setLocale = (locale: Locale): void => {\n this.locale = locale\n }\n\n getLocale: () => Locale = () => this.locale\n\n public static getInstance() {\n if (!Intl.instance) {\n Intl.instance = new Intl()\n }\n\n return Intl.instance\n }\n}\n\nconst intl = Intl.getInstance()\n\nconst i18n = intl.i18n\n\nexport { intl, i18n }\n","import { unique } from 'remeda'\nimport type { Builder } from '../builder'\n\nexport const getColorItems = (builder: Builder): string[] => {\n const advancedVSeed = builder.advancedVSeed\n if (!advancedVSeed) {\n return []\n }\n\n const { datasetReshapeInfo } = advancedVSeed\n const colorItems = unique(datasetReshapeInfo.flatMap((d) => d.unfoldInfo.colorItems))\n const colorIdMap = datasetReshapeInfo.reduce<Record<string, string>>((prev, cur) => {\n return { ...prev, ...cur.unfoldInfo.colorIdMap }\n }, {})\n\n return colorItems.map((d) => colorIdMap[d])\n}\n\nexport const getColorIdMap = (builder: Builder): Record<string, string> => {\n const advancedVSeed = builder.advancedVSeed\n if (!advancedVSeed) {\n return {}\n }\n\n const { datasetReshapeInfo } = advancedVSeed\n const colorIdMap = datasetReshapeInfo.reduce<Record<string, string>>((prev, cur) => {\n return { ...prev, ...cur.unfoldInfo.colorIdMap }\n }, {})\n\n return colorIdMap\n}\n","import type {\n AdvancedPipe,\n AdvancedPipeline,\n AdvancedVSeed,\n ChartType,\n CustomThemeConfig,\n Spec,\n SpecPipe,\n SpecPipeline,\n VSeed,\n VSeedBuilder,\n} from 'src/types'\nimport { buildAdvanced } from './buildAdvanced'\nimport { buildSpec } from './buildSpec'\nimport { build } from './build'\nimport { intl } from 'src/i18n'\nimport { getColorIdMap, getColorItems } from './advanced'\n\nexport class Builder implements VSeedBuilder {\n private _vseed: VSeed\n private _advancedVSeed: AdvancedVSeed | null = null\n private _spec: Spec | null = null\n private _performance: Record<string, string | number> = {}\n\n constructor(vseed: VSeed) {\n this._vseed = vseed\n this._vseed.locale = vseed.locale || intl.getLocale()\n }\n\n /**\n * @description 构建spec\n * @returns spec\n */\n build = <T extends Spec>(): T => build(this) as T\n\n /**\n * @description 构建spec\n * @param advanced 高级配置\n * @returns spec\n */\n buildSpec = (advanced: AdvancedVSeed): Spec => buildSpec(this, advanced)\n\n /**\n * @description 构建spec\n * @returns AdvancedVSeed | null\n */\n buildAdvanced = (): AdvancedVSeed | null => buildAdvanced(this)\n\n /**\n * @description 获取颜色项, 颜色项可以重复,\n * @returns 颜色项\n */\n getColorItems = () => getColorItems(this)\n\n /**\n * @description 获取颜色id映射\n * @returns 颜色id映射\n */\n getColorIdMap = () => getColorIdMap(this)\n\n /**\n * @description 获取vseed\n * @returns vseed\n */\n get vseed() {\n return this._vseed\n }\n\n /**\n * @description 设置vseed\n * @param value vseed\n */\n set vseed(value) {\n this._vseed = value\n }\n\n /**\n * @description 获取advancedVSeed\n * @returns advancedVSeed\n */\n get advancedVSeed() {\n return this._advancedVSeed\n }\n\n /**\n *\n * @description 设置advancedVSeed\n * @param value advancedVSeed\n */\n set advancedVSeed(value) {\n this._advancedVSeed = value\n }\n\n /**\n * @description 获取spec\n * @returns spec\n */\n get spec() {\n return this._spec\n }\n\n /**\n * @description 设置spec\n * @param value spec\n */\n set spec(value) {\n this._spec = value\n }\n\n /**\n * @description 获取performance, 统计了构建spec和advancedVSeed的时间\n * @returns performance\n */\n get performance() {\n return this._performance\n }\n\n /**\n * @description 设置performance\n * @param value performance\n */\n set performance(value) {\n this._performance = value\n }\n\n /**\n * @description 获取advancedPipeline\n * @param chartType 图表类型\n * @returns advancedPipeline\n */\n static getAdvancedPipeline = (chartType: ChartType) => {\n const customPipe = Builder._customAdvancedPipe[chartType] as AdvancedPipe\n const pipeline = Builder._advancedPipelineMap[chartType] as AdvancedPipeline\n if (customPipe) {\n pipeline.push(customPipe)\n }\n return pipeline\n }\n\n /**\n * @description 获取specPipeline\n * @param chartType 图表类型\n * @returns specPipeline\n */\n\n static getSpecPipeline = (chartType: ChartType) => {\n const customPipe = Builder._customSpecPipe[chartType] as SpecPipe\n const pipeline = Builder._specPipelineMap[chartType] as SpecPipeline\n if (customPipe) {\n pipeline.push(customPipe)\n }\n return pipeline\n }\n\n /**\n * @description 根据主题key获取主题配置\n * @param themeKey 主题key\n * @example Builder.getTheme('light'), 获取浅色主题\n * @returns 主题配置\n */\n static getTheme = (themeKey: string) => Builder._themeMap[themeKey]\n\n /**\n * @description 获取主题配置映射表\n * @example Builder.getThemeMap()\n * @returns 主题配置映射表\n */\n static getThemeMap = () => Builder._themeMap\n\n /**\n * @description 从vseed创建builder\n * @param vseed 完整的vseed DSL\n * @returns builder\n */\n static from = (vseed: VSeed) => new Builder(vseed)\n\n static _advancedPipelineMap: Partial<Record<ChartType, AdvancedPipeline>> = {}\n static _specPipelineMap: Partial<Record<ChartType, SpecPipeline>> = {}\n static _customAdvancedPipe: Partial<Record<ChartType, AdvancedPipe>> = {}\n static _customSpecPipe: Partial<Record<ChartType, SpecPipe>> = {}\n static _themeMap: Record<string, CustomThemeConfig> = {}\n}\n","import type { AdvancedPipe, AdvancedVSeed } from 'src/types'\n\nexport const initAdvancedVSeed: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType, locale } = vseed\n return {\n ...advancedVSeed,\n chartType,\n locale: locale || 'zh-CN',\n } as AdvancedVSeed\n}\n","import type { AdvancedPipe, Datum, MeasureTree } from 'src/types'\n\nexport const autoMeasures: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { measures, dataset } = vseed\n\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return result\n }\n\n if (measures) {\n result.measures = measures as MeasureTree\n return result\n }\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n result.measures = Object.keys(sample)\n .filter((key) => {\n return top100dataset.some((item) => typeof item[key] === 'number') && !['', null, undefined].includes(key)\n })\n .map((measure) => ({\n id: measure,\n alias: measure,\n }))\n\n return result\n}\n","/**\n * 支持泛型的非递归前序遍历\n * @param tree 根节点数组\n * @param callback 遍历时对每个节点执行的回调,返回 true 时停止遍历\n */\nexport const preorderTraverse = <T extends { id: string }, U extends { id: string; children?: (T | U)[] }>(\n tree: (T | U)[],\n callback: (node: T | U) => boolean,\n) => {\n if (!tree || tree.length === 0) return\n\n const stack: (T | U)[] = [...tree].reverse()\n\n while (stack.length > 0) {\n const node = stack.pop()!\n const stop = callback(node)\n if (stop === true) {\n return\n }\n if (!('children' in node)) {\n continue\n }\n const children = node.children\n if (children && children.length > 0) {\n for (let i = children.length - 1; i >= 0; i--) {\n const child = children[i]\n stack.push(child)\n }\n }\n }\n}\n","import type { Measure, MeasureGroup, MeasureTree } from 'src/types'\nimport { preorderTraverse } from '../tree'\n\nexport const findMeasureById = (measures: MeasureTree = [], id: string): Measure | undefined => {\n if (!measures) return undefined\n let result: Measure | undefined\n preorderTraverse<Measure, MeasureGroup>(measures, (node) => {\n if (!('children' in node)) {\n if (node.id === id) {\n result = node as Measure\n return true\n }\n }\n return false\n })\n return result\n}\n\nexport const findFirstMeasure = (measures: MeasureTree = []): Measure | undefined => {\n if (!measures) return undefined\n let result: Measure | undefined\n preorderTraverse<Measure, MeasureGroup>(measures, (node) => {\n if (!('children' in node)) {\n result = node as Measure\n return true\n }\n return false\n })\n return result\n}\n\nexport const findAllMeasures = (measures: MeasureTree = []): Measure[] => {\n if (!measures) return []\n const result: Measure[] = []\n preorderTraverse<Measure, MeasureGroup>(measures, (node) => {\n if (!('children' in node)) {\n result.push(node as Measure)\n }\n return false\n })\n return result\n}\n","import { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Datum } from 'src/types'\n\nexport const autoDimensions: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dimensions, dataset } = vseed\n\n const measures = findAllMeasures(advancedVSeed.measures)\n\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return result\n }\n\n if (dimensions) {\n result.dimensions = dimensions.map((dim) => ({\n location: 'dimension',\n ...dim,\n }))\n return result\n }\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n result.dimensions = Object.keys(sample)\n .filter(\n (key) =>\n top100dataset.some((item) => typeof item[key] === 'string') &&\n !['', null, undefined].includes(key) &&\n !measures.some((measure) => measure.id === key),\n )\n .map((dim) => ({\n id: dim,\n alias: dim,\n location: 'dimension',\n }))\n\n return result\n}\n","import type { AdvancedPipe } from 'src/types'\n\nexport const records: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { dataset } = vseed\n return {\n ...advancedVSeed,\n dataset,\n }\n}\n","import { pick } from 'remeda'\nimport type { AdvancedPipe, Config } from 'src/types'\n\nexport const tableConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const config = pick(vseed, [\n 'backgroundColor',\n 'bodyFontSize',\n 'bodyFontColor',\n 'bodyBackgroundColor',\n 'headerFontSize',\n 'headerFontColor',\n 'headerBackgroundColor',\n 'hoverHeaderBackgroundColor',\n 'hoverHeaderInlineBackgroundColor',\n 'selectedBorderColor',\n 'selectedBackgroundColor',\n ]) as Config['pivotTable']\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result\n}\n","import { clone, isNullish, isNumber, isObjectType, isString, merge, mergeDeep } from 'remeda'\nimport type { AdvancedPipe, AdvancedVSeed } from 'src/types'\n\nexport const theme: AdvancedPipe = (advancedVSeed, context) => {\n const { customTheme, vseed } = context\n const { theme = 'light', chartType } = vseed\n const result = {\n ...advancedVSeed,\n } as AdvancedVSeed\n\n if (!customTheme || !customTheme[theme]) {\n return result\n }\n\n const chartConfigTheme = customTheme?.[theme].config?.[chartType]\n if (chartConfigTheme) {\n const chartConfig = result.config?.[chartType] || {}\n const mergedConfig = mergeDeep(chartConfigTheme, clone(chartConfig))\n\n // 数组项不会被Merge, 需要将1个主题配置, 合并到数组的每一项\n for (const _k in mergedConfig) {\n const key = _k as keyof typeof mergedConfig\n // 配置的第一层, 如果是数组, 则数组的每一项目和主题配置合并\n if (Array.isArray(mergedConfig[key])) {\n mergedConfig[key] = mergeArray(mergedConfig[key], chartConfigTheme[key])\n }\n }\n\n result.config = {\n [chartType]: mergedConfig,\n }\n }\n\n const chartCustomTheme = customTheme?.[theme]?.config?.[chartType]\n\n result.customTheme = {\n config: {\n [chartType]: chartCustomTheme,\n },\n }\n\n return result\n}\n\nconst mergeArray = <Destination extends Array<object>, Source extends object | number | string | undefined | null>(\n arr: Destination,\n themeItem: Source,\n): Destination => {\n if (isNullish(themeItem) || isString(themeItem) || isNumber(themeItem)) {\n return arr\n }\n\n if (!Array.isArray(arr)) {\n return arr\n }\n\n if (arr.some((d) => !isObjectType(d))) {\n return arr\n }\n\n return arr.map((item) => {\n return merge(themeItem, item)\n }) as Destination\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport { initAdvancedVSeed, autoDimensions, autoMeasures, records, tableConfig } from '../pipes'\nimport { theme } from '../../chart/pipes'\n\nexport const tableAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n records,\n tableConfig,\n theme,\n]\n","import type { ListTableConstructorOptions } from '@visactor/vtable'\nimport type { SpecPipe } from 'src/types'\n\nexport const initTable: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { dataset } = advancedVSeed\n const { config } = advancedVSeed\n const { backgroundColor = 'transparent' } = config.table || {}\n\n return {\n ...spec,\n records: dataset,\n widthMode: 'standard',\n heightMode: 'autoHeight',\n autoWrapText: true,\n columnResizeMode: 'all',\n showHeader: true,\n tooltip: {\n isShowOverflowTextTooltip: true,\n },\n animationAppear: {\n duration: 300,\n delay: 250,\n type: 'one-by-one',\n direction: 'row',\n },\n hover: {\n highlightMode: 'row',\n },\n theme: {\n underlayBackgroundColor: backgroundColor,\n },\n } as ListTableConstructorOptions\n}\n","import type { Measure, MeasureGroup } from 'src/types'\n\nexport const isMeasure = (measure: Measure | MeasureGroup): measure is Measure => {\n return !('children' in measure)\n}\n\nexport const isMeasureGroup = (measure: Measure | MeasureGroup): measure is MeasureGroup => {\n return 'children' in measure\n}\n\nexport const isMeasures = (measures: Measure[] | MeasureGroup[]): measures is Measure[] => {\n return measures.every(isMeasure)\n}\n","import type { ColumnsDefine, ListTableConstructorOptions } from '@visactor/vtable'\nimport { isMeasure } from 'src/pipeline/utils'\nimport type { Dimension, DimensionGroup, DimensionTree, SpecPipe } from 'src/types'\n\nexport const dimensionTreeToColumns: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const dimensions = (advancedVSeed as unknown as { dimensions: DimensionTree }).dimensions\n const result = { ...spec } as ListTableConstructorOptions\n const eachNode = (node: Dimension | DimensionGroup) => {\n if (isMeasure(node)) {\n return {\n width: 'auto',\n }\n }\n\n return {}\n }\n const columns = treeTreeToColumns<Dimension, DimensionGroup>(dimensions, eachNode)\n\n return {\n ...result,\n columns: [...(result.columns || []), ...columns] as ListTableConstructorOptions['columns'],\n }\n}\n\nconst treeTreeToColumns = <\n T extends { id: string; alias?: string },\n U extends { id: string; alias?: string; children?: (T | U)[] },\n>(\n tree: (T | U)[],\n callback?: (node: T | U) => object,\n): ColumnsDefine[] => {\n const result = tree.map((item) => {\n if ('children' in item && Array.isArray(item.children)) {\n const groupNode = item as unknown as U\n const field = groupNode.id\n const title = groupNode.alias ?? groupNode.id\n const props = callback?.(groupNode) || {}\n // group\n return {\n field,\n title,\n columns: treeTreeToColumns(item.children, callback),\n ...props,\n }\n } else {\n const field = item.id\n const title = item.alias ?? item.id\n const props = callback?.(item) || {}\n // leaf\n return {\n field,\n title,\n ...props,\n }\n }\n }) as unknown as ColumnsDefine[]\n\n return result || []\n}\n","import { isNumber } from 'remeda'\nimport { intl } from '../../../i18n'\nimport type { Formatter, Locale, NumFormat } from 'src/types'\n\nexport const createNumFormatter = (format: NumFormat, locale: Locale = intl.getLocale()): Formatter => {\n const {\n type = 'number',\n ratio = 1,\n symbol = '',\n thousandSeparator = true,\n prefix = '',\n suffix = '',\n\n fractionDigits = 2,\n significantDigits,\n roundingMode = 'halfExpand',\n roundingPriority = 'auto',\n } = format || {}\n\n const numFormatterOptions: Intl.NumberFormatOptions = {\n style: 'decimal',\n notation: type === 'scientific' ? 'scientific' : 'standard',\n // @ts-expect-error roundingMode is not in NumberFormatOptions\n roundingMode,\n roundingPriority,\n }\n\n if (isNumber(fractionDigits)) {\n if (fractionDigits >= 0) {\n numFormatterOptions.minimumFractionDigits = fractionDigits\n numFormatterOptions.maximumFractionDigits = fractionDigits\n }\n }\n if (isNumber(significantDigits) && significantDigits > 0) {\n if (significantDigits > 0) {\n numFormatterOptions.minimumSignificantDigits = significantDigits\n numFormatterOptions.maximumSignificantDigits = significantDigits\n }\n }\n\n const numFormatter = new Intl.NumberFormat(locale, numFormatterOptions)\n\n return (value?: number | string) => {\n let num = Number(value)\n let typeSymbol = ''\n if (Number.isNaN(num)) {\n return String(value)\n }\n\n // apply ratio for percent/permille\n if (type === 'percent') {\n num *= 100\n typeSymbol = '%'\n } else if (type === 'permille') {\n num *= 1000\n typeSymbol = '‰'\n } else if (type === 'number') {\n num = num / (ratio || 1)\n }\n\n // format value\n let numStr = numFormatter.format(num)\n\n // add thousand separator\n if (thousandSeparator) {\n const parts = numStr.split('.')\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')\n numStr = parts.join('.')\n }\n\n // add symbol, typeSymbol, prefix and suffix\n return `${prefix}${numStr}${typeSymbol}${symbol}${suffix}`\n }\n}\n\nexport const autoNumFormatter = (value?: number | string, locale: Locale = intl.getLocale()): string => {\n if (value === undefined || value === null) return String(value)\n const num = Number(value)\n if (Number.isNaN(num)) return String(value)\n\n const numFormatterOptions: Intl.NumberFormatOptions = {\n style: 'decimal',\n notation: 'compact',\n }\n numFormatterOptions.minimumFractionDigits = 0\n numFormatterOptions.maximumFractionDigits = 2\n\n const numFormatter = new Intl.NumberFormat(locale, { ...numFormatterOptions })\n\n return numFormatter.format(Number(value))\n}\n","import type { Formatter, Locale, NumFormat } from 'src/types'\nimport { autoNumFormatter, createNumFormatter } from './createNumFormatter'\n\nexport const createFormatter = (format: Partial<NumFormat>): Formatter => {\n return createNumFormatter(format)\n}\n\nexport const autoFormatter = (value?: number | string, locale?: Locale): string => {\n return autoNumFormatter(value, locale)\n}\n","import type { ColumnsDefine, ListTableConstructorOptions } from '@visactor/vtable'\nimport type { FieldFormat } from '@visactor/vtable/es/ts-types'\nimport { isEmpty } from 'remeda'\nimport { autoFormatter, createFormatter, isMeasure } from 'src/pipeline/utils'\nimport type { MeasureGroup, Measure, MeasureTree, SpecPipe, Datum, Locale } from 'src/types'\n\nexport const measureTreeToColumns: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { locale } = advancedVSeed\n const measures = (advancedVSeed as unknown as { measures: MeasureTree }).measures\n const result = { ...spec } as ListTableConstructorOptions\n\n const eachNode = (node: Measure | MeasureGroup) => {\n if (isMeasure(node)) {\n return {\n width: 'auto',\n fieldFormat: fieldFormat(node, locale),\n }\n }\n\n return {}\n }\n const columns = treeTreeToColumns<Measure, MeasureGroup>(measures, eachNode)\n return {\n ...result,\n columns: [...(result.columns || []), ...columns] as ListTableConstructorOptions['columns'],\n }\n}\n\nconst fieldFormat =\n (node: Measure, locale: Locale): FieldFormat =>\n (datum: Datum) => {\n const { format = {}, autoFormat = true, id } = node\n const value = datum[id] as number | string | undefined\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n\n return\n }\n\nconst treeTreeToColumns = <\n T extends { id: string; alias?: string },\n U extends { id: string; alias?: string; children?: (T | U)[] },\n>(\n tree: (T | U)[],\n callback?: (node: T | U) => object,\n): ColumnsDefine[] => {\n const result = tree.map((item) => {\n if ('children' in item && Array.isArray(item.children)) {\n const groupNode = item as unknown as U\n const field = groupNode.id\n const title = groupNode.alias ?? groupNode.id\n const props = callback?.(groupNode) || {}\n // group\n return {\n field,\n title,\n columns: treeTreeToColumns(item.children, callback),\n ...props,\n }\n } else {\n const field = item.id\n const title = item.alias ?? item.id\n const props = callback?.(item) || {}\n // leaf\n return {\n field,\n title,\n ...props,\n }\n }\n }) as unknown as ColumnsDefine[]\n\n return result || []\n}\n","import type { BaseTableConstructorOptions } from '@visactor/vtable/es/ts-types'\nimport type { SpecPipe, TableConfig } from 'src/types'\n\nexport const bodyStyle: SpecPipe = (spec, context) => {\n const result = { ...spec } as BaseTableConstructorOptions\n const { advancedVSeed } = context\n const { chartType, config } = advancedVSeed\n const themeConfig = config?.[chartType] as TableConfig\n\n if (!result.theme || !themeConfig) return result\n\n // basic\n const borderColor = themeConfig.borderColor || 'rgb(224, 224, 224)'\n const backgroundColor = themeConfig.bodyBackgroundColor || '#fff'\n const fontColor = themeConfig.bodyFontColor || '#1B1F23'\n const fontSize = themeConfig.bodyFontSize || 12\n // Interaction\n const hoverCellBgColor = themeConfig.hoverBodyBackgroundColor || '#bedaff'\n const hoverInlineColor = themeConfig.hoverBodyInlineBackgroundColor || '#bedaff'\n\n result.theme.bodyStyle = {\n borderColor: borderColor,\n borderLineWidth: 1,\n padding: [8.6, 12, 8.6, 12],\n textAlign: 'right',\n hover: {\n cellBgColor: hoverCellBgColor,\n inlineRowBgColor: hoverInlineColor,\n inlineColumnBgColor: hoverInlineColor,\n },\n color: fontColor,\n fontSize: fontSize,\n fontStyle: 'normal',\n fontWeight: 'normal',\n fontVariant: 'normal',\n bgColor: backgroundColor,\n lineHeight: fontSize * 1.5,\n }\n\n return result\n}\n","import type { BaseTableConstructorOptions } from '@visactor/vtable/es/ts-types'\nimport type { SpecPipe, TableConfig } from 'src/types'\n\nexport const headerStyle: SpecPipe = (spec, context) => {\n const result = { ...spec } as BaseTableConstructorOptions\n const { advancedVSeed } = context\n const { config, chartType } = advancedVSeed\n const themConfig = config?.[chartType] as TableConfig\n\n if (!result.theme || !themConfig) return result\n\n // basic\n const borderColor = themConfig.borderColor || 'rgb(224, 224, 224)'\n const backgroundColor = themConfig.headerBackgroundColor || '#EEF1F5'\n const fontColor = themConfig.headerFontColor || '#1B1F23'\n const fontSize = themConfig.headerFontSize || 12\n // Interaction\n const hoverCellBgColor = themConfig.hoverHeaderBackgroundColor || '#bedaff'\n const hoverInlineColor = themConfig.hoverHeaderInlineBackgroundColor || '#bedaff'\n\n result.theme.headerStyle = {\n borderColor: borderColor,\n borderLineWidth: 1,\n padding: [8, 12, 8, 12],\n textAlign: 'center',\n hover: {\n cellBgColor: hoverCellBgColor,\n inlineRowBgColor: hoverInlineColor,\n inlineColumnBgColor: hoverInlineColor,\n },\n frameStyle: {\n borderColor: [null, null, borderColor, null],\n borderLineWidth: 1,\n },\n fontSize: fontSize,\n fontVariant: 'normal',\n fontStyle: 'normal',\n fontWeight: 'bold',\n color: fontColor,\n bgColor: backgroundColor,\n lineHeight: fontSize * 1.5,\n }\n\n return result\n}\n","import type { BaseTableConstructorOptions } from '@visactor/vtable/es/ts-types'\nimport type { SpecPipe, TableConfig } from 'src/types'\n\nexport const frameStyle: SpecPipe = (spec, context) => {\n const result = { ...spec } as BaseTableConstructorOptions\n const { advancedVSeed } = context\n const { config, chartType } = advancedVSeed\n const themConfig = config?.[chartType] as TableConfig\n\n if (!result.theme || !themConfig) return result\n\n const borderColor = themConfig.borderColor || 'rgb(224, 224, 224)'\n\n result.theme.frameStyle = {\n borderColor,\n borderLineWidth: 0,\n cornerRadius: 4,\n }\n\n return result\n}\n","import type { BaseTableConstructorOptions } from '@visactor/vtable/es/ts-types'\nimport type { SpecPipe, TableConfig } from 'src/types'\n\nexport const selectionStyle: SpecPipe = (spec, context) => {\n const result = { ...spec } as BaseTableConstructorOptions\n const { advancedVSeed } = context\n const { config, chartType } = advancedVSeed\n const themConfig = config?.[chartType] as TableConfig\n\n if (!result.theme || !themConfig) return result\n\n const borderColor = themConfig.selectedBorderColor || 'rgb(224, 224, 224)'\n const backgroundColor = themConfig.selectedBackgroundColor || 'rgb(224, 224, 224, 0.5)'\n\n result.theme.selectionStyle = {\n cellBorderColor: borderColor,\n cellBorderLineWidth: 2,\n cellBgColor: backgroundColor,\n }\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport { initTable, dimensionTreeToColumns, measureTreeToColumns, bodyStyle, headerStyle, frameStyle, selectionStyle } from '../pipes'\n\nexport const tableSpecPipeline: SpecPipeline = [\n initTable,\n dimensionTreeToColumns,\n measureTreeToColumns,\n bodyStyle,\n headerStyle,\n frameStyle,\n selectionStyle,\n]\n","import { tableAdvancedPipeline, tableSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerTable = () => {\n Builder._advancedPipelineMap['table'] = tableAdvancedPipeline\n Builder._specPipelineMap['table'] = tableSpecPipeline\n}","import { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Datum, Measures } from 'src/types'\n\nexport const autoPivotMeasures: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const measures = findAllMeasures(vseed.measures as Measures)\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return result\n }\n\n if (vseed.measures) {\n result.measures = findAllMeasures(measures)\n return result\n }\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n result.measures = Object.keys(sample)\n .filter((key) => {\n return top100dataset.some((item) => typeof item[key] === 'number') && !['', null, undefined].includes(key)\n })\n .map((measure) => ({\n id: measure,\n alias: measure,\n }))\n\n return result\n}\n","import type { Dimension, DimensionGroup, DimensionTree } from 'src/types'\nimport { preorderTraverse } from '../tree'\n\nexport const findDimensionById = (dimensions: DimensionTree = [], id: string): Dimension | undefined => {\n if (!dimensions) return undefined\n let result: Dimension | undefined\n preorderTraverse<Dimension, DimensionGroup>(dimensions, (node) => {\n if (!('children' in node)) {\n if (node.id === id) {\n result = node as Dimension\n return true\n }\n }\n return false\n })\n return result\n}\n\nexport const findFirstDimension = (dimensions: DimensionTree = []): Dimension | undefined => {\n if (!dimensions) return undefined\n let result: Dimension | undefined\n preorderTraverse<Dimension, DimensionGroup>(dimensions, (node) => {\n if (!('children' in node)) {\n result = node as Dimension\n return true\n }\n return false\n })\n return result\n}\n\nexport const findAllDimensions = (dimensions: DimensionTree = []): Dimension[] => {\n if (!dimensions) return []\n const result: Dimension[] = []\n preorderTraverse<Dimension, DimensionGroup>(dimensions, (node) => {\n if (!('children' in node)) {\n result.push(node as Dimension)\n }\n return false\n })\n return result\n}\n","import { findAllDimensions, findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Datum, Dimensions, Measures } from 'src/types'\n\nexport const autoPivotDimensions: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dimensions, dataset } = vseed\n\n const measures = findAllMeasures(advancedVSeed.measures as Measures)\n\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return result\n }\n\n if (dimensions) {\n const newDimensions = findAllDimensions(dimensions) as Dimensions\n result.dimensions = newDimensions.map((item, index) => {\n if (item.location === 'rowDimension' || item.location === 'columnDimension') {\n return item\n }\n return {\n ...item,\n location: index % 2 === 0 ? 'columnDimension' : 'rowDimension',\n }\n }) as Dimensions\n\n return result\n }\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n let i = 0\n result.dimensions = Object.keys(sample)\n .filter(\n (key) =>\n top100dataset.some((item) => typeof item[key] === 'string') &&\n !['', null, undefined].includes(key) &&\n !measures.some((measure) => measure.id === key),\n )\n .map((dim) => ({\n id: dim,\n alias: dim,\n location: i++ % 2 === 0 ? 'columnDimension' : 'rowDimension',\n })) as Dimensions\n\n return result\n}\n","import { pick } from 'remeda'\nimport type { AdvancedPipe, Config } from 'src/types'\n\nexport const pivotTableConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const config = pick(vseed, [\n 'backgroundColor',\n 'bodyFontSize',\n 'bodyFontColor',\n 'bodyBackgroundColor',\n 'headerFontSize',\n 'headerFontColor',\n 'headerBackgroundColor',\n 'hoverHeaderBackgroundColor',\n 'hoverHeaderInlineBackgroundColor',\n 'selectedBorderColor',\n 'selectedBackgroundColor',\n ]) as Config['table']\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport { theme } from '../../chart/pipes'\nimport { autoPivotDimensions, autoPivotMeasures, initAdvancedVSeed, pivotTableConfig, records } from '../pipes'\n\nexport const pivotTableAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoPivotMeasures,\n autoPivotDimensions,\n records,\n pivotTableConfig,\n theme,\n]\n","import type { PivotTableConstructorOptions } from '@visactor/vtable'\nimport type { SpecPipe } from 'src/types'\n\nexport const initPivotTable: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { dataset } = advancedVSeed\n const { config } = advancedVSeed\n const { backgroundColor = 'transparent' } = config.pivotTable || {}\n return {\n ...spec,\n records: dataset,\n widthMode: 'standard',\n heightMode: 'autoHeight',\n autoWrapText: true,\n columnResizeMode: 'all',\n columnResizeType: 'column',\n showColumnHeader: true,\n showRowHeader: true,\n select: {\n highlightMode: 'cell',\n headerSelectMode: 'inline',\n },\n hover: {\n highlightMode: 'cross',\n },\n tooltip: {\n isShowOverflowTextTooltip: true,\n },\n widthAdaptiveMode: 'all',\n animationAppear: {\n duration: 300,\n delay: 250,\n type: 'one-by-one',\n direction: 'row',\n },\n theme: {\n underlayBackgroundColor: backgroundColor,\n },\n } as PivotTableConstructorOptions\n}\n","import type { PivotTableConstructorOptions } from '@visactor/vtable'\nimport type { Dimensions, SpecPipe } from 'src/types'\n\nexport const pivotColumns: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const dimensions = advancedVSeed.dimensions as Dimensions\n const columns = dimensions.filter((item) => item['location'] === 'columnDimension')\n\n return {\n ...spec,\n columns: columns.map((item) => {\n return {\n dimensionKey: item.id,\n title: item.alias || item.id,\n width: 'auto',\n }\n }),\n } as PivotTableConstructorOptions\n}\n","import type { Dimensions, SpecPipe } from 'src/types'\n\nexport const pivotRows: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const dimensions = advancedVSeed.dimensions as Dimensions\n const rows = dimensions.filter((item) => item['location'] === 'rowDimension')\n\n return {\n ...spec,\n rows: rows.map((item) => {\n return {\n dimensionKey: item.id,\n title: item.alias || item.id,\n width: 'auto',\n }\n }),\n }\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { FieldFormat } from '@visactor/vtable/es/ts-types'\nimport { isEmpty } from 'remeda'\nimport { intl } from 'src/i18n'\nimport { autoFormatter, createFormatter, isMeasure } from 'src/pipeline/utils'\nimport type { Locale, Measure, Measures, SpecPipe } from 'src/types'\n\nexport const pivotIndicators: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { locale } = advancedVSeed\n const measures = (advancedVSeed as unknown as { measures: Measures }).measures\n\n return {\n ...spec,\n indicatorsAsCol: true,\n indicatorTitle: intl.i18n`指标名称`,\n indicators: measures.map((item) => {\n if (isMeasure(item)) {\n return {\n cellType: 'text',\n indicatorKey: item.id,\n title: item.alias || item.id,\n width: 'auto',\n format: fieldFormat(item, locale),\n }\n }\n return {}\n }) as unknown as PivotChartConstructorOptions['indicators'],\n }\n}\n\nconst fieldFormat =\n (node: Measure, locale: Locale): FieldFormat =>\n (value: number | string) => {\n const { format = {}, autoFormat = true } = node\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n\n return\n }\n","import type { BaseTableConstructorOptions } from '@visactor/vtable/es/ts-types'\nimport type { SpecPipe, TableConfig } from 'src/types'\n\nexport const rowHeaderStyle: SpecPipe = (spec, context) => {\n const result = { ...spec } as BaseTableConstructorOptions\n const { advancedVSeed } = context\n const { config, chartType } = advancedVSeed\n const themConfig = config?.[chartType] as TableConfig\n\n if (!result.theme || !themConfig) return result\n\n // basic\n const borderColor = themConfig.borderColor || 'rgb(224, 224, 224)'\n const backgroundColor = themConfig.headerBackgroundColor || '#EEF1F5'\n const fontColor = themConfig.headerFontColor || '#1B1F23'\n const fontSize = themConfig.headerFontSize || 12\n // Interaction\n const hoverCellBgColor = themConfig.hoverHeaderBackgroundColor || '#bedaff'\n const hoverInlineColor = themConfig.hoverHeaderInlineBackgroundColor || '#bedaff'\n\n result.theme.rowHeaderStyle = {\n borderColor: borderColor,\n borderLineWidth: 1,\n padding: [8.6, 12, 8.6, 12],\n textAlign: 'left',\n hover: {\n cellBgColor: hoverCellBgColor,\n inlineRowBgColor: hoverInlineColor,\n inlineColumnBgColor: hoverInlineColor,\n },\n frameStyle: {\n borderColor: [null, borderColor, null, null],\n borderLineWidth: 1,\n },\n fontSize: fontSize,\n fontVariant: 'normal',\n fontStyle: 'normal',\n fontWeight: 'bold',\n color: fontColor,\n bgColor: backgroundColor,\n lineHeight: fontSize * 1.5,\n }\n\n return result\n}\n","import type { BaseTableConstructorOptions } from '@visactor/vtable/es/ts-types'\nimport type { SpecPipe, TableConfig } from 'src/types'\n\nexport const cornerHeaderStyle: SpecPipe = (spec, context) => {\n const result = { ...spec } as BaseTableConstructorOptions\n const { advancedVSeed } = context\n const { config, chartType } = advancedVSeed\n const themConfig = config?.[chartType] as TableConfig\n\n if (!result.theme || !themConfig) return result\n\n // basic\n const borderColor = themConfig.borderColor || 'rgb(224, 224, 224)'\n const backgroundColor = themConfig.headerBackgroundColor || '#EEF1F5'\n const fontColor = themConfig.headerFontColor || '#1B1F23'\n const fontSize = themConfig.headerFontSize || 12\n // Interaction\n const hoverInlineColor = themConfig.hoverHeaderInlineBackgroundColor\n const hoverCellColor = themConfig.hoverHeaderBackgroundColor\n\n result.theme.cornerHeaderStyle = {\n borderColor: [borderColor, borderColor],\n borderLineWidth: 1,\n padding: [8, 12, 8, 12],\n textAlign: 'left',\n hover: {\n cellBgColor: hoverCellColor || undefined,\n inlineRowBgColor: hoverInlineColor || undefined,\n inlineColumnBgColor: hoverInlineColor || undefined,\n },\n frameStyle: {\n borderColor: [null, borderColor, borderColor, null],\n borderLineWidth: 1,\n },\n fontSize: fontSize,\n fontVariant: 'normal',\n fontStyle: 'normal',\n fontWeight: 'bold',\n color: fontColor,\n bgColor: backgroundColor,\n lineHeight: fontSize * 1.5,\n }\n\n return result\n}\n","export var AggregationType;\n\n!function(AggregationType) {\n AggregationType.RECORD = \"RECORD\", AggregationType.NONE = \"NONE\", AggregationType.SUM = \"SUM\", \n AggregationType.MIN = \"MIN\", AggregationType.MAX = \"MAX\", AggregationType.AVG = \"AVG\", \n AggregationType.COUNT = \"COUNT\", AggregationType.CUSTOM = \"CUSTOM\", AggregationType.RECALCULATE = \"RECALCULATE\";\n}(AggregationType || (AggregationType = {}));\n\nexport var SortType;\n\n!function(SortType) {\n SortType.ASC = \"ASC\", SortType.DESC = \"DESC\", SortType.NORMAL = \"NORMAL\", SortType.desc = \"desc\", \n SortType.asc = \"asc\", SortType.normal = \"normal\";\n}(SortType || (SortType = {}));\n//# sourceMappingURL=new-data-set.js.map\n","import { AggregationType } from '@visactor/vtable/es/ts-types'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { SpecPipe } from 'src/types'\n\nexport const dataConfig: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const measures = findAllMeasures(advancedVSeed.measures)\n\n const aggregationRules = measures.map((measure) => ({\n field: measure.id,\n aggregationType: AggregationType.NONE,\n indicatorKey: measure.id,\n }))\n\n return {\n ...spec,\n dataConfig: {\n aggregationRules,\n },\n }\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n initPivotTable,\n pivotColumns,\n pivotRows,\n pivotIndicators,\n bodyStyle,\n headerStyle,\n rowHeaderStyle,\n cornerHeaderStyle,\n frameStyle,\n selectionStyle,\n} from '../pipes'\nimport { dataConfig } from '../pipes/indicators/pivotDataConfig'\n\nexport const pivotTableSpecPipeline: SpecPipeline = [\n initPivotTable,\n pivotColumns,\n pivotRows,\n pivotIndicators,\n bodyStyle,\n headerStyle,\n rowHeaderStyle,\n cornerHeaderStyle,\n frameStyle,\n selectionStyle,\n dataConfig,\n]\n","import { pivotTableAdvancedPipeline, pivotTableSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerPivotTable = () => {\n Builder._advancedPipelineMap['pivotTable'] = pivotTableAdvancedPipeline\n Builder._specPipelineMap['pivotTable'] = pivotTableSpecPipeline\n}","import type { AdvancedPipe, AdvancedVSeed } from 'src/types'\n\nexport const initAdvancedVSeed: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType, locale } = vseed\n return {\n ...advancedVSeed,\n chartType,\n locale: locale || 'zh-CN',\n } as AdvancedVSeed\n}\n","import type { Measure, MeasureGroup, MeasureTree } from \"src/types\"\nimport { preorderTraverse } from \"../tree/traverse\"\n\n/**\n * 获取measures的深度\n * @param measures\n * @param id\n * @returns\n */\nexport const measureDepth = (measures: MeasureTree = []): number => {\n if (!measures) return 0\n let depth = 1\n preorderTraverse<Measure, MeasureGroup>(measures, (node) => {\n if ('children' in node) {\n depth = Math.max(depth, 1 + measureDepth(node.children))\n }\n return false\n })\n return depth\n}\n","import type { Dimensions, DimensionGroup, DimensionTree, VSeed } from 'src/types'\nimport { measureDepth } from './measures'\n\nexport const isTable = (vseed: VSeed) => {\n return vseed.chartType === 'table'\n}\nexport const isPivotTable = (vseed: VSeed) => {\n return vseed.chartType === 'pivotTable'\n}\nexport const isVTable = (vseed: VSeed) => {\n return ['table', 'pivotTable'].includes(vseed.chartType)\n}\nexport const isVChart = (vseed: VSeed): boolean => {\n return !isVTable(vseed)\n}\nexport const isPivotChart = (vseed: VSeed) => {\n if (isVTable(vseed)) {\n return false\n }\n\n if (vseed.chartType === 'dualAxis') {\n if (vseed.measures) {\n const depth = measureDepth(vseed.measures)\n if (depth === 3) {\n return true\n }\n return false\n }\n\n if (vseed.dualMeasures && vseed.dualMeasures.length > 1) {\n return true\n }\n\n return false\n }\n\n const { measures = [], dimensions = [] } = vseed as {\n measures: DimensionTree\n dimensions: Dimensions\n }\n\n const hasRowOrColumnDimension =\n dimensions &&\n dimensions.some((dimension) => dimension.location === 'rowDimension' || dimension.location === 'columnDimension')\n\n const hasMeasureGroup = measures && measures.some((measure: DimensionGroup) => measure && measure.children)\n\n return hasRowOrColumnDimension || hasMeasureGroup\n}\n","import { isPivotChart } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Datum, DimensionGroup, MeasureGroup, MeasureTree } from 'src/types'\n\nexport const autoMeasures: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { measures, dataset } = vseed\n\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return result\n }\n\n if (isPivotChart(vseed)) {\n return autoMeasureGroup(advancedVSeed, context)\n }\n\n if (measures) {\n result.measures = measures as MeasureTree\n return result\n }\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n result.measures = Object.keys(sample)\n .filter((key) => {\n return top100dataset.some((item) => typeof item[key] === 'number') && !['', null, undefined].includes(key)\n })\n .map((measure) => ({\n id: measure,\n alias: measure,\n }))\n\n return result\n}\n\nconst autoMeasureGroup: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { measures } = vseed as {\n measures?: MeasureGroup[]\n }\n const hasMeasureGroup = measures?.some((measure) => measure.children)\n\n if (!measures) {\n return advancedVSeed\n }\n\n // 没有指标组, 则自动添加一个指标组\n if (!hasMeasureGroup) {\n const newMeasures = [\n {\n id: 'measureGroup',\n alias: 'measureGroup',\n children: measures,\n },\n ]\n return {\n ...advancedVSeed,\n measures: newMeasures,\n }\n }\n\n // 存在指标组, 则任意连续的独立指标成组\n let currentGroup: DimensionGroup = createEmptyMeasureGroup()\n const measureGroups: DimensionGroup[] = []\n for (const measure of measures) {\n if ('children' in measure) {\n // 当前指标组之前的所有独立指标成组\n if (currentGroup.children?.length) {\n currentGroup.alias = currentGroup.children.map((item) => item.alias).join('-')\n currentGroup.id = currentGroup.alias + currentGroup.children.map((item) => item.id).join('-')\n measureGroups.push(currentGroup)\n currentGroup = createEmptyMeasureGroup()\n }\n // 当前是指标组\n measureGroups.push(measure)\n } else {\n currentGroup.children?.push(measure)\n }\n }\n\n // 最后一组\n if (currentGroup.children?.length) {\n currentGroup.alias = currentGroup.children.map((item) => item.alias).join('-')\n currentGroup.id = currentGroup.alias + currentGroup.children.map((item) => item.id).join('-')\n measureGroups.push(currentGroup)\n currentGroup = createEmptyMeasureGroup()\n }\n\n advancedVSeed.measures = measureGroups\n return advancedVSeed\n}\n\nconst createEmptyMeasureGroup = () => {\n return {\n id: '',\n alias: '',\n children: [],\n }\n}\n","import { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Datum, DimensionTree } from 'src/types'\n\nexport const autoDimensions: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dimensions, dataset } = vseed\n\n const measures = findAllMeasures(advancedVSeed.measures as DimensionTree)\n\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return result\n }\n\n if (dimensions) {\n result.dimensions = dimensions.map((dim) => ({\n location: 'dimension',\n ...dim,\n }))\n return result\n }\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n result.dimensions = Object.keys(sample)\n .filter(\n (key) =>\n top100dataset.some((item) => typeof item[key] === 'string') &&\n !['', null, undefined].includes(key) &&\n !measures.some((measure) => measure.id === key),\n )\n .map((dim) => ({\n id: dim,\n alias: dim,\n location: 'dimension',\n }))\n\n return result\n}\n","import type { AdvancedPipe, AdvancedPipeline, AdvancedPipelineContext, AdvancedVSeed } from 'src/types'\nimport { execPipeline, isPivotChart } from 'src/pipeline/utils'\n\nexport const pivotAdapter = (pipeline: AdvancedPipeline, pivotPipeline: AdvancedPipeline): AdvancedPipe => {\n return (advancedVSeed, context) => {\n const { vseed } = context\n const usePivotChart = isPivotChart(vseed)\n\n if (usePivotChart) {\n return execPipeline<AdvancedVSeed, AdvancedPipelineContext>(pivotPipeline, context, advancedVSeed)\n }\n\n return execPipeline<AdvancedVSeed, AdvancedPipelineContext>(pipeline, context, advancedVSeed)\n }\n}\n","// Reshape Measures\nexport const FoldMeasureName = '__MeaName__'\nexport const FoldMeasureId = '__MeaId__'\nexport const FoldMeasureValue = '__MeaValue__'\n\nexport const FoldPrimaryMeasureValue = '__MeaPrimaryValue__'\nexport const FoldSecondaryMeasureValue = '__MeaSecondaryValue__'\n\n// Reshape Dimensions\nexport const UnfoldDimensionGroup = '__DimGroup__'\nexport const UnfoldDimensionGroupId = '__DimGroupID__'\n\nexport const Separator = '-'\n\nexport const ORIGINAL_DATA = '__OriginalData__'\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Dataset, FoldInfo, Dimension, Measures, DimensionTree } from 'src/types'\nimport { FoldMeasureId, FoldMeasureName, FoldMeasureValue, ORIGINAL_DATA } from './constant'\nimport { omit } from 'remeda'\n\n/**\n * 折叠指定的指标\n * @description 合并指定的指标为1个, 无论多少个, 都能转换为1个, 取名为fold, 意为折叠后混合在一起.\n */\nexport const foldMeasures = (\n dataset: Dataset,\n measures: Dimension[],\n measureId = FoldMeasureId,\n measureName = FoldMeasureName,\n measureValue = FoldMeasureValue,\n): {\n dataset: Dataset\n foldInfo: FoldInfo\n} => {\n const foldInfo: FoldInfo = {\n measureId,\n measureName,\n measureValue,\n foldMap: {},\n }\n const result: Dataset = new Array(dataset.length * measures.length) as Dataset\n let index = 0\n const ids = measures.map((d) => d.id)\n for (let i = 0; i < dataset.length; i++) {\n for (let j = 0; j < measures.length; j++) {\n const datum: Record<string, any> = omit({ ...dataset[i] }, ids)\n\n datum[ORIGINAL_DATA] = dataset[i]\n\n const measure = measures[j]\n const { id, alias } = measure\n\n datum[id] = dataset[i][id] as unknown\n datum[measureId] = id\n datum[measureName] = alias || id\n datum[measureValue] = dataset[i][id] as unknown\n\n foldInfo.foldMap[id] = alias\n result[index++] = datum\n }\n }\n\n return {\n dataset: result,\n foldInfo,\n }\n}\n\n/**\n * 折叠指定的指标组, 至多支持2层\n * @param dataset\n * @param measures\n * @param measureId\n * @param measureName\n * @param measureValue\n * @returns\n */\nexport const foldMeasureGroups = (\n dataset: Dataset,\n measures: Required<DimensionTree>,\n measureId = '__MeaId__',\n measureName = '__MeaName__',\n measureValue = '__MeaValue__',\n) => {\n const groups: Array<Measures> = []\n if (!measures) {\n return {\n dataset,\n }\n }\n\n // 没有分组, 直接折叠所有指标\n if (!measures.some((measure) => 'children' in measure)) {\n return foldMeasures(dataset, measures, measureId, measureName, measureValue)\n }\n\n measures.forEach((measure) => {\n if ('children' in measure && measure.children) {\n groups.push(measure.children)\n } else {\n groups.push([measure])\n }\n })\n\n // 一组返回一个dataset\n const datasetGroup = groups.map((measures) => {\n if (!measures) {\n return []\n }\n return foldMeasures(dataset, measures, measureId, measureName, measureValue)\n })\n\n return {\n datasetGroup,\n }\n}\n","import type { Dataset, Datum, Dimension, Measure } from 'src/types'\nimport type { UnfoldInfo } from 'src/types'\nimport { UnfoldDimensionGroup, Separator, UnfoldDimensionGroupId, FoldMeasureId } from './constant'\nimport { unique } from 'remeda'\n\n/**\n * TODO: 优化展开维度的性能\n * 展开指定的维度\n * @description 第一步: 根据指定的维度, 将多个维度展开为N个指标(取决于维值去重后的数量), 随后合并成一个维度.\n */\nexport const unfoldDimensions = (\n dataset: Dataset,\n dimensions: Dimension[],\n measures: Measure[],\n unfoldStartIndex: number = 0,\n unfoldGroupName: string = UnfoldDimensionGroup,\n unfoldGroupId: string = UnfoldDimensionGroupId,\n foldMeasureId: string = FoldMeasureId,\n dimensionsSeparator: string = Separator,\n): {\n dataset: Dataset\n unfoldInfo: UnfoldInfo\n} => {\n if (unfoldStartIndex < 0 || unfoldStartIndex >= dimensions.length) {\n throw new Error('unfoldStartIndex is out of range')\n }\n\n const dimensionsToBeUnfolded = dimensions.slice(unfoldStartIndex)\n const unfoldInfo: UnfoldInfo = {\n groupName: unfoldGroupName,\n groupId: unfoldGroupId,\n colorItems: [],\n colorIdMap: {},\n }\n\n // 指标为空或维度为空, 则不检测\n if (dimensions.length === 0 || measures.length === 0) {\n return {\n dataset,\n unfoldInfo: {\n groupName: unfoldGroupName,\n groupId: unfoldGroupId,\n colorItems: [],\n colorIdMap: {},\n },\n }\n }\n\n const colorItems = []\n const colorMap: Record<string, string> = {}\n for (let i = 0; i < dataset.length; i++) {\n const datum = dataset[i]\n const colorName = generateDimGroupName(dimensionsToBeUnfolded, datum, dimensionsSeparator)\n const colorId = datum[foldMeasureId]\n ? [colorName, datum[foldMeasureId] as string].join(dimensionsSeparator)\n : colorName\n datum[unfoldGroupName] = colorName\n datum[unfoldGroupId] = colorId\n colorItems.push(colorId)\n colorMap[colorId] = colorName\n }\n\n unfoldInfo.colorItems = unique(colorItems)\n unfoldInfo.colorIdMap = colorMap\n return {\n dataset,\n unfoldInfo,\n }\n}\n\n/**\n * 生成维度组合名称\n * @param dimensionsToBeGrouped 待分组的维度\n * @param datum 数据项\n * @param dimensionsSeparator 维度分隔符\n * @returns 维度组合名称\n */\nexport const generateDimGroupName = (dimensionsToBeGrouped: Dimension[], datum: Datum, dimensionsSeparator: string) => {\n return dimensionsToBeGrouped.map((dim) => String(datum[dim.id])).join(dimensionsSeparator)\n}\n","import type { Dataset, Measure } from 'src/types'\nimport type { UnfoldInfo } from 'src/types'\nimport { UnfoldDimensionGroup, UnfoldDimensionGroupId } from './constant'\nimport { unique } from 'remeda'\n\n/**\n * 展开0个维度的特殊情况, 折线图、面积图、雷达图只有指标没有维度的情况, 应该所有的指标应该作为一个维度\n * @description\n */\nexport const unfoldZeroDimensions = (\n dataset: Dataset,\n measures: Measure[],\n measureName: string,\n unfoldGroupName: string = UnfoldDimensionGroup,\n unfoldGroupId: string = UnfoldDimensionGroupId,\n): {\n dataset: Dataset\n unfoldInfo: UnfoldInfo\n} => {\n const unfoldInfo: UnfoldInfo = {\n groupName: unfoldGroupName,\n groupId: unfoldGroupId,\n colorItems: [],\n colorIdMap: {},\n }\n\n // 指标为空或维度为空, 则不检测\n if (measures.length === 0) {\n return {\n dataset,\n unfoldInfo: {\n groupName: unfoldGroupName,\n groupId: unfoldGroupId,\n colorItems: [],\n colorIdMap: {},\n },\n }\n }\n\n const colorItems = []\n const colorMap: Record<string, string> = {}\n for (let i = 0; i < dataset.length; i++) {\n const datum = dataset[i]\n const colorName = measureName\n const colorId = measureName\n datum[unfoldGroupName] = colorName\n datum[unfoldGroupId] = colorId\n colorItems.push(colorId)\n colorMap[colorId] = colorName\n }\n\n unfoldInfo.colorItems = unique(colorItems)\n unfoldInfo.colorIdMap = colorMap\n return {\n dataset,\n unfoldInfo,\n }\n}\n","import type { Dataset, Dimension, FoldInfo, Measure, UnfoldInfo } from 'src/types'\nimport { foldMeasures } from './foldMeasures'\nimport {\n UnfoldDimensionGroup,\n FoldMeasureId,\n FoldMeasureName,\n FoldMeasureValue,\n UnfoldDimensionGroupId,\n} from './constant'\nimport { unfoldDimensions } from './unfoldDimensions'\nimport { unfoldZeroDimensions } from './unfoldZeroDimensions'\nimport { i18n } from '../i18n'\n\nconst emptyReshapeResult: {\n dataset: Dataset\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n} = {\n dataset: [],\n foldInfo: {\n foldMap: {},\n measureId: '',\n measureName: '',\n measureValue: '',\n },\n unfoldInfo: {\n groupName: '',\n groupId: '',\n colorItems: [],\n colorIdMap: {},\n },\n}\n/**\n * 数据重塑为2个维度1个指标, 并且不根据指标名称展开出一个新维度\n * @param dataset\n * @param dimensions\n * @param measures\n * @returns\n */\nexport const dataReshapeFor2D1M0Name = (\n dataset: Dataset,\n dimensions: Dimension[],\n measures: Measure[],\n options?: {\n foldMeasureId?: string\n foldMeasureName?: string\n foldMeasureValue?: string\n unfoldDimensionGroup?: string\n unfoldDimensionGroupId?: string\n },\n): {\n dataset: Dataset\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n} => {\n const {\n foldMeasureId = FoldMeasureId,\n foldMeasureName = FoldMeasureName,\n foldMeasureValue = FoldMeasureValue,\n unfoldDimensionGroup = UnfoldDimensionGroup,\n unfoldDimensionGroupId = UnfoldDimensionGroupId,\n } = options || {}\n if (dimensions.length === 0 && measures.length === 0) {\n return emptyReshapeResult\n }\n\n // 合并所有指标为1个指标\n const { dataset: foldedDataset, foldInfo } = foldMeasures(\n dataset,\n measures,\n foldMeasureId,\n foldMeasureName,\n foldMeasureValue,\n )\n\n if (dimensions.length === 0) {\n const { dataset: finalDataset, unfoldInfo } = unfoldZeroDimensions(\n foldedDataset,\n [{ id: foldMeasureValue, alias: i18n`指标值` }],\n i18n`指标名称`,\n unfoldDimensionGroup,\n unfoldDimensionGroupId,\n )\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n } else {\n const onlyOneMeasure = measures.length === 1\n const onlyOneDimension = dimensions.length === 1\n\n const dims = [...dimensions]\n if (!onlyOneMeasure || onlyOneDimension) {\n dims.push({ id: foldMeasureName, alias: i18n`指标名称`, location: 'dimension' })\n }\n\n // 展开指定的维度为指标\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(\n foldedDataset,\n dims,\n [{ id: foldMeasureValue, alias: i18n`指标值` }],\n 1,\n unfoldDimensionGroup,\n unfoldDimensionGroupId,\n foldMeasureId,\n )\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n }\n}\n","import { dataReshapeFor2D1M0Name } from 'src/dataReshape'\nimport type { AdvancedPipe } from 'src/types'\n\n/**\n * @description 数据重塑, 将任意维度、任意指标, 重塑为2个维度1个指标, 并且在0维度时, 合并所有指标为一个维度. 兼容折线图、面积图、雷达图只有指标, 没有维度的场景\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const reshapeTo2D1M0Name: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { dimensions, measures } = advancedVSeed\n\n if (!measures || !dimensions || !dataset) {\n return result\n }\n\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n\n const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor2D1M0Name(dataset, dimensions, measures)\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: [\n {\n id: '2D1M',\n index: 0,\n foldInfo,\n unfoldInfo,\n },\n ],\n dimensions,\n measures,\n }\n}\n","import { FoldMeasureId, FoldMeasureName, FoldMeasureValue, UnfoldDimensionGroup } from 'src/dataReshape/constant'\nimport { dataReshapeFor2D1M0Name } from 'src/dataReshape'\nimport type { AdvancedPipe, Dataset, DatasetReshapeInfo, Dimensions, MeasureGroup } from 'src/types'\n\n/**\n * @description 数据重塑为透视结构, 如果存在指标分组, 则将数据按组划分. 如果存在行列维度, 则生成行列树结构. 并且在0维度时, 合并所有指标为一个维度. 兼容折线图、面积图、雷达图只有指标, 没有维度的场景\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const pivotReshapeTo2D1M0Name: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { measures } = advancedVSeed\n const dimensions = advancedVSeed.dimensions as Dimensions\n\n if (!measures || !dimensions) {\n return result\n }\n\n const measureGroups: MeasureGroup[] = []\n if (measures) {\n measures.forEach((measure: MeasureGroup) => {\n if (measure.children && measure.children.length > 0) {\n measureGroups.push(measure)\n }\n })\n }\n const commonDimensions = dimensions.filter((dim) => dim.location === 'dimension')\n\n const newDatasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n measureGroups.forEach((measureGroup, index) => {\n const measures = measureGroup.children\n if (!measures) {\n return\n }\n const groupId = measureGroup.id\n const {\n dataset: newSubDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeFor2D1M0Name(dataset, commonDimensions, measures, {\n foldMeasureId: FoldMeasureId,\n foldMeasureName: FoldMeasureName,\n foldMeasureValue: FoldMeasureValue + groupId,\n unfoldDimensionGroup: UnfoldDimensionGroup,\n })\n const reshapeInfo = {\n id: groupId,\n index,\n foldInfo,\n unfoldInfo,\n }\n newDatasets.push(newSubDataset)\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n","import type { AdvancedPipe, Dimensions, FoldInfo, UnfoldInfo } from 'src/types'\nimport type { Encoding } from 'src/types'\n\nexport const encodingXY: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const { datasetReshapeInfo, dimensions } = advancedVSeed\n if (!datasetReshapeInfo || !dimensions) {\n return result\n }\n\n const xDimension =\n (dimensions as Dimensions).find(\n (item) => item.location !== 'rowDimension' && item.location !== 'columnDimension',\n ) || dimensions[0]\n\n const isZeroDimension = dimensions.length === 0\n\n const encoding = datasetReshapeInfo.reduce<Encoding>((prev, cur) => {\n const { foldInfo, unfoldInfo } = cur as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n const x = [isZeroDimension ? foldInfo.measureName : xDimension?.id]\n const y = [foldInfo.measureValue]\n const group = [unfoldInfo.groupId]\n const color = [foldInfo.measureName]\n\n return [\n ...prev,\n {\n x,\n y,\n group,\n color,\n },\n ] as Encoding\n }, [])\n\n return {\n ...result,\n encoding,\n }\n}\n","import { sort, unique } from 'remeda'\nimport type { AdvancedPipe, Dataset, Datum, Line, Sort, SortLegend } from 'src/types'\n\nexport const sortXBandAxis: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { sort: sortAxis, dataset } = vseed as Line\n const { encoding } = advancedVSeed\n const xField = encoding?.[0]?.x?.[0]\n if (!sortAxis || !xField) {\n return advancedVSeed\n }\n if (!result.analysis) result.analysis = {}\n if (!result.analysis.orderMapping) result.analysis.orderMapping = {}\n\n const axisOrderResult = calcOrder(sortAxis, xField, dataset)\n\n result.analysis.orderMapping[xField] = axisOrderResult\n\n return result\n}\n\nexport const sortYBandAxis: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { sort: sortAxis, dataset } = vseed as Line\n const { encoding } = advancedVSeed\n const yField = encoding?.[0]?.y?.[0]\n if (!sortAxis || !yField) {\n return advancedVSeed\n }\n if (!result.analysis) result.analysis = {}\n if (!result.analysis.orderMapping) result.analysis.orderMapping = {}\n\n const axisOrderResult = calcOrder(sortAxis, yField, dataset)\n\n result.analysis.orderMapping[yField] = axisOrderResult\n\n return result\n}\n\nexport const sortLegend: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { sortLegend } = vseed as Line\n const { datasetReshapeInfo } = advancedVSeed\n const groupField = datasetReshapeInfo?.[0]?.unfoldInfo?.groupId\n const colorIdMap = datasetReshapeInfo?.[0]?.unfoldInfo?.colorIdMap\n const colorItems = datasetReshapeInfo?.[0]?.unfoldInfo?.colorItems\n if (!sortLegend || !groupField || !colorIdMap || !colorItems) {\n return advancedVSeed\n }\n\n if (!result.analysis) result.analysis = {}\n if (!result.analysis.orderMapping) result.analysis.orderMapping = {}\n\n if (sortLegend.customOrder) {\n const nameMap = Object.keys(colorIdMap).reduce<Record<string, string>>((pre, cur) => {\n pre[colorIdMap[cur]] = cur\n return pre\n }, {})\n\n // 先根据名称匹配, 若名称不存在, 则根据id匹配, 从而兼容名称和id的两种情况\n const orderRes = sortLegend.customOrder.map((itemNameOrId) =>\n nameMap[itemNameOrId] ? nameMap[itemNameOrId] : itemNameOrId,\n )\n result.analysis.orderMapping[groupField] = orderRes\n return result\n }\n\n const dataset = advancedVSeed.dataset?.flat(2)\n\n const orderRes = calcOrder(sortLegend, groupField, dataset || [])\n result.analysis.orderMapping[groupField] = orderRes\n\n return result\n}\n\nconst calcOrder = (sortConfig: Sort | SortLegend, id: string, dataset: Dataset): string[] => {\n if (sortConfig.customOrder) {\n return sortConfig.customOrder\n }\n\n const order = sortConfig.order || 'asc'\n const orderBy = sortConfig.orderBy\n\n const res = sort(dataset, (a, b) => {\n const aValue = a[orderBy || id] as string | number\n const bValue = b[orderBy || id] as string | number\n\n if (order === 'asc') {\n if (aValue < bValue) {\n return -1\n }\n if (aValue > bValue) {\n return 1\n }\n return 0\n }\n if (aValue > bValue) {\n return -1\n }\n if (aValue < bValue) {\n return 1\n }\n return 0\n })\n\n return unique(res.map((item: Datum) => item[id] as string))\n}\n","import { pick } from 'remeda'\nimport type { AdvancedPipe, AdvancedVSeed, Config } from 'src/types'\n\nexport const lineConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const config = pick(vseed, [\n 'backgroundColor',\n 'color',\n 'label',\n 'legend',\n 'tooltip',\n 'xAxis',\n 'yAxis',\n 'crosshairLine',\n ]) as Config['line']\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n\nexport const columnConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const config = pick(vseed, [\n 'backgroundColor',\n 'color',\n 'label',\n 'legend',\n 'tooltip',\n 'xAxis',\n 'yAxis',\n 'crosshairRect',\n 'stackCornerRadius',\n ]) as Config['column']\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n\nexport const pieConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const config = pick(vseed, ['backgroundColor', 'color', 'label', 'legend', 'tooltip']) as Config['pie']\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n\nexport const areaConfig: AdvancedPipe = lineConfig\nexport const areaPercentConfig: AdvancedPipe = lineConfig\nexport const scatterConfig: AdvancedPipe = lineConfig\n\nexport const barConfig: AdvancedPipe = columnConfig\nexport const barParallelConfig: AdvancedPipe = columnConfig\nexport const barPercentConfig: AdvancedPipe = columnConfig\nexport const columnParallelConfig: AdvancedPipe = columnConfig\nexport const columnPercentConfig: AdvancedPipe = columnConfig\n\nexport const donutConfig: AdvancedPipe = pieConfig\nexport const roseConfig: AdvancedPipe = pieConfig\nexport const roseParallelConfig: AdvancedPipe = pieConfig\nexport const funnelConfig: AdvancedPipe = pieConfig\nexport const heatmapConfig: AdvancedPipe = pieConfig\nexport const radarConfig: AdvancedPipe = pieConfig","import { pick } from 'remeda'\nimport type { AdvancedPipe, AdvancedVSeed } from 'src/types'\n\nexport const markStyle: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n\n const markStyle = pick(vseed, ['barStyle', 'pointStyle', 'lineStyle', 'areaStyle']) as AdvancedVSeed['markStyle']\n\n return { ...advancedVSeed, markStyle }\n}\n","import { pick } from 'remeda'\nimport type { AdvancedPipe, AdvancedVSeed } from 'src/types'\n\nexport const annotation: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const annotation = pick(vseed, [\n 'annotationPoint',\n 'annotationHorizontalLine',\n 'annotationVerticalLine',\n 'annotationArea',\n ]) as AdvancedVSeed['annotation']\n\n return { ...advancedVSeed, annotation }\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n encodingXY,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n lineConfig,\n annotation,\n markStyle,\n sortXBandAxis,\n sortLegend,\n reshapeTo2D1M0Name,\n pivotReshapeTo2D1M0Name,\n} from '../pipes'\n\nexport const lineAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M0Name], [pivotReshapeTo2D1M0Name]),\n encodingXY,\n sortXBandAxis,\n sortLegend,\n lineConfig,\n theme,\n markStyle,\n annotation\n]\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initLine: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n\n result.type = 'line'\n result.direction = 'vertical'\n result.xField = encoding[0].x[0]\n result.yField = encoding[0].y[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport { Separator } from 'src/dataReshape'\nimport type { Color, SpecPipe } from 'src/types'\n\nexport const color: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo, chartType } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n const baseConfig = advancedVSeed.config[chartType] as { color: Color }\n\n if (!baseConfig || !baseConfig.color) {\n return result\n }\n\n const colorItems = unfoldInfo.colorItems\n const colorIdMap = unfoldInfo.colorIdMap\n\n const { color } = baseConfig\n const { colorScheme, colorMapping } = color\n const mappingList: Array<[string, string]> = []\n if (colorMapping) {\n Object.entries(colorMapping)\n .sort((a, b) => a[0].split(Separator).length - b[0].split(Separator).length)\n .forEach(([key, value]) => {\n const idMap = Object.entries(colorIdMap).filter(([_, v]) => v.includes(key))\n\n for (const [colorId] of idMap) {\n mappingList.push([colorId, value])\n }\n })\n }\n\n result.color = {\n type: 'ordinal',\n domain: colorItems,\n range: colorScheme,\n specified: Object.fromEntries(mappingList),\n } as ILineChartSpec['color']\n return result\n}\n","import type { ISpec } from '@visactor/vchart'\nimport type { BackgroundColor, SpecPipe } from 'src/types'\n\nexport const backgroundColor: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed } = context\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { backgroundColor: BackgroundColor }\n\n const { backgroundColor } = baseConfig\n\n return {\n ...result,\n background: backgroundColor,\n }\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { isPivotChart } from 'src/pipeline/utils'\nimport type { SpecPipe } from 'src/types'\n\nexport const datasetXY: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { encoding, analysis, datasetReshapeInfo } = advancedVSeed\n const orderMapping = analysis?.orderMapping || {}\n const angle = encoding[0]?.angle?.[0]\n const x = encoding[0]?.x?.[0]\n const group = encoding[0]?.group?.[0]\n const id = datasetReshapeInfo[0].id\n\n const fields: Record<string, object> = {}\n if (angle) {\n fields[angle] = {\n sortIndex: 0,\n }\n }\n if (x) {\n const order = orderMapping[x]\n if (order) {\n fields[x] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[x] = {\n sortIndex: 0,\n }\n }\n }\n\n if (group) {\n const order = orderMapping[group]\n if (order) {\n fields[group] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[group] = {\n sortIndex: 0,\n }\n }\n }\n\n return {\n ...spec,\n data: {\n id,\n // 透视表不使用 dataValues\n values: isPivotChart(vseed) ? undefined : advancedVSeed.dataset,\n fields: fields,\n },\n } as ISpec\n}\n","import type { ILineSeriesSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const progressive: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineSeriesSpec\n const { advancedVSeed } = context\n const { dataset = [] } = advancedVSeed\n const size = dataset.length\n\n if (size < 5000) {\n return result\n }\n\n result.large = true\n result.largeThreshold = 5000\n result.progressiveStep = 400\n result.progressiveThreshold = 8000\n\n return result\n}\n","import type { ICartesianBandAxisSpec, ISpec } from '@visactor/vchart'\nimport type { SpecPipe, XBandAxis } from 'src/types'\n\nexport const xBand: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const config = advancedVSeed.config?.[chartType as 'column']?.xAxis as XBandAxis\n\n if (!result.axes) {\n result.axes = []\n }\n\n if (!config) {\n result.axes = [\n ...result.axes,\n {\n visible: true,\n type: 'band',\n orient: 'bottom',\n },\n ] as ISpec['axes']\n return result\n }\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n labelAutoHide,\n labelAutoHideGap,\n labelAutoLimit,\n labelAutoLimitLength = 80,\n labelAutoRotate,\n labelAutoRotateAngleRange,\n } = config\n\n const sampling = !(labelAutoHide || labelAutoRotate || labelAutoLimit)\n\n const bandAxis = {\n visible,\n type: 'band',\n orient: 'bottom',\n maxHeight: labelAutoLimitLength + 60,\n sampling,\n hover: true,\n label: {\n visible: label?.visible,\n flush: true,\n space: 8,\n style: {\n maxLineWidth: labelAutoLimitLength,\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n\n // 防重叠相关\n minGap: labelAutoHideGap,\n autoHide: labelAutoHide,\n autoHideMethod: 'greedy',\n autoHideSeparation: labelAutoHideGap,\n autoLimit: labelAutoLimit,\n autoRotate: labelAutoRotate,\n autoRotateAngle: labelAutoRotateAngleRange,\n lastVisible: true,\n },\n title: {\n visible: title?.visible,\n text: title?.titleText,\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n paddingInner: [0.15, 0.1],\n paddingOuter: [0.075, 0.1],\n } as ICartesianBandAxisSpec\n\n result.axes = [...result.axes, bandAxis] as ISpec['axes']\n return result\n}\n","// 标注层 z-index \nexport const ANNOTATION_Z_INDEX = 1000\n// 线性轴 顶部空隙 预留5px\nexport const LINEAR_AXIS_INNER_OFFSET_TOP = 7","import type { ISpec } from '@visactor/vchart'\nimport { LINEAR_AXIS_INNER_OFFSET_TOP } from '../../../../utils/constant'\nimport { autoFormatter } from '../../../../utils'\nimport type { SpecPipe, YLinearAxis } from 'src/types'\n\nexport const yLinear: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { locale } = advancedVSeed\n const config = advancedVSeed.config?.[chartType as 'column']?.yAxis as YLinearAxis\n\n if (!result.axes) {\n result.axes = []\n }\n\n if (!config) {\n result.axes = [\n ...result.axes,\n {\n visible: true,\n type: 'linear',\n orient: 'left',\n },\n ] as ISpec['axes']\n return result\n }\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n\n zero,\n nice,\n inverse,\n max,\n min,\n log,\n logBase = 10,\n } = config\n\n const linearAxis = {\n visible,\n type: log ? 'log' : 'linear',\n base: logBase,\n orient: 'left',\n nice,\n zero: log ? false : zero,\n inverse,\n max,\n min,\n label: {\n visible: label?.visible,\n formatMethod: (value: string) => {\n return autoFormatter(value, locale)\n },\n style: {\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n },\n title: {\n visible: title?.visible,\n text: title?.titleText,\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n innerOffset: {\n top: LINEAR_AXIS_INNER_OFFSET_TOP,\n // bottom: LINEAR_AXIS_INNER_OFFSET_TOP,\n },\n }\n\n result.axes = [...result.axes, linearAxis] as ISpec['axes']\n\n return result\n}\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport type { ILineLikeLabelSpec } from '@visactor/vchart/esm/series/mixin/interface'\nimport { autoFormatter, createFormatter, findMeasureById } from '../../../../utils'\nimport type { Datum, Label, SpecPipe } from 'src/types'\nimport { isEmpty } from 'remeda'\n\nexport const label: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed } = context\n const { measures, datasetReshapeInfo, locale } = advancedVSeed\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { label: Label }\n\n if (!baseConfig || !baseConfig.label) {\n return result\n }\n\n const { measureId, measureValue } = datasetReshapeInfo[0].foldInfo\n // const { groupId, groupName } = datasetReshapeInfo[0].unfoldInfo\n const { label } = baseConfig\n const { enable } = label\n\n result.label = {\n visible: enable,\n formatMethod: (value: string, datum: Datum) => {\n const result = []\n\n const formatValue = (value: number) => {\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return value\n }\n\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n }\n\n result.push(formatValue(datum[measureValue] as number))\n\n return result.join(' ')\n },\n } as ILineLikeLabelSpec\n return result\n}\n","import { isEmpty } from 'remeda'\nimport { autoFormatter, createFormatter, findMeasureById } from '../../../../utils'\nimport type { Datum, SpecPipe, Tooltip } from 'src/types'\n\nexport const tooltip: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { measures, datasetReshapeInfo, chartType, locale, dimensions } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n\n const { measureId, measureValue, measureName } = datasetReshapeInfo[0].foldInfo\n const { groupName } = datasetReshapeInfo[0].unfoldInfo\n\n result.tooltip = {\n visible: enable,\n\n mark: {\n title: {\n visible: true,\n },\n content: [\n ...dimensions.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (datum: unknown) => {\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return (datum as Datum) && ((datum as Datum)[item.id] as string)\n },\n value: (datum: unknown) => {\n return (datum as Datum) && ((datum as Datum)[item.id] as string)\n },\n })),\n {\n visible: true,\n hasShape: true,\n key: (datum) => (datum && (datum[measureName || groupName] as string)) || '',\n value: (datum) => {\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n },\n ],\n },\n dimension: {\n content: [\n {\n visible: true,\n key: (datum) => (datum && (datum[groupName] as string)) || '',\n value: (datum) => {\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n shapeType: 'rectRound',\n },\n ],\n },\n }\n return result\n}\n","import type { ICartesianCrosshairSpec, ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const verticalCrosshairLine: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n\n const config = advancedVSeed.config?.[chartType as 'line']?.crosshairLine\n if (!config) {\n return result\n }\n\n if (!result.crosshair) {\n result.crosshair = {}\n }\n\n const visible = config.visible || true\n const lineColor = config.lineColor || undefined\n const labelColor = config.labelColor || undefined\n const labelVisible = config.labelVisible || undefined\n const labelBackgroundColor = config.labelBackgroundColor || undefined\n\n const crosshair = result.crosshair as ICartesianCrosshairSpec\n crosshair.xField = {\n visible,\n line: {\n type: 'line',\n style: {\n lineWidth: 1,\n opacity: 1,\n stroke: lineColor,\n lineDash: [4, 2],\n },\n },\n label: {\n visible: labelVisible,\n labelBackground: {\n visible: labelVisible,\n style: {\n fill: labelBackgroundColor,\n },\n },\n style: {\n fill: labelColor,\n },\n },\n }\n\n return result\n}\n","import type { StringOrNumber } from '@visactor/vchart'\nimport type { Legend, SpecPipe } from 'src/types'\n\nexport const discreteLegend: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { datasetReshapeInfo, chartType } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n const baseConfig = advancedVSeed.config[chartType] as { legend: Legend }\n if (!baseConfig || !baseConfig.legend) {\n return result\n }\n\n const { legend } = baseConfig\n const {\n enable,\n position = 'bottom',\n labelFontColor,\n labelFontSize = 12,\n labelFontWeight,\n maxSize = 1,\n border,\n shapeType = 'rectRound',\n } = legend || {}\n\n const orient = ['bottom', 'bottomLeft', 'bottomRight', 'bl', 'br'].includes(position)\n ? 'bottom'\n : ['top', 'topLeft', 'topRight', 'tl', 'tr'].includes(position)\n ? 'top'\n : ['left', 'leftTop', 'leftBottom', 'lt', 'lb'].includes(position)\n ? 'left'\n : 'right'\n\n const legendPosition = ['topLeft', 'bottomLeft', 'leftTop', 'rightTop', 'lt', 'rt', 'tl', 'bl'].includes(position)\n ? 'start'\n : ['topRight', 'bottomRight', 'leftBottom', 'rightBottom', 'lb', 'rb', 'rt', 'br'].includes(position)\n ? 'end'\n : 'middle'\n\n result.legends = {\n type: 'discrete',\n visible: enable,\n maxCol: Math.max(1, maxSize),\n maxRow: Math.max(1, maxSize),\n autoPage: true,\n orient,\n position: legendPosition,\n data: border\n ? (items) => {\n return items.map((item) => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n item.shape.outerBorder = {\n stroke: item.shape.fill,\n distance: 3,\n lineWidth: 1,\n }\n return item\n })\n }\n : undefined,\n item: {\n focus: true,\n maxWidth: '30%',\n focusIconStyle: {\n size: labelFontSize + 2,\n fill: labelFontColor,\n fontWeight: labelFontWeight,\n },\n shape: {\n space: border ? 6 : 4,\n style: {\n symbolType: shapeType,\n size: border ? 8 : 10,\n },\n },\n label: {\n formatMethod: (value: StringOrNumber) => {\n return unfoldInfo.colorIdMap[String(value)] ?? value\n },\n style: {\n fontSize: labelFontSize,\n fill: labelFontColor,\n fontWeight: labelFontWeight,\n },\n },\n background: {\n state: {\n selectedHover: {\n fill: labelFontColor,\n fillOpacity: 0.05,\n },\n },\n },\n },\n padding: 0,\n }\n return result\n}\n","import type { Datum } from 'src/types'\nimport type {\n DimensionSelector,\n MeasureSelector,\n PartialDatumSelector,\n Selector,\n Selectors,\n ValueSelector,\n} from '../types/dataSelector'\nimport { omit } from 'remeda'\n\nexport const selector = (vchartDatum: Datum, selector: Selector | Selectors | undefined | null) => {\n // 无有效选择器, 则认为全部匹配成功\n if (!selector) {\n return true\n }\n\n const selectorMode = 'And'\n\n // 过滤掉 vchart 相关字段\n const vchartKeys = Object.keys(vchartDatum).filter((k) => k.toLocaleLowerCase().startsWith('__vchart'))\n const datum = omit(vchartDatum, vchartKeys) as Datum\n\n // 统一处理选择器为数组\n const selectors = (Array.isArray(selector) ? selector : [selector]) as Selectors\n\n return selectors[selectorMode === 'And' ? 'every' : 'some']((selector) => {\n // 1. 字符串或数字\n if (isValueSelector(selector)) {\n if (Object.values(datum).find((v) => v === selector)) {\n return true\n }\n }\n\n // 2. 指标选择器\n else if (isMeasureSelector(selector)) {\n const op = selector.operator || selector.op\n const selectorValueArr = Array.isArray(selector.value) ? selector.value : [selector.value]\n\n switch (op) {\n case '=':\n case '==':\n if (datum[selector.field] === selectorValueArr[0]) {\n return true\n }\n break\n case '!=':\n if (datum[selector.field] !== selectorValueArr[0]) {\n return true\n }\n break\n case '>':\n if (datum[selector.field] > selectorValueArr[0]) {\n return true\n }\n break\n case '<':\n if (datum[selector.field] < selectorValueArr[0]) {\n return true\n }\n break\n case '>=':\n if (datum[selector.field] >= selectorValueArr[0]) {\n return true\n }\n break\n case '<=':\n if (datum[selector.field] <= selectorValueArr[0]) {\n return true\n }\n break\n case 'between':\n if (\n Array.isArray(selector.value) &&\n datum[selector.field] >= selectorValueArr[0] &&\n datum[selector.field] <= selectorValueArr[1]\n ) {\n return true\n }\n break\n default:\n break\n }\n }\n // 3. 维度选择器\n else if (isDimensionSelector(selector)) {\n const op = selector.operator || selector.op\n const selectorValueArr = Array.isArray(selector.value) ? selector.value : [selector.value]\n switch (op) {\n case 'in':\n if (selectorValueArr.includes(datum[selector.field] as string | number)) {\n return true\n }\n break\n case 'not in':\n if (!selectorValueArr.includes(datum[selector.field] as string | number)) {\n return true\n }\n break\n default:\n break\n }\n }\n // 4. 部分数据对象选择器\n else if (isPartialDatumSelector(selector)) {\n if (Object.keys(selector).every((key) => datum[key] === selector[key])) {\n return true\n }\n }\n\n return false\n })\n}\n\nexport const isValueSelector = (selector: Selector): selector is ValueSelector => {\n return typeof selector === 'string' || typeof selector === 'number'\n}\n\nexport const isPartialDatumSelector = (selector: Selector): selector is PartialDatumSelector => {\n return typeof selector === 'object' && selector !== null\n}\n\nexport const isMeasureSelector = (selector: Selector): selector is MeasureSelector => {\n return (\n typeof selector === 'object' &&\n selector !== null &&\n 'field' in selector &&\n ('operator' in selector || 'op' in selector) &&\n 'value' in selector &&\n (['=', '==', '!=', '>', '<', '>=', '<=', 'between'].includes(selector.operator as string) ||\n ['=', '==', '!=', '>', '<', '>=', '<=', 'between'].includes(selector.op as string))\n )\n}\n\nexport const isDimensionSelector = (selector: Selector): selector is DimensionSelector => {\n return (\n typeof selector === 'object' &&\n selector !== null &&\n 'field' in selector &&\n ('operator' in selector || 'op' in selector) &&\n 'value' in selector &&\n (['in', 'not in'].includes(selector.operator as string) || ['in', 'not in'].includes(selector.op as string))\n )\n}\n","import type { IAreaChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, PointStyle, SpecPipe } from 'src/types'\n\nexport const pointStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle } = advancedVSeed\n const { pointStyle } = markStyle\n const result = {\n ...spec,\n } as IAreaChartSpec\n\n if (!pointStyle) {\n return result\n }\n const pointStyles = (Array.isArray(pointStyle) ? pointStyle : [pointStyle]) as PointStyle[]\n\n const customMap = pointStyles.reduce<object>((result, style, index) => {\n const { pointBorderColor, pointBorderStyle, pointBorderWidth = 1, pointColor, pointColorOpacity, pointSize } = style\n\n const lineDash = pointBorderStyle === 'dashed' ? [5, 2] : pointBorderStyle === 'dotted' ? [2, 5] : [0, 0]\n return {\n ...result,\n [`custom${index + 1}`]: {\n // 优先级: 后者覆盖前者\n level: index + 1,\n filter: (datum: Datum) => {\n if (selector(datum, style.selector)) {\n return true\n }\n return false\n },\n style: {\n size: pointSize,\n fill: pointColor,\n fillOpacity: pointColorOpacity,\n innerBorder: {\n stroke: pointBorderColor,\n lineWidth: pointBorderWidth,\n distance: (pointBorderWidth || 0) / 2,\n lineDash: lineDash,\n },\n },\n },\n }\n }, {})\n\n return {\n ...result,\n point: {\n state: {\n ...customMap,\n },\n },\n }\n}\n","import type { IScatterChartSpec } from '@visactor/vchart'\nimport type { ISeriesMarkAttributeContext } from '@visactor/vchart/esm/compile/mark'\nimport type { SpecPipe } from 'src/types'\n\nexport const pointStateDimensionHover: SpecPipe = (spec) => {\n const point = (spec as IScatterChartSpec).point || {}\n const result = {\n ...spec,\n point: {\n ...point,\n state: {\n ...(point.state || {}),\n dimension_hover: {\n scaleX: 1.4,\n scaleY: 1.4,\n },\n },\n },\n } as IScatterChartSpec\n return result\n}\n\nexport const pointStateHover: SpecPipe = (spec, context) => {\n const point = (spec as IScatterChartSpec).point || {}\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n const result = {\n ...spec,\n point: {\n ...point,\n state: {\n ...(point.state || {}),\n hover: {\n scaleX: 1.4,\n scaleY: 1.4,\n stroke: (datum, context: ISeriesMarkAttributeContext) => {\n const field = encoding[0]?.group?.[0] as string\n const color = context.seriesColor(datum[field] as string)\n return color\n },\n fillOpacity: 0.6,\n lineWidth: 1,\n },\n },\n },\n } as IScatterChartSpec\n return result\n}\n","import type { IAreaChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, LineStyle, SpecPipe } from 'src/types'\nimport { groupBy } from 'remeda'\n\nexport const lineStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle, encoding, dataset } = advancedVSeed\n const { lineStyle } = markStyle\n if (!lineStyle) {\n return spec\n }\n const result = { ...spec } as IAreaChartSpec\n\n const lineStyles = (Array.isArray(lineStyle) ? lineStyle : [lineStyle]) as LineStyle[]\n\n const group = encoding[0]?.group?.[0]\n const lineGroups = groupBy(dataset, (d) => d[group ?? ''] as string)\n\n const customMap = lineStyles.reduce<object>((result, style, index) => {\n const { lineColor, lineColorOpacity, lineSmooth, lineStyle, lineWidth } = style\n\n const dashSegment = (lineWidth ?? 2) * 2\n const dashGap = lineWidth ?? 2\n\n const lineDash =\n lineStyle === 'dashed' ? [dashSegment, dashSegment] : lineStyle === 'dotted' ? [dashGap / 2, dashGap * 2] : [0, 0]\n\n const curveType = lineSmooth ? 'monotone' : 'linear'\n\n return {\n ...result,\n [`custom${index + 1}`]: {\n // 优先级: 后者覆盖前者\n level: index + 1,\n filter: (datum: Datum) => {\n const lineData = lineGroups[datum[group ?? ''] as string]\n for (const d of lineData) {\n if (selector(d, style.selector)) {\n return true\n }\n }\n return false\n },\n style: {\n curveType: curveType,\n strokeOpacity: lineColorOpacity,\n stroke: lineColor,\n lineWidth: lineWidth,\n lineDash: lineDash,\n },\n },\n }\n }, {})\n\n return {\n ...result,\n line: {\n state: {\n ...customMap,\n },\n },\n }\n}\n","import type { Datum } from \"src/types\"\n\nexport const isSubset = (sub: Datum, obj: Datum) => {\n return Object.entries(sub).every(([key, value]) => {\n if (typeof value === 'string') {\n return obj[key] === value\n }\n if (typeof value === 'number') {\n return obj[key] === value\n }\n return true\n })\n}\n","import type { ICartesianSeries, ILineChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, SpecPipe } from 'src/types'\nimport { isSubset } from './utils'\nimport { ANNOTATION_Z_INDEX } from '../../../../utils/constant'\n\nexport const annotationPoint: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { annotation } = advancedVSeed\n\n if (!annotation || !annotation.annotationPoint) {\n return spec\n }\n\n const { annotationPoint } = annotation\n const annotationPointList = Array.isArray(annotationPoint) ? annotationPoint : [annotationPoint]\n\n const markPoint = annotationPointList.flatMap((annotationPoint) => {\n const {\n selector: selectorPoint,\n text = '',\n textColor = '#ffffff',\n textFontSize = 12,\n textFontWeight = 400,\n textAlign = 'center',\n textBaseline = 'top',\n textBackgroundBorderColor,\n textBackgroundBorderRadius = 4,\n textBackgroundBorderWidth = 1,\n textBackgroundColor = '#212121',\n textBackgroundPadding = 2,\n textBackgroundVisible = true,\n offsetX = 0,\n offsetY = 0,\n } = annotationPoint\n\n const dataset = advancedVSeed.dataset.flat()\n const selectedData = selectorPoint ? dataset.filter((datum) => selector(datum, selectorPoint)) : []\n\n return selectedData.map((datum) => {\n return {\n zIndex: ANNOTATION_Z_INDEX,\n regionRelative: true,\n position: (data: Datum[], context: ICartesianSeries) => {\n const targetDatum = data.find((item) => isSubset(datum, item))\n if (targetDatum) {\n const { x, y } = context.dataToPosition(targetDatum) as { x: number; y: number }\n return {\n x,\n y,\n }\n }\n },\n\n itemLine: {\n visible: false,\n },\n itemContent: {\n offsetY,\n offsetX,\n text: {\n text: text,\n style: {\n visible: true,\n textAlign: textAlign,\n textBaseline: textBaseline,\n fill: textColor,\n stroke: textBackgroundColor,\n lineWidth: 1,\n fontSize: textFontSize,\n fontWeight: textFontWeight,\n dy: textFontSize,\n },\n labelBackground: {\n visible: textBackgroundVisible,\n padding: textBackgroundPadding,\n style: {\n cornerRadius: textBackgroundBorderRadius ?? 4,\n fill: textBackgroundColor,\n stroke: textBackgroundBorderColor,\n lineWidth: textBackgroundBorderWidth,\n dy: textFontSize,\n },\n },\n },\n },\n }\n })\n }) as ILineChartSpec['markPoint']\n\n return {\n ...spec,\n markPoint,\n }\n}\n","import type { ILineChartSpec, IMarkLineSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { SpecPipe } from 'src/types'\nimport { isArray, isNumber, isString } from 'remeda'\nimport { ANNOTATION_Z_INDEX } from '../../../../utils/constant'\n\nexport const annotationVerticalLine: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { annotation, encoding } = advancedVSeed\n\n if (!annotation || !annotation.annotationVerticalLine) {\n return spec\n }\n\n const { annotationVerticalLine } = annotation\n const annotationVerticalLineList = Array.isArray(annotationVerticalLine)\n ? annotationVerticalLine\n : [annotationVerticalLine]\n\n const positionMap = {\n outsideStart: 'start',\n outsideEnd: 'end',\n outsideMiddle: 'middle',\n insideStart: 'insideStartTop',\n insideMiddle: 'insideMiddleTop',\n insideEnd: 'insideEndTop',\n }\n const markLine = annotationVerticalLineList.flatMap((annotationVerticalLine) => {\n const {\n selector: selectorPoint,\n xValue,\n text = '',\n textPosition = 'insideEnd',\n textColor = '#ffffff',\n textFontSize = 12,\n textFontWeight = 400,\n textAlign = 'right',\n textBaseline = 'top',\n\n textBackgroundVisible = true,\n textBackgroundBorderColor = '#212121',\n textBackgroundColor = '#212121',\n textBackgroundBorderRadius = 4,\n textBackgroundBorderWidth = 1,\n textBackgroundPadding = 2,\n\n lineVisible = true,\n lineColor = '#212121',\n lineWidth = 1,\n lineStyle = 'dashed',\n\n offsetX = 0,\n offsetY = 0,\n } = annotationVerticalLine\n\n const dataset = advancedVSeed.dataset.flat()\n\n const generateOneMarkLine = (x: number | string) => ({\n x: x as string,\n zIndex: ANNOTATION_Z_INDEX,\n offsetX,\n offsetY,\n line: {\n style: {\n visible: lineVisible,\n stroke: lineColor,\n lineStyle: lineStyle,\n lineWidth: lineWidth,\n lineDash: lineStyle === 'dashed' ? [5, 2] : lineStyle === 'dotted' ? [2, 5] : [0],\n },\n },\n label: {\n text: text,\n position: positionMap[textPosition || 'insideEnd'],\n style: {\n visible: true,\n stroke: textBackgroundColor,\n lineWidth: 1,\n textAlign: textAlign,\n textBaseline: textBaseline,\n fill: textColor,\n fontSize: textFontSize,\n fontWeight: textFontWeight,\n dy: textFontSize,\n },\n labelBackground: {\n visible: textBackgroundVisible,\n padding: textBackgroundPadding,\n style: {\n dy: textFontSize,\n cornerRadius: textBackgroundBorderRadius ?? 4,\n fill: textBackgroundColor,\n stroke: textBackgroundBorderColor,\n lineWidth: textBackgroundBorderWidth,\n },\n },\n },\n endSymbol: {\n visible: true,\n size: 10 + (lineWidth || 1),\n style: {\n dy: 4,\n fill: lineColor,\n },\n },\n })\n\n if ((!selectorPoint && isArray(xValue)) || isString(xValue) || isNumber(xValue)) {\n const xValueArr = Array.isArray(xValue) ? xValue : [xValue]\n return xValueArr.map(generateOneMarkLine)\n }\n\n const selectedData = selectorPoint ? dataset.filter((datum) => selector(datum, selectorPoint)) : []\n\n return selectedData.map((datum) => {\n const x = encoding[0]?.x?.[0]\n if (!x) {\n return {}\n }\n return generateOneMarkLine(datum[x] as string)\n })\n }) as IMarkLineSpec[]\n\n const specMarkLine = ((spec as ILineChartSpec).markLine as IMarkLineSpec[]) || []\n const newMarkLine = [...specMarkLine, ...(markLine || [])]\n\n return {\n ...spec,\n markLine: newMarkLine,\n }\n}\n","import type { ILineChartSpec, IMarkLineSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { SpecPipe } from 'src/types'\nimport { isArray, isNumber, isString } from 'remeda'\nimport { ANNOTATION_Z_INDEX } from '../../../../utils/constant'\n\nexport const annotationHorizontalLine: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { annotation, encoding } = advancedVSeed\n\n if (!annotation || !annotation.annotationHorizontalLine) {\n return spec\n }\n\n const { annotationHorizontalLine } = annotation\n const annotationVerticalLineList = Array.isArray(annotationHorizontalLine)\n ? annotationHorizontalLine\n : [annotationHorizontalLine]\n\n const positionMap = {\n outsideStart: 'start',\n outsideEnd: 'end',\n outsideMiddle: 'middle',\n insideStart: 'insideStartTop',\n insideMiddle: 'insideMiddleTop',\n insideEnd: 'insideEndTop',\n }\n\n const markLine = annotationVerticalLineList.flatMap((annotationVerticalLine) => {\n const {\n selector: selectorPoint,\n yValue,\n text = '',\n textPosition = 'insideEnd',\n textColor = '#ffffff',\n textFontSize = 12,\n textFontWeight = 400,\n textAlign = 'right',\n textBaseline = 'top',\n\n lineColor = '#212121',\n lineStyle = 'dashed',\n lineVisible = true,\n lineWidth = 1,\n\n textBackgroundVisible = true,\n textBackgroundColor = '#212121',\n textBackgroundBorderColor = '#212121',\n textBackgroundBorderRadius = 4,\n textBackgroundBorderWidth = 1,\n textBackgroundPadding = 2,\n\n offsetX = 0,\n offsetY = 0,\n } = annotationVerticalLine\n\n const dataset = advancedVSeed.dataset.flat()\n\n const generateOneMarkLine = (y: string | number) => {\n return {\n y,\n offsetX,\n offsetY,\n zIndex: ANNOTATION_Z_INDEX,\n line: {\n style: {\n visible: lineVisible,\n stroke: lineColor,\n lineStyle: lineStyle,\n lineWidth: lineWidth,\n lineDash: lineStyle === 'dashed' ? [5, 2] : lineStyle === 'dotted' ? [2, 5] : [0],\n },\n },\n label: {\n text: text,\n position: positionMap[textPosition || 'insideEnd'],\n style: {\n visible: true,\n dy: textFontSize,\n stroke: textBackgroundColor,\n lineWidth: 1,\n textAlign: textAlign,\n textBaseline: textBaseline,\n fill: textColor,\n fontSize: textFontSize,\n fontWeight: textFontWeight,\n },\n labelBackground: {\n visible: textBackgroundVisible,\n padding: textBackgroundPadding,\n style: {\n dy: textFontSize,\n cornerRadius: textBackgroundBorderRadius ?? 4,\n fill: textBackgroundColor,\n stroke: textBackgroundBorderColor,\n lineWidth: textBackgroundBorderWidth,\n },\n },\n },\n endSymbol: {\n visible: true,\n size: 10 + (lineWidth || 1),\n style: {\n dx: -4,\n fill: lineColor,\n },\n },\n }\n }\n\n if ((!selectorPoint && isArray(yValue)) || isString(yValue) || isNumber(yValue)) {\n const yValueArr = Array.isArray(yValue) ? yValue : [yValue]\n return yValueArr.map(generateOneMarkLine)\n }\n\n const selectedData = selectorPoint ? dataset.filter((datum) => selector(datum, selectorPoint)) : []\n\n return selectedData.map((datum) => {\n const y = encoding[0]?.y?.[0]\n if (!y) {\n return {}\n }\n return generateOneMarkLine(datum[y] as string)\n })\n }) as IMarkLineSpec[]\n const specMarkLine = ((spec as ILineChartSpec).markLine as IMarkLineSpec[]) || []\n const newMarkLine = [...specMarkLine, ...(markLine || [])]\n return {\n ...spec,\n markLine: newMarkLine,\n }\n}\n","import type { ICartesianSeries, ILineChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, SpecPipe } from 'src/types'\nimport { isSubset } from './utils'\nimport { ANNOTATION_Z_INDEX } from '../../../../utils/constant'\n\nexport const annotationArea: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { annotation } = advancedVSeed\n\n if (!annotation || !annotation.annotationArea) {\n return spec\n }\n\n const { annotationArea } = annotation\n const annotationAreaList = Array.isArray(annotationArea) ? annotationArea : [annotationArea]\n\n const positionMap = {\n top: 'insideTop',\n topRight: 'insideTopRight',\n topLeft: 'insideTopLeft',\n bottom: 'insideBottom',\n bottomLeft: 'insideBottomLeft',\n bottomRight: 'insideBottomRight',\n left: 'insideLeft',\n right: 'insideRight',\n }\n\n const markArea = annotationAreaList.flatMap((annotationArea) => {\n const {\n selector: selectorPoint,\n text = '',\n textPosition = 'top',\n textColor = '#ffffff',\n textFontSize = 12,\n textFontWeight = 400,\n textAlign = 'center',\n textBaseline = 'top',\n\n textBackgroundVisible = true,\n textBackgroundColor = '#191d24',\n textBackgroundBorderColor = '#191d24',\n textBackgroundBorderWidth = 1,\n textBackgroundBorderRadius = 4,\n textBackgroundPadding = 4,\n\n areaColor = '#888888',\n areaColorOpacity = 0.15,\n areaBorderColor = '#888888',\n areaBorderRadius = 4,\n areaBorderWidth = 1,\n\n outerPadding = 4,\n offsetX = 0,\n offsetY = 0,\n } = annotationArea\n\n const dataset = advancedVSeed.dataset.flat()\n const selectedData = selectorPoint ? dataset.filter((datum) => selector(datum, selectorPoint)) : []\n\n const labelPosition = positionMap[textPosition || 'top']\n const isBottom = labelPosition.toLocaleLowerCase().includes('bottom')\n\n return {\n zIndex: ANNOTATION_Z_INDEX,\n regionRelative: true,\n offsetX,\n offsetY,\n positions: (data: Datum[], context: ICartesianSeries) => {\n const positionData = data.filter((item) => selectedData.some((datum) => isSubset(datum, item)))\n const xyList = positionData.map((datum) => context.dataToPosition(datum) as { x: number; y: number })\n\n const yAxisHelper = context.getYAxisHelper() as unknown as {\n getBandwidth: (depth?: number) => number\n getScale: () => {\n range: () => number[]\n }\n }\n const xAxisHelper = context.getXAxisHelper() as unknown as {\n getBandwidth: (depth?: number) => number\n getScale: () => {\n range: () => number[]\n }\n }\n\n if (typeof xAxisHelper?.getBandwidth === 'function') {\n const yScale = yAxisHelper.getScale()\n\n const minX = Math.min(...xyList.map((item) => item.x)) - (outerPadding || 4)\n const maxX = Math.max(...xyList.map((item) => item.x)) + (outerPadding || 4)\n const minY = Math.min(...yScale.range())\n const maxY = Math.max(...yScale.range())\n return [\n // 左上\n {\n x: minX,\n y: minY,\n },\n // 右上\n {\n x: maxX,\n y: minY,\n },\n // 右下\n {\n x: maxX,\n y: maxY,\n },\n // 左下\n {\n x: minX,\n y: maxY,\n },\n ]\n }\n\n if (typeof yAxisHelper?.getBandwidth === 'function') {\n const xScale = xAxisHelper.getScale()\n\n const minY = Math.min(...xyList.map((item) => item.y)) - (outerPadding || 4)\n const maxY = Math.max(...xyList.map((item) => item.y)) + (outerPadding || 4)\n const minX = Math.min(...xScale.range())\n const maxX = Math.max(...xScale.range())\n\n return [\n // 左上\n {\n x: minX,\n y: minY,\n },\n // 右上\n {\n x: maxX,\n y: minY,\n },\n // 右下\n {\n x: maxX,\n y: maxY,\n },\n // 左下\n {\n x: minX,\n y: maxY,\n },\n ]\n }\n\n return []\n },\n label: {\n position: labelPosition,\n visible: true,\n text: text,\n style: {\n dy: isBottom ? -(textFontSize || 12) * 2 : textFontSize,\n textAlign: textAlign,\n textBaseline: textBaseline,\n fill: textColor,\n stroke: textBackgroundColor,\n lineWidth: 1,\n fontSize: textFontSize,\n fontWeight: textFontWeight,\n },\n\n labelBackground: {\n visible: textBackgroundVisible,\n padding: textBackgroundPadding,\n style: {\n dy: isBottom ? -(textFontSize || 12) * 2 : textFontSize,\n cornerRadius: textBackgroundBorderRadius ?? 4,\n fill: textBackgroundColor,\n stroke: textBackgroundBorderColor,\n lineWidth: textBackgroundBorderWidth,\n },\n },\n },\n area: {\n style: {\n visible: true,\n fill: areaColor,\n fillOpacity: areaColorOpacity,\n stroke: areaBorderColor,\n lineWidth: areaBorderWidth,\n cornerRadius: areaBorderRadius,\n },\n },\n }\n }) as ILineChartSpec['markArea']\n\n return {\n ...spec,\n markArea: markArea,\n }\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { SpecPipe } from 'src/types'\n\nexport const initPivot: SpecPipe = (spec) => {\n const result = { ...spec } as PivotChartConstructorOptions\n\n return {\n ...result,\n animation: true,\n rows: [],\n columns: [],\n indicators: [],\n records: [],\n widthMode: 'adaptive',\n heightMode: 'adaptive',\n indicatorsAsCol: false,\n }\n}\n\nexport const pivotIndicatorsAsRow: SpecPipe = (spec) => {\n const result = { ...spec } as PivotChartConstructorOptions\n\n return {\n ...result,\n indicatorsAsCol: false,\n }\n}\n\nexport const pivotIndicatorsAsCol: SpecPipe = (spec) => {\n const result = { ...spec } as PivotChartConstructorOptions\n\n return {\n ...result,\n indicatorsAsCol: true,\n }\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { SpecPipe } from 'src/types'\n\nexport const pivotGridStyle: SpecPipe = (spec) => {\n const result = { ...spec } as PivotChartConstructorOptions\n const transparent = 'rgba(0,0,0,0)'\n\n const hoverBackgroundColor = 'rgba(178,186,207, 0.2)'\n return {\n ...result,\n theme: {\n underlayBackgroundColor: transparent,\n bodyStyle: {\n borderColor: 'rgba(0,4,20,0.2)',\n borderLineWidth: [0, 0, 2, 0],\n bgColor: transparent,\n padding: [0, 0, 1, 0],\n hover: {\n cellBgColor: 'transparent',\n },\n },\n headerStyle: {\n borderColor: 'rgba(0,4,20,0.2)',\n fontSize: 12,\n color: '#333333',\n textAlign: 'center',\n borderLineWidth: 0,\n bgColor: transparent,\n hover: {\n cellBgColor: hoverBackgroundColor,\n },\n },\n rowHeaderStyle: {\n borderColor: 'rgba(0,4,20,0.2)',\n fontSize: 12,\n color: '#333333',\n borderLineWidth: 0,\n bgColor: transparent,\n hover: {\n cellBgColor: hoverBackgroundColor,\n },\n },\n cornerHeaderStyle: {\n borderColor: 'rgba(0,4,20,0.2)',\n textAlign: 'center',\n fontSize: 12,\n color: '#333333',\n fontWeight: 'bold',\n borderLineWidth: [0, 0, 0, 0],\n bgColor: transparent,\n hover: {\n cellBgColor: hoverBackgroundColor,\n },\n },\n cornerRightTopCellStyle: {\n borderColor: 'rgba(0,4,20,0.2)',\n borderLineWidth: 0,\n bgColor: transparent,\n hover: {\n cellBgColor: hoverBackgroundColor,\n },\n },\n cornerLeftBottomCellStyle: {\n borderColor: 'rgba(0,4,20,0.2)',\n borderLineWidth: 0,\n bgColor: transparent,\n hover: {\n cellBgColor: hoverBackgroundColor,\n },\n },\n cornerRightBottomCellStyle: {\n borderColor: 'rgba(0,4,20,0.2)',\n borderLineWidth: 0,\n bgColor: transparent,\n hover: {\n cellBgColor: hoverBackgroundColor,\n },\n },\n rightFrozenStyle: {\n borderColor: 'rgba(0,4,20,0.2)',\n borderLineWidth: 0,\n bgColor: transparent,\n hover: {\n cellBgColor: hoverBackgroundColor,\n },\n },\n bottomFrozenStyle: {\n borderColor: 'rgba(0,4,20,0.2)',\n borderLineWidth: 0,\n bgColor: transparent,\n hover: {\n cellBgColor: hoverBackgroundColor,\n },\n },\n selectionStyle: {\n cellBgColor: '',\n cellBorderColor: '',\n },\n frameStyle: {\n borderLineWidth: 0,\n bgColor: transparent,\n },\n },\n }\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport { execPipeline } from '../../../../utils'\nimport type { SpecPipe, SpecPipeline, SpecPipelineContext } from 'src/types'\nimport { unique } from 'remeda'\n\nexport const pivotIndicators =\n (chartPipeline: SpecPipeline): SpecPipe =>\n (spec, context) => {\n const result = { ...spec } as PivotChartConstructorOptions\n const { advancedVSeed } = context\n const { measures, datasetReshapeInfo, encoding } = advancedVSeed\n\n const colorItems = unique(datasetReshapeInfo.flatMap((d) => d.unfoldInfo.colorItems))\n\n const indicators = datasetReshapeInfo.map((reshapeInfo, index) => {\n const measure = measures?.find((d) => d.id === reshapeInfo.id)\n\n const newEncoding = [encoding[index]]\n const newDatasetReshapeInfo = [\n {\n ...reshapeInfo,\n unfoldInfo: { ...reshapeInfo.unfoldInfo, colorItems },\n },\n ]\n const newContext: SpecPipelineContext = {\n ...context,\n advancedVSeed: {\n ...advancedVSeed,\n datasetReshapeInfo: newDatasetReshapeInfo,\n encoding: newEncoding,\n },\n }\n\n const chartSpec = execPipeline(chartPipeline, newContext, {})\n return {\n indicatorKey: reshapeInfo.id,\n title: measure?.alias,\n cellType: 'chart',\n chartModule: 'vchart',\n chartSpec: chartSpec,\n style: {\n padding: [1, 1, 0, 1],\n },\n }\n })\n\n return {\n ...result,\n indicators: indicators,\n } as PivotChartConstructorOptions\n }\n\nexport const pivotIndicatorsAsRow: SpecPipe = (spec) => {\n const result = { ...spec } as PivotChartConstructorOptions\n\n return {\n ...result,\n indicatorsAsCol: false,\n }\n}\n\nexport const pivotIndicatorsAsCol: SpecPipe = (spec) => {\n const result = { ...spec } as PivotChartConstructorOptions\n\n return {\n ...result,\n indicatorsAsCol: true,\n }\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { SpecPipe } from 'src/types'\n\nexport const datasetPivot: SpecPipe = (spec, context) => {\n const result = { ...spec } as PivotChartConstructorOptions\n const { advancedVSeed } = context\n const { dataset, datasetReshapeInfo } = advancedVSeed\n const records = dataset.reduce((pre, cur, index) => {\n const id = datasetReshapeInfo[index].id\n pre[id] = cur\n return pre\n }, {})\n return {\n ...result,\n records: records,\n } as PivotChartConstructorOptions\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { IBasicDimension } from '@visactor/vtable/es/ts-types/pivot-table/dimension/basic-dimension'\nimport type { Dimensions, SpecPipe } from 'src/types'\n\nexport const pivotRowDimensions: SpecPipe = (spec, context) => {\n const result = { ...spec } as PivotChartConstructorOptions\n const { advancedVSeed } = context\n const dimensions = advancedVSeed.dimensions as Dimensions\n if (!dimensions) {\n return result\n }\n const rowDimensions = dimensions.filter((dim) => dim.location === 'rowDimension')\n const rows: IBasicDimension[] = rowDimensions.map((dim) => ({\n dimensionKey: dim.id,\n title: dim.alias || dim.id,\n }))\n return {\n ...result,\n rows: rows,\n }\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { IBasicDimension } from '@visactor/vtable/es/ts-types/pivot-table/dimension/basic-dimension'\nimport type { Dimensions, SpecPipe } from 'src/types'\n\nexport const pivotColumnDimensions: SpecPipe = (spec, context) => {\n const result = { ...spec } as PivotChartConstructorOptions\n const { advancedVSeed } = context\n const dimensions = advancedVSeed.dimensions as Dimensions\n\n if (!dimensions) {\n return result\n }\n const columnDimensions = dimensions.filter((dim) => dim.location === 'columnDimension')\n const columns: IBasicDimension[] = columnDimensions.map((dim) => ({\n dimensionKey: dim.id,\n title: dim.alias || dim.id,\n }))\n return {\n ...result,\n columns: columns,\n }\n}\n","import type { StringOrNumber } from '@visactor/vchart'\nimport type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { IDiscreteTableLegendOption } from '@visactor/vtable/es/ts-types/component/legend'\nimport { unique } from 'remeda'\nimport type { Color, Legend, SpecPipe } from 'src/types'\n\nexport const pivotDiscreteLegend: SpecPipe = (spec, context) => {\n const result = { ...spec } as PivotChartConstructorOptions\n const { advancedVSeed } = context\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { legend: Legend; color: Color }\n\n if (!baseConfig || !baseConfig.legend) {\n return result\n }\n\n const { datasetReshapeInfo } = advancedVSeed\n\n const colorItems = unique(\n datasetReshapeInfo.flatMap((d) => {\n return d.unfoldInfo.colorItems\n }),\n )\n\n const colorIdMap = datasetReshapeInfo.reduce<Record<string, string>>((prev, cur) => {\n return { ...prev, ...cur.unfoldInfo.colorIdMap }\n }, {})\n\n const { legend, color } = baseConfig\n const { colorScheme } = color\n\n const {\n enable,\n position = 'bottom',\n labelFontColor,\n labelFontSize = 12,\n labelFontWeight = 400,\n maxSize = 1,\n border,\n shapeType = 'rectRound',\n } = legend || {}\n\n const orient = ['bottom', 'bottomLeft', 'bottomRight', 'bl', 'br'].includes(position)\n ? 'bottom'\n : ['top', 'topLeft', 'topRight', 'tl', 'tr'].includes(position)\n ? 'top'\n : ['left', 'leftTop', 'leftBottom', 'lt', 'lb'].includes(position)\n ? 'left'\n : 'right'\n\n const legendPosition = ['topLeft', 'bottomLeft', 'leftTop', 'rightTop', 'lt', 'rt', 'tl', 'bl'].includes(position)\n ? 'start'\n : ['topRight', 'bottomRight', 'leftBottom', 'rightBottom', 'lb', 'rb', 'rt', 'br'].includes(position)\n ? 'end'\n : 'middle'\n\n const legends: IDiscreteTableLegendOption = {\n visible: enable,\n type: 'discrete',\n orient,\n position: legendPosition,\n maxCol: Math.max(1, maxSize),\n maxRow: Math.max(1, maxSize),\n data: colorItems.map((d, index) => ({\n label: d,\n shape: {\n outerBorder: border\n ? {\n stroke: colorScheme?.[index],\n distance: 3,\n lineWidth: 1,\n }\n : undefined,\n fill: colorScheme?.[index],\n },\n })),\n\n item: {\n focus: true,\n maxWidth: '30%',\n focusIconStyle: {\n size: labelFontSize + 2,\n fill: labelFontColor,\n fontWeight: labelFontWeight,\n },\n shape: {\n space: border ? 6 : 4,\n style: {\n symbolType: shapeType,\n size: border ? 8 : 10,\n },\n },\n label: {\n formatMethod: (value: StringOrNumber) => {\n return colorIdMap[String(value)] ?? value\n },\n style: {\n fontSize: labelFontSize,\n fill: labelFontColor,\n fontWeight: labelFontWeight,\n },\n },\n background: {\n state: {\n selectedHover: {\n fill: labelFontColor,\n fillOpacity: 0.05,\n },\n },\n },\n },\n } as unknown as IDiscreteTableLegendOption\n return { ...result, legends }\n}\n","import type { Spec, SpecPipe, SpecPipeline, SpecPipelineContext } from 'src/types'\nimport { execPipeline, isPivotChart } from '../../../../utils'\n\nexport const pivotAdapter = (pipeline: SpecPipeline, pivotPipeline: SpecPipeline): SpecPipe => {\n return (spec, context) => {\n const { vseed } = context\n const usePivotChart = isPivotChart(vseed)\n\n if (usePivotChart) {\n return execPipeline<Spec, SpecPipelineContext>(pivotPipeline, context, spec)\n }\n\n return execPipeline<Spec, SpecPipelineContext>(pipeline, context, spec)\n }\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n xBand,\n yLinear,\n initLine,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n initPivot,\n datasetPivot,\n pivotDiscreteLegend,\n pivotIndicators,\n pivotAdapter,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n pointStyle,\n lineStyle,\n verticalCrosshairLine,\n pointStateDimensionHover,\n progressive,\n} from '../pipes'\n\nconst line: SpecPipeline = [\n initLine,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairLine,\n discreteLegend,\n pointStyle,\n pointStateDimensionHover,\n lineStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotLine: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initLine,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairLine,\n pointStyle,\n pointStateDimensionHover,\n lineStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const lineSpecPipeline: SpecPipeline = [pivotAdapter(line, pivotLine)]\n","import { lineAdvancedPipeline, lineSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerLine = () => {\n Builder._advancedPipelineMap['line'] = lineAdvancedPipeline\n Builder._specPipelineMap['line'] = lineSpecPipeline\n}","import type { Dataset, Dimension, FoldInfo, Measure, UnfoldInfo } from 'src/types'\nimport { foldMeasures } from './foldMeasures'\nimport {\n UnfoldDimensionGroup,\n FoldMeasureId,\n FoldMeasureName,\n FoldMeasureValue,\n UnfoldDimensionGroupId,\n} from './constant'\nimport { unfoldDimensions } from './unfoldDimensions'\nimport { i18n } from '../i18n'\n\nconst emptyReshapeResult: {\n dataset: Dataset\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n} = {\n dataset: [],\n foldInfo: {\n foldMap: {},\n measureId: '',\n measureName: '',\n measureValue: '',\n },\n unfoldInfo: {\n groupName: '',\n groupId: '',\n colorItems: [],\n colorIdMap: {},\n },\n}\n/**\n * 数据重塑为2个维度1个指标\n * @param dataset\n * @param dimensions\n * @param measures\n * @returns\n */\nexport const dataReshapeFor2D1M = (\n dataset: Dataset,\n dimensions: Dimension[],\n measures: Measure[],\n options?: {\n foldMeasureId?: string\n foldMeasureName?: string\n foldMeasureValue?: string\n unfoldDimensionGroup?: string\n unfoldDimensionGroupId?: string\n },\n): {\n dataset: Dataset\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n} => {\n const {\n foldMeasureId = FoldMeasureId,\n foldMeasureName = FoldMeasureName,\n foldMeasureValue = FoldMeasureValue,\n unfoldDimensionGroup = UnfoldDimensionGroup,\n unfoldDimensionGroupId = UnfoldDimensionGroupId,\n } = options || {}\n if (dimensions.length === 0 && measures.length === 0) {\n return emptyReshapeResult\n }\n\n // 合并所有指标为1个指标\n const { dataset: foldedDataset, foldInfo } = foldMeasures(\n dataset,\n measures,\n foldMeasureId,\n foldMeasureName,\n foldMeasureValue,\n )\n\n if (dimensions.length === 0) {\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(\n foldedDataset,\n [\n { id: foldMeasureId, alias: i18n`指标Id`, location: 'dimension' },\n { id: foldMeasureName, alias: i18n`指标名称`, location: 'dimension' },\n ],\n [{ id: foldMeasureValue, alias: i18n`指标值` }],\n 1,\n unfoldDimensionGroup,\n unfoldDimensionGroupId,\n foldMeasureId,\n )\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n } else {\n const onlyOneMeasure = measures.length === 1\n const onlyOneDimension = dimensions.length === 1\n\n const dims = [...dimensions]\n if (!onlyOneMeasure || onlyOneDimension) {\n dims.push({ id: foldMeasureName, alias: i18n`指标名称`, location: 'dimension' })\n }\n\n // 展开指定的维度为指标\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(\n foldedDataset,\n dims,\n [{ id: foldMeasureValue, alias: i18n`指标值` }],\n 1,\n unfoldDimensionGroup,\n unfoldDimensionGroupId,\n foldMeasureId,\n )\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n }\n}\n","import { dataReshapeFor2D1M } from 'src/dataReshape'\nimport type { AdvancedPipe } from 'src/types'\n\n/**\n * 数据重塑, 将任意维度、任意指标, 重塑为2个维度1个指标.\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const reshapeTo2D1M: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { dimensions, measures } = advancedVSeed\n\n if (!measures || !dimensions || !dataset) {\n return result\n }\n\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n\n const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor2D1M(dataset, dimensions, measures)\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: [\n {\n id: '2D1M',\n index: 0,\n foldInfo,\n unfoldInfo,\n },\n ],\n dimensions,\n measures,\n }\n}\n","import { FoldMeasureId, FoldMeasureName, FoldMeasureValue, UnfoldDimensionGroup } from 'src/dataReshape/constant'\nimport { dataReshapeFor2D1M } from 'src/dataReshape'\nimport type { AdvancedPipe, Dataset, DatasetReshapeInfo, Dimensions, MeasureGroup } from 'src/types'\n\n/**\n * 数据重塑为透视结构, 如果存在指标分组, 则将数据按组划分. 如果存在行列维度, 则生成行列树结构.\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const pivotReshapeTo2D1M: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { measures } = advancedVSeed\n const dimensions = advancedVSeed.dimensions as Dimensions\n\n if (!measures || !dimensions) {\n return result\n }\n\n const measureGroups: MeasureGroup[] = []\n if (measures) {\n measures.forEach((measure: MeasureGroup) => {\n if (measure.children && measure.children.length > 0) {\n measureGroups.push(measure)\n }\n })\n }\n const commonDimensions = dimensions.filter((dim) => dim.location === 'dimension')\n\n const newDatasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n measureGroups.forEach((measureGroup, index) => {\n const measures = measureGroup.children\n if (!measures) {\n return\n }\n const groupId = measureGroup.id\n const {\n dataset: newSubDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeFor2D1M(dataset, commonDimensions, measures, {\n foldMeasureId: FoldMeasureId,\n foldMeasureName: FoldMeasureName,\n foldMeasureValue: FoldMeasureValue + groupId,\n unfoldDimensionGroup: UnfoldDimensionGroup,\n })\n const reshapeInfo = {\n id: groupId,\n index,\n foldInfo,\n unfoldInfo,\n }\n newDatasets.push(newSubDataset)\n datasetReshapeInfo.push(reshapeInfo)\n })\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n encodingXY,\n initAdvancedVSeed,\n reshapeTo2D1M,\n theme,\n pivotAdapter,\n columnConfig,\n markStyle,\n annotation,\n pivotReshapeTo2D1M,\n sortXBandAxis,\n sortLegend,\n} from '../pipes'\n\nexport const columnAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingXY,\n sortXBandAxis,\n sortLegend,\n columnConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initColumn: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n\n result.type = 'bar'\n result.direction = 'vertical'\n result.xField = encoding[0].x[0]\n result.yField = encoding[0].y[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { SpecPipe, StackCornerRadius } from 'src/types'\n\nexport const stackCornerRadius: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const stackCornerRadius = advancedVSeed.config?.[chartType as 'column']?.stackCornerRadius as StackCornerRadius\n\n return {\n ...spec,\n stackCornerRadius,\n }\n}\n","import type { IAreaChartSpec, IBarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const stackInverse: SpecPipe = (spec) => {\n const result = { ...spec } as IAreaChartSpec | IBarChartSpec\n result.stackInverse = true\n return result\n}\n","import type { ICartesianCrosshairSpec, ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const verticalCrosshairRect: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n\n const config = advancedVSeed.config?.[chartType as 'column']?.crosshairRect\n if (!config) {\n return result\n }\n\n if (!result.crosshair) {\n result.crosshair = {}\n }\n\n const visible = config.visible || true\n const rectColor = config.rectColor || undefined\n const labelColor = config.labelColor || undefined\n const labelVisible = config.labelVisible || false\n const labelBackgroundColor = config.labelBackgroundColor || undefined\n\n const crosshair = result.crosshair as ICartesianCrosshairSpec\n crosshair.xField = {\n visible,\n line: {\n type: 'rect',\n style: {\n lineWidth: 0,\n opacity: 0.2,\n fill: rectColor,\n },\n },\n label: {\n visible: labelVisible,\n labelBackground: {\n visible: labelVisible,\n style: {\n fill: labelBackgroundColor,\n },\n },\n style: {\n fill: labelColor,\n },\n },\n }\n\n return result\n}\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { BarStyle, Datum, SpecPipe } from 'src/types'\n\nexport const barStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle, dataset = [] } = advancedVSeed\n const { barStyle } = markStyle\n\n const showStroke = dataset.length <= 100\n\n const result = {\n ...spec,\n bar: {\n style: {\n lineWidth: showStroke ? 1 : 0,\n },\n state: {\n hover: {\n fillOpacity: 0.6,\n },\n },\n },\n } as IBarChartSpec\n\n if (!barStyle) {\n return result\n }\n\n const barStyles = (Array.isArray(barStyle) ? barStyle : [barStyle]) as BarStyle[]\n\n const customMap = barStyles.reduce<object>((result, style, index) => {\n const { barBorderColor, barBorderStyle, barBorderWidth = 1, barColor, barColorOpacity, barRadius } = style\n\n const lineDash = barBorderStyle === 'dashed' ? [5, 2] : barBorderStyle === 'dotted' ? [2, 5] : [0, 0]\n return {\n ...result,\n [`custom${index + 1}`]: {\n // 优先级: 后者覆盖前者\n level: index + 1,\n filter: (datum: Datum) => {\n if (selector(datum, style.selector)) {\n return true\n }\n return false\n },\n style: {\n fill: barColor,\n fillOpacity: barColorOpacity,\n cornerRadius: barRadius,\n innerBorder: {\n stroke: barBorderColor,\n lineWidth: barBorderWidth,\n distance: (barBorderWidth || 0) / 2,\n lineDash: lineDash,\n },\n },\n },\n }\n }, {})\n\n return {\n ...result,\n bar: {\n state: {\n ...customMap,\n },\n },\n }\n}\n","import type { ICartesianSeries, ILineChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, SpecPipe } from 'src/types'\nimport { isSubset } from './utils'\nimport { ANNOTATION_Z_INDEX } from '../../../../utils/constant'\n\nexport const annotationAreaBand: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { annotation } = advancedVSeed\n\n if (!annotation || !annotation.annotationArea) {\n return spec\n }\n\n const { annotationArea } = annotation\n const annotationAreaList = Array.isArray(annotationArea) ? annotationArea : [annotationArea]\n\n const positionMap = {\n top: 'insideTop',\n topRight: 'insideTopRight',\n topLeft: 'insideTopLeft',\n bottom: 'insideBottom',\n bottomLeft: 'insideBottomLeft',\n bottomRight: 'insideBottomRight',\n left: 'insideLeft',\n right: 'insideRight',\n }\n\n const markArea = annotationAreaList.flatMap((annotationArea) => {\n const {\n selector: selectorPoint,\n text = '',\n textPosition = 'top',\n textColor = '#ffffff',\n textFontSize = 12,\n textFontWeight = 400,\n textAlign = 'center',\n textBaseline = 'top',\n\n textBackgroundVisible = true,\n textBackgroundColor = '#191d24',\n textBackgroundBorderColor = '#191d24',\n textBackgroundBorderWidth = 1,\n textBackgroundBorderRadius = 4,\n textBackgroundPadding = 4,\n\n areaColor = '#888888',\n areaColorOpacity = 0.15,\n areaBorderColor = '#888888',\n areaBorderRadius = 4,\n areaBorderWidth = 1,\n\n outerPadding = 4,\n offsetX = 0,\n offsetY = 0,\n } = annotationArea\n\n const dataset = advancedVSeed.dataset.flat()\n const selectedData = selectorPoint ? dataset.filter((datum) => selector(datum, selectorPoint)) : []\n\n return {\n zIndex: ANNOTATION_Z_INDEX,\n regionRelative: true,\n offsetX,\n offsetY,\n positions: (data: Datum[], context: ICartesianSeries) => {\n const positionData = data.filter((item) => selectedData.some((datum) => isSubset(datum, item)))\n const xyList = positionData.map((datum) => context.dataToPosition(datum) as { x: number; y: number })\n\n const yAxisHelper = context.getYAxisHelper() as unknown as {\n getBandwidth: (depth?: number) => number\n getScale: () => {\n range: () => number[]\n }\n }\n const xAxisHelper = context.getXAxisHelper() as unknown as {\n getBandwidth: (depth?: number) => number\n getScale: () => {\n range: () => number[]\n }\n }\n\n if (typeof xAxisHelper?.getBandwidth === 'function') {\n const depth = context.fieldX.length ?? 0\n const xBandWidth = xAxisHelper?.getBandwidth?.(depth - 1)\n const yScale = yAxisHelper.getScale()\n\n const minX = Math.min(...xyList.map((item) => item.x)) - (outerPadding || 4)\n const maxX = Math.max(...xyList.map((item) => item.x)) + xBandWidth + (outerPadding || 4)\n const minY = Math.min(...yScale.range())\n const maxY = Math.max(...yScale.range())\n\n return [\n // 左上\n {\n x: minX,\n y: minY,\n },\n // 右上\n {\n x: maxX,\n y: minY,\n },\n // 右下\n {\n x: maxX,\n y: maxY,\n },\n // 左下\n {\n x: minX,\n y: maxY,\n },\n ]\n }\n\n if (typeof yAxisHelper?.getBandwidth === 'function') {\n const depth = context.fieldY.length ?? 0\n const yBandWidth = yAxisHelper?.getBandwidth?.(depth - 1)\n const xScale = xAxisHelper.getScale()\n\n const minY = Math.min(...xyList.map((item) => item.y)) - (outerPadding || 4)\n const maxY = Math.max(...xyList.map((item) => item.y)) + yBandWidth + (outerPadding || 4)\n const minX = Math.min(...xScale.range())\n const maxX = Math.max(...xScale.range())\n\n return [\n // 左上\n {\n x: minX,\n y: minY,\n },\n // 右上\n {\n x: maxX,\n y: minY,\n },\n // 右下\n {\n x: maxX,\n y: maxY,\n },\n // 左下\n {\n x: minX,\n y: maxY,\n },\n ]\n }\n\n return []\n },\n label: {\n position: positionMap[textPosition || 'top'],\n visible: true,\n text: text,\n style: {\n dy: textFontSize,\n textAlign: textAlign,\n textBaseline: textBaseline,\n stroke: textBackgroundColor,\n lineWidth: 1,\n fill: textColor,\n fontSize: textFontSize,\n fontWeight: textFontWeight,\n },\n\n labelBackground: {\n visible: textBackgroundVisible,\n padding: textBackgroundPadding,\n style: {\n dy: textFontSize,\n cornerRadius: textBackgroundBorderRadius ?? 4,\n fill: textBackgroundColor,\n stroke: textBackgroundBorderColor,\n lineWidth: textBackgroundBorderWidth,\n },\n },\n },\n area: {\n style: {\n visible: true,\n fill: areaColor,\n fillOpacity: areaColorOpacity,\n stroke: areaBorderColor,\n lineWidth: areaBorderWidth,\n cornerRadius: areaBorderRadius,\n },\n },\n }\n }) as ILineChartSpec['markArea']\n\n return {\n ...spec,\n markArea: markArea,\n }\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n initColumn,\n datasetXY,\n xBand,\n yLinear,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n pivotAdapter,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n stackInverse,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n verticalCrosshairRect,\n stackCornerRadius,\n progressive,\n} from '../pipes'\n\nconst column: SpecPipeline = [\n initColumn,\n stackCornerRadius,\n stackInverse,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairRect,\n discreteLegend,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotColumn: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initColumn,\n stackCornerRadius,\n stackInverse,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairRect,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const columnSpecPipeline = [pivotAdapter(column, pivotColumn)]\n","import { columnAdvancedPipeline, columnSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerColumn = () => {\n Builder._advancedPipelineMap['column'] = columnAdvancedPipeline\n Builder._specPipelineMap['column'] = columnSpecPipeline\n}","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n encodingXY,\n initAdvancedVSeed,\n reshapeTo2D1M,\n theme,\n pivotAdapter,\n pivotReshapeTo2D1M,\n columnParallelConfig,\n markStyle,\n annotation,\n sortXBandAxis,\n sortLegend,\n} from '../pipes'\n\nexport const columnParallelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingXY,\n sortXBandAxis,\n sortLegend,\n columnParallelConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initColumnParallel: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { encoding, datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n\n result.type = 'bar'\n result.direction = 'vertical'\n result.xField = [encoding[0].x[0], unfoldInfo.groupId]\n result.yField = encoding[0].y[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n xBand,\n yLinear,\n initColumnParallel,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n pivotIndicators,\n initPivot,\n datasetPivot,\n pivotAdapter,\n pivotDiscreteLegend,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n verticalCrosshairRect,\n stackCornerRadius,\n progressive,\n} from '../pipes'\n\nconst columnParallel: SpecPipeline = [\n initColumnParallel,\n stackCornerRadius,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n discreteLegend,\n verticalCrosshairRect,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotColumnParallel: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initColumnParallel,\n stackCornerRadius,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairRect,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const columnParallelSpecPipeline: SpecPipeline = [pivotAdapter(columnParallel, pivotColumnParallel)]\n","import { columnParallelAdvancedPipeline, columnParallelSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerColumnParallel = () => {\n Builder._advancedPipelineMap['columnParallel'] = columnParallelAdvancedPipeline\n Builder._specPipelineMap['columnParallel'] = columnParallelSpecPipeline\n}","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n encodingXY,\n initAdvancedVSeed,\n theme,\n reshapeTo2D1M,\n pivotReshapeTo2D1M,\n pivotAdapter,\n columnPercentConfig,\n markStyle,\n annotation,\n sortXBandAxis,\n sortLegend,\n} from '../pipes'\n\nexport const columnPercentAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingXY,\n sortXBandAxis,\n sortLegend,\n columnPercentConfig,\n theme,\n markStyle,\n annotation,\n]\n","import { IAreaChartSpec, IBarChartSpec } from '@visactor/vchart'\nimport { SpecPipe } from 'src/types'\n\nexport const percent: SpecPipe = (spec, context) => {\n const result = { ...spec } as IAreaChartSpec | IBarChartSpec\n result.percent = true\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n initColumn,\n datasetXY,\n xBand,\n yLinear,\n percent,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n pivotAdapter,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n stackInverse,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n verticalCrosshairRect,\n stackCornerRadius,\n progressive,\n} from '../pipes'\n\nconst columnPercent: SpecPipeline = [\n initColumn,\n stackCornerRadius,\n stackInverse,\n color,\n backgroundColor,\n percent,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairRect,\n discreteLegend,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotColumnPercent: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initColumn,\n stackCornerRadius,\n stackInverse,\n color,\n percent,\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairRect,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const columnPercentSpecPipeline: SpecPipeline = [pivotAdapter(columnPercent, pivotColumnPercent)]\n","import { columnPercentAdvancedPipeline, columnPercentSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerColumnPercent = () => {\n Builder._advancedPipelineMap['columnPercent'] = columnPercentAdvancedPipeline\n Builder._specPipelineMap['columnPercent'] = columnPercentSpecPipeline\n}","import type { AdvancedPipe, Dimensions, FoldInfo, UnfoldInfo } from 'src/types'\nimport type { Encoding } from 'src/types'\n\nexport const encodingYX: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const { datasetReshapeInfo, dimensions } = advancedVSeed\n if (!datasetReshapeInfo || !dimensions) {\n return result\n }\n\n const yDimension =\n (dimensions as Dimensions).find(\n (item) => item.location !== 'rowDimension' && item.location !== 'columnDimension',\n ) || dimensions[0]\n\n const isZeroDimension = dimensions.length === 0\n\n const encoding = datasetReshapeInfo.reduce<Encoding>((prev, cur) => {\n const { foldInfo, unfoldInfo } = cur as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n const y = [isZeroDimension ? foldInfo.measureName : yDimension?.id]\n const x = [foldInfo.measureValue]\n const group = [unfoldInfo.groupId]\n const color = [foldInfo.measureName]\n\n return [\n ...prev,\n {\n x,\n y,\n group,\n color,\n },\n ] as Encoding\n }, [])\n\n return {\n ...result,\n encoding,\n }\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n encodingYX,\n theme,\n autoMeasures,\n autoDimensions,\n reshapeTo2D1M,\n pivotReshapeTo2D1M,\n pivotAdapter,\n barConfig,\n markStyle,\n annotation,\n sortYBandAxis,\n sortLegend,\n} from '../pipes'\n\nexport const barAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingYX,\n sortYBandAxis,\n sortLegend,\n barConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initBar: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n\n result.type = 'bar'\n result.direction = 'horizontal'\n result.yField = encoding[0].y?.[0]\n result.xField = encoding[0].x?.[0]\n result.seriesField = encoding[0].group?.[0]\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { isPivotChart } from 'src/pipeline/utils'\nimport type { SpecPipe } from 'src/types'\n\nexport const datasetYX: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { encoding, analysis, datasetReshapeInfo } = advancedVSeed\n const orderMapping = analysis?.orderMapping || {}\n const angle = encoding[0]?.angle?.[0]\n const y = encoding[0]?.y?.[0]\n const group = encoding[0]?.group?.[0]\n const id = datasetReshapeInfo[0].id\n\n const fields: Record<string, object> = {}\n if (angle) {\n fields[angle] = {\n sortIndex: 0,\n }\n }\n if (y) {\n const order = orderMapping[y]\n if (order) {\n fields[y] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[y] = {\n sortIndex: 0,\n }\n }\n }\n if (group) {\n const order = orderMapping[group]\n if (order) {\n fields[group] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[group] = {\n sortIndex: 0,\n }\n }\n }\n\n return {\n ...spec,\n data: {\n id,\n // 透视表不使用 dataValues\n values: isPivotChart(vseed) ? undefined : advancedVSeed.dataset,\n fields: fields,\n },\n } as ISpec\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { LINEAR_AXIS_INNER_OFFSET_TOP } from '../../../../utils/constant'\nimport type { SpecPipe, XLinearAxis } from 'src/types'\nimport { autoFormatter } from '../../../../utils'\n\nexport const xLinear: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { locale } = advancedVSeed\n const config = advancedVSeed.config?.[chartType as 'bar']?.xAxis as XLinearAxis\n\n if (!result.axes) {\n result.axes = []\n }\n\n if (!config) {\n result.axes = [\n ...result.axes,\n {\n visible: true,\n type: 'linear',\n orient: 'bottom',\n },\n ] as ISpec['axes']\n return result\n }\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n\n zero,\n nice,\n inverse,\n max,\n min,\n log,\n logBase = 10,\n } = config\n\n const linearAxis = {\n visible,\n type: log ? 'log' : 'linear',\n base: logBase,\n orient: 'bottom',\n nice,\n zero: log ? false : zero,\n inverse,\n max,\n min,\n label: {\n visible: label?.visible,\n formatMethod: (value: string) => {\n return autoFormatter(value, locale)\n },\n style: {\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n },\n title: {\n visible: title?.visible,\n text: title?.titleText,\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n innerOffset: {\n right: LINEAR_AXIS_INNER_OFFSET_TOP,\n // left: LINEAR_AXIS_INNER_OFFSET_TOP,\n },\n }\n\n result.axes = [...result.axes, linearAxis] as ISpec['axes']\n\n return result\n}\n","import type { ICartesianBandAxisSpec, ISpec } from '@visactor/vchart'\nimport type { SpecPipe, XBandAxis } from 'src/types'\n\nexport const yBand: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const config = advancedVSeed.config?.[chartType as 'bar']?.yAxis as XBandAxis\n\n if (!result.axes) {\n result.axes = []\n }\n\n if (!config) {\n result.axes = [\n ...result.axes,\n {\n visible: true,\n type: 'band',\n orient: 'left',\n },\n ] as ISpec['axes']\n return result\n }\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n labelAutoHide,\n labelAutoHideGap,\n labelAutoLimit,\n labelAutoLimitLength = 80,\n labelAutoRotate,\n labelAutoRotateAngleRange,\n } = config\n\n const sampling = !(labelAutoHide || labelAutoRotate || labelAutoLimit)\n\n const bandAxis = {\n visible,\n type: 'band',\n orient: 'left',\n maxWidth: labelAutoLimitLength + 60,\n sampling,\n hover: true,\n label: {\n visible: label?.visible,\n flush: true,\n containerAlign: 'right',\n space: 8,\n style: {\n maxLineWidth: labelAutoLimitLength,\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n // 防重叠相关\n minGap: labelAutoHideGap,\n autoHide: labelAutoHide,\n autoHideMethod: 'greedy',\n autoHideSeparation: labelAutoHideGap,\n autoLimit: labelAutoLimit,\n autoRotate: labelAutoRotate,\n autoRotateAngle: labelAutoRotateAngleRange,\n lastVisible: true,\n },\n title: {\n visible: title?.visible,\n text: title?.titleText,\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n paddingInner: [0.15, 0.1],\n paddingOuter: [0.075, 0.1],\n } as ICartesianBandAxisSpec\n\n result.axes = [...result.axes, bandAxis] as ISpec['axes']\n return result\n}\n","import type { ICartesianCrosshairSpec, ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const horizontalCrosshairRect: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n\n const config = advancedVSeed.config?.[chartType as 'column']?.crosshairRect\n if (!config) {\n return result\n }\n\n if (!result.crosshair) {\n result.crosshair = {}\n }\n\n const visible = config.visible || true\n const rectColor = config.rectColor || undefined\n const labelColor = config.labelColor || undefined\n const labelVisible = config.labelVisible || false\n const labelBackgroundColor = config.labelBackgroundColor || undefined\n\n const crosshair = result.crosshair as ICartesianCrosshairSpec\n crosshair.yField = {\n visible,\n line: {\n type: 'rect',\n style: {\n lineWidth: 0,\n opacity: 0.2,\n fill: rectColor,\n },\n },\n label: {\n visible: labelVisible,\n labelBackground: {\n visible: labelVisible,\n style: {\n fill: labelBackgroundColor,\n },\n },\n style: {\n fill: labelColor,\n },\n },\n }\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n initBar,\n datasetYX,\n xLinear,\n yBand,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n pivotAdapter,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotIndicatorsAsCol,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n horizontalCrosshairRect,\n stackCornerRadius,\n progressive,\n} from '../pipes'\n\nconst bar: SpecPipeline = [\n initBar,\n stackCornerRadius,\n color,\n backgroundColor,\n datasetYX,\n progressive,\n xLinear,\n yBand,\n label,\n tooltip,\n horizontalCrosshairRect,\n discreteLegend,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotBar: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsCol,\n datasetPivot,\n pivotIndicators([\n initBar,\n stackCornerRadius,\n color,\n backgroundColor,\n datasetYX,\n progressive,\n xLinear,\n yBand,\n label,\n label,\n tooltip,\n horizontalCrosshairRect,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const barSpecPipeline: SpecPipeline = [pivotAdapter(bar, pivotBar)]\n","import { barAdvancedPipeline, barSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerBar = () => {\n Builder._advancedPipelineMap['bar'] = barAdvancedPipeline\n Builder._specPipelineMap['bar'] = barSpecPipeline\n}","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n encodingYX,\n initAdvancedVSeed,\n reshapeTo2D1M,\n theme,\n pivotAdapter,\n pivotReshapeTo2D1M,\n barParallelConfig,\n markStyle,\n annotation,\n sortYBandAxis,\n sortLegend,\n} from '../pipes'\n\nexport const barParallelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingYX,\n sortYBandAxis,\n sortLegend,\n barParallelConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initBarParallel: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { encoding, datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n\n result.type = 'bar'\n result.direction = 'horizontal'\n result.yField = [encoding[0].y[0], unfoldInfo.groupId] as string[]\n result.xField = encoding[0].x[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetYX,\n xLinear,\n yBand,\n initBarParallel,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n initPivot,\n datasetPivot,\n pivotDiscreteLegend,\n pivotIndicators,\n pivotAdapter,\n pivotIndicatorsAsCol,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n horizontalCrosshairRect,\n stackCornerRadius,\n progressive,\n} from '../pipes'\n\nconst barParallel: SpecPipeline = [\n initBarParallel,\n stackCornerRadius,\n color,\n backgroundColor,\n datasetYX,\n progressive,\n xLinear,\n yBand,\n label,\n tooltip,\n horizontalCrosshairRect,\n discreteLegend,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotBarParallel: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsCol,\n datasetPivot,\n pivotIndicators([\n initBarParallel,\n stackCornerRadius,\n color,\n backgroundColor,\n datasetYX,\n xLinear,\n yBand,\n label,\n tooltip,\n horizontalCrosshairRect,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const barParallelSpecPipeline: SpecPipeline = [pivotAdapter(barParallel, pivotBarParallel)]\n","import { barParallelAdvancedPipeline, barParallelSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerBarParallel = () => {\n Builder._advancedPipelineMap['barParallel'] = barParallelAdvancedPipeline\n Builder._specPipelineMap['barParallel'] = barParallelSpecPipeline\n}","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n encodingYX,\n initAdvancedVSeed,\n reshapeTo2D1M,\n theme,\n pivotAdapter,\n pivotReshapeTo2D1M,\n barPercentConfig,\n markStyle,\n annotation,\n sortYBandAxis,\n sortLegend,\n} from '../pipes'\n\nexport const barPercentAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingYX,\n sortYBandAxis,\n sortLegend,\n barPercentConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { SpecPipeline } from 'src/types'\nimport {\n initBar,\n datasetYX,\n xLinear,\n yBand,\n percent,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n pivotAdapter,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotIndicatorsAsCol,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n horizontalCrosshairRect,\n stackCornerRadius,\n progressive,\n} from '../pipes'\n\nconst barPercent: SpecPipeline = [\n initBar,\n stackCornerRadius,\n color,\n backgroundColor,\n percent,\n datasetYX,\n progressive,\n xLinear,\n yBand,\n label,\n tooltip,\n horizontalCrosshairRect,\n discreteLegend,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotBarPercent: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsCol,\n datasetPivot,\n pivotIndicators([\n initBar,\n stackCornerRadius,\n color,\n backgroundColor,\n percent,\n datasetYX,\n yBand,\n xLinear,\n label,\n tooltip,\n horizontalCrosshairRect,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const barPercentSpecPipeline: SpecPipeline = [pivotAdapter(barPercent, pivotBarPercent)]\n","import { barPercentAdvancedPipeline, barPercentSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerBarPercent = () => {\n Builder._advancedPipelineMap['barPercent'] = barPercentAdvancedPipeline\n Builder._specPipelineMap['barPercent'] = barPercentSpecPipeline\n}","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n encodingXY,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n areaConfig,\n annotation,\n markStyle,\n sortXBandAxis,\n sortLegend,\n reshapeTo2D1M0Name,\n pivotReshapeTo2D1M0Name,\n} from '../pipes'\n\nexport const areaAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M0Name], [pivotReshapeTo2D1M0Name]),\n encodingXY,\n sortXBandAxis,\n sortLegend,\n areaConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IAreaChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initArea: SpecPipe = (spec, context) => {\n const result = { ...spec } as IAreaChartSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n\n result.type = 'area'\n result.direction = 'vertical'\n result.xField = encoding[0].x[0]\n result.yField = encoding[0].y[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { IAreaChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { AreaStyle, Datum, SpecPipe } from 'src/types'\nimport { groupBy } from 'remeda'\n\nexport const areaStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle, encoding, dataset } = advancedVSeed\n const { areaStyle } = markStyle\n\n if (!areaStyle) {\n return spec\n }\n const result = { ...spec } as IAreaChartSpec\n\n const areaStyles = (Array.isArray(areaStyle) ? areaStyle : [areaStyle]) as AreaStyle[]\n\n const group = encoding[0]?.group?.[0]\n const lineGroups = groupBy(dataset, (d) => d[group ?? ''] as string)\n\n const customMap = areaStyles.reduce<object>((result, style, index) => {\n const { areaColor, areaColorOpacity } = style\n\n return {\n ...result,\n [`custom${index + 1}`]: {\n // 优先级: 后者覆盖前者\n level: index + 1,\n filter: (datum: Datum) => {\n const lineData = lineGroups[datum[group ?? ''] as string]\n for (const d of lineData) {\n if (selector(d, style.selector)) {\n return true\n }\n }\n return false\n },\n style: {\n fill: areaColor,\n fillOpacity: areaColorOpacity,\n },\n },\n }\n }, {})\n\n return {\n ...result,\n area: {\n state: {\n ...customMap,\n },\n },\n }\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n xBand,\n yLinear,\n initArea,\n stackInverse,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotAdapter,\n initPivot,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n pointStyle,\n lineStyle,\n areaStyle,\n verticalCrosshairLine,\n pointStateDimensionHover,\n datasetXY,\n progressive,\n} from '../pipes'\n\nconst area: SpecPipeline = [\n initArea,\n stackInverse,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairLine,\n discreteLegend,\n pointStyle,\n pointStateDimensionHover,\n lineStyle,\n areaStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotArea: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initArea,\n color,\n backgroundColor,\n stackInverse,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairLine,\n pointStyle,\n pointStateDimensionHover,\n lineStyle,\n areaStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const areaSpecPipeline = [pivotAdapter(area, pivotArea)]\n","import { areaAdvancedPipeline, areaSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerArea = () => {\n Builder._advancedPipelineMap['area'] = areaAdvancedPipeline\n Builder._specPipelineMap['area'] = areaSpecPipeline\n}","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n encodingXY,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n areaPercentConfig,\n annotation,\n markStyle,\n sortXBandAxis,\n sortLegend,\n reshapeTo2D1M0Name,\n pivotReshapeTo2D1M0Name,\n} from '../pipes'\n\nexport const areaPercentAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M0Name], [pivotReshapeTo2D1M0Name]),\n encodingXY,\n sortXBandAxis,\n sortLegend,\n areaPercentConfig,\n theme,\n markStyle,\n annotation\n]\n","import type { SpecPipeline } from 'src/types'\nimport {\n percent,\n datasetXY,\n xBand,\n yLinear,\n initArea,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotAdapter,\n initPivot,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n stackInverse,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n pointStyle,\n lineStyle,\n areaStyle,\n verticalCrosshairLine,\n progressive,\n} from '../pipes'\n\nconst areaPercent: SpecPipeline = [\n initArea,\n stackInverse,\n color,\n backgroundColor,\n percent,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairLine,\n discreteLegend,\n pointStyle,\n lineStyle,\n areaStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotAreaPercent: SpecPipeline = [\n initPivot,\n\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initArea,\n stackInverse,\n color,\n backgroundColor,\n percent,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairLine,\n pointStyle,\n lineStyle,\n areaStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const areaPercentSpecPipeline = [pivotAdapter(areaPercent, pivotAreaPercent)]\n","import { areaPercentAdvancedPipeline, areaPercentSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerAreaPercent = () => {\n Builder._advancedPipelineMap['areaPercent'] = areaPercentAdvancedPipeline\n Builder._specPipelineMap['areaPercent'] = areaPercentSpecPipeline\n}","import { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Datum, MeasureGroup, MeasureTree } from 'src/types'\n\n/**\n * 自动处理指标, 如果超出了2个指标, 则按每2个指标一个组的逻辑维护\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const autoMeasuresBy2M1Group: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { measures, dataset } = vseed\n\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return result\n }\n\n if (measures) {\n result.measures = auto2M1Group(measures as MeasureTree)\n return result\n }\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n const newMeasures = Object.keys(sample)\n .filter((key) => {\n return top100dataset.some((item) => typeof item[key] === 'number') && !['', null, undefined].includes(key)\n })\n .map((measure) => ({\n id: measure,\n alias: measure,\n }))\n\n result.measures = auto2M1Group(newMeasures)\n return result\n}\n\nconst auto2M1Group = (measures: MeasureTree): MeasureTree => {\n const allMeasures = findAllMeasures(measures)\n\n if (allMeasures.length <= 2) {\n return allMeasures\n }\n\n const groups: MeasureTree = measures.filter((measure) => 'children' in measure)\n const singleMeasures = measures.filter((measure) => !('children' in measure))\n for (let i = 0; i < singleMeasures.length; i += 2) {\n const group = createEmptyMeasureGroup()\n group.children = allMeasures.slice(i, i + 2)\n groups.push(group)\n }\n return groups as MeasureGroup[]\n}\n\nconst createEmptyMeasureGroup = (): MeasureGroup => {\n return {\n id: '',\n alias: '',\n children: [],\n }\n}\n","import type { Dataset, Dimension, FoldInfo, Measure, UnfoldInfo } from 'src/types'\nimport {\n UnfoldDimensionGroup,\n FoldMeasureId,\n FoldMeasureName,\n FoldMeasureValue,\n UnfoldDimensionGroupId,\n} from './constant'\nimport { unfoldDimensions } from './unfoldDimensions'\nimport { i18n } from '../i18n'\n\nconst emptyReshapeResult = {\n dataset: [],\n foldInfo: {\n foldMap: {},\n measureId: '',\n measureName: '',\n measureValue: '',\n },\n unfoldInfo: {\n groupName: '',\n groupId: '',\n colorItems: [],\n colorIdMap: {},\n },\n}\n/**\n * 仅数据重塑为1个维度,不处理指标\n * @param dataset\n * @param dimensions\n * @param measures\n * @returns\n */\nexport const dataReshapeFor1D = (\n dataset: Dataset,\n dimensions: Dimension[],\n measures: Measure[],\n options?: {\n foldMeasureId?: string\n foldMeasureName?: string\n foldMeasureValue?: string\n unfoldDimensionGroup?: string\n unfoldDimensionGroupId?: string\n },\n): {\n dataset: Dataset\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n} => {\n const {\n foldMeasureId = FoldMeasureId,\n foldMeasureName = FoldMeasureName,\n foldMeasureValue = FoldMeasureValue,\n unfoldDimensionGroup = UnfoldDimensionGroup,\n unfoldDimensionGroupId = UnfoldDimensionGroupId,\n } = options || {}\n\n if (dimensions.length === 0 && measures.length === 0) {\n return emptyReshapeResult\n }\n\n if (dimensions.length === 0) {\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(\n dataset,\n [],\n [],\n 0,\n unfoldDimensionGroup,\n unfoldDimensionGroupId,\n foldMeasureId,\n )\n return {\n dataset: finalDataset,\n foldInfo: {\n foldMap: {},\n measureId: foldMeasureId,\n measureName: foldMeasureName,\n measureValue: foldMeasureValue,\n },\n unfoldInfo,\n }\n } else {\n // 展开指定的维度为指标\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(\n dataset,\n [...dimensions],\n [{ id: foldMeasureValue, alias: i18n`指标值` }],\n 0,\n unfoldDimensionGroup,\n unfoldDimensionGroupId,\n foldMeasureId,\n )\n return {\n dataset: finalDataset,\n foldInfo: {\n foldMap: {},\n measureId: foldMeasureId,\n measureName: foldMeasureName,\n measureValue: foldMeasureValue,\n },\n unfoldInfo,\n }\n }\n}\n","import { dataReshapeFor1D } from 'src/dataReshape'\nimport type { AdvancedPipe } from 'src/types'\n\n/**\n * 数据重塑, 将任意维度、任意指标, 重塑为1个维度2个指标.\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const reshapeTo1D: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { dimensions, measures } = advancedVSeed\n if (!measures || !dimensions || !dataset) {\n return result\n }\n\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n\n const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor1D(dataset, dimensions, measures)\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: [\n {\n id: '1D2M',\n index: 0,\n foldInfo,\n unfoldInfo,\n },\n ],\n }\n}\n","import { FoldMeasureId, FoldMeasureName, FoldMeasureValue, UnfoldDimensionGroup } from 'src/dataReshape/constant'\nimport { dataReshapeFor1D } from 'src/dataReshape'\nimport type { AdvancedPipe, Dataset, DatasetReshapeInfo, Dimensions, MeasureGroup } from 'src/types'\n\n/**\n * 数据重塑为透视结构, 如果存在指标分组, 则将数据按组划分\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const pivotReshapeTo1D: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { measures } = advancedVSeed\n const dimensions = advancedVSeed.dimensions as Dimensions\n\n if (!measures || !dimensions) {\n return result\n }\n\n const measureGroups: MeasureGroup[] = []\n if (measures) {\n measures.forEach((measure: MeasureGroup) => {\n if (measure.children && measure.children.length > 0) {\n measureGroups.push(measure)\n }\n })\n }\n const newDatasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n measureGroups.forEach((measureGroup, index) => {\n const measures = measureGroup.children\n if (!measures) {\n return\n }\n\n const commonDimensions = dimensions.filter((dim) => dim.location === 'dimension')\n const groupId = measureGroup.id\n const {\n dataset: newSubDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeFor1D(dataset, commonDimensions, measures, {\n foldMeasureId: FoldMeasureId,\n foldMeasureName: FoldMeasureName,\n foldMeasureValue: FoldMeasureValue + groupId,\n unfoldDimensionGroup: UnfoldDimensionGroup,\n })\n const reshapeInfo = {\n id: groupId,\n index,\n foldInfo,\n unfoldInfo,\n }\n newDatasets.push(newSubDataset)\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n","import type { AdvancedPipe, FoldInfo, UnfoldInfo } from 'src/types'\nimport type { Encoding } from 'src/types'\n\nexport const encodingAreaRange: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const { datasetReshapeInfo, measures } = advancedVSeed\n if (!datasetReshapeInfo || !measures) {\n return result\n }\n\n const encoding = datasetReshapeInfo.reduce<Encoding>((prev, cur, index) => {\n const measure = measures[index]\n if ('children' in measure) {\n const m1 = measure.children?.[0]\n const m2 = measure.children?.[1] || m1\n const { foldInfo, unfoldInfo } = cur as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n const x = [unfoldInfo.groupId]\n const y = [m1?.id, m2?.id]\n const group = [unfoldInfo.groupId]\n const color = [foldInfo.measureName]\n\n return [\n ...prev,\n {\n x,\n y,\n group,\n color,\n },\n ] as Encoding\n } else {\n const m1 = measures[index]\n const m2 = measures[index + 1] || m1\n const { foldInfo, unfoldInfo } = cur as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n const x = [unfoldInfo.groupId]\n const y = [m1.id, m2.id]\n const group = [unfoldInfo.groupId]\n const color = [foldInfo.measureName]\n\n return [\n ...prev,\n {\n x,\n y,\n group,\n color,\n },\n ] as Encoding\n }\n }, [])\n\n return {\n ...result,\n encoding,\n }\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n areaConfig,\n annotation,\n sortXBandAxis,\n autoMeasuresBy2M1Group,\n encodingAreaRange,\n reshapeTo1D,\n pivotReshapeTo1D,\n markStyle,\n} from '../pipes'\n\nexport const areaRangeAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasuresBy2M1Group,\n autoDimensions,\n pivotAdapter([reshapeTo1D], [pivotReshapeTo1D]),\n encodingAreaRange,\n sortXBandAxis,\n areaConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { Spec, SpecPipe, SpecPipeline, SpecPipelineContext } from 'src/types'\nimport { execPipeline } from '../../../../utils'\nimport type { ICommonChartSpec, ILineSeriesSpec } from '@visactor/vchart'\n\nexport const series = (...args: SpecPipeline[]): SpecPipe => {\n const result = {\n type: 'common',\n padding: 0,\n region: [\n {\n clip: true,\n },\n ],\n } as ICommonChartSpec\n\n return (_, context) => {\n result.series = args.map((pipeline) => {\n return execPipeline<Spec, SpecPipelineContext>(pipeline, context, {})\n }) as ILineSeriesSpec[]\n\n return result\n }\n}\n\nexport const seriesDualAxis = (...args: SpecPipeline[]): SpecPipe => {\n const result = {\n type: 'common',\n padding: 0,\n region: [\n {\n clip: true,\n },\n ],\n } as ICommonChartSpec\n\n const createDualContext = <T extends SpecPipelineContext>(context: T, index: number): T => {\n const { advancedVSeed } = context\n const dataset = advancedVSeed.dataset[index]\n return {\n ...context,\n advancedVSeed: {\n ...advancedVSeed,\n dataset: dataset,\n },\n }\n }\n\n return (_, context) => {\n result.series = args.map((pipeline, index) => {\n const seriesContext = createDualContext(context, index)\n return execPipeline<Spec, SpecPipelineContext>(pipeline, seriesContext, {})\n }) as ILineSeriesSpec[]\n\n return result\n }\n}\n","import type { ILineSeriesSpec, IRangeAreaSeriesSpec } from '@visactor/vchart'\nimport type { Color, SpecPipe } from 'src/types'\n\nexport const initAreaRange: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRangeAreaSeriesSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n const { color } = advancedVSeed.config.areaRange as {\n color: Color\n }\n\n result.type = 'rangeArea'\n result.direction = 'vertical'\n result.stack = false\n result.xField = encoding[0].x[0]\n result.yField = [encoding[0].y[0], encoding[0].y[1]]\n\n result.animation = true\n result.area = {\n style: {\n fill: color.colorScheme?.[0],\n },\n }\n\n return result\n}\n\nexport const initAreaRangeLine1: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineSeriesSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n const { color } = advancedVSeed.config.areaRange as {\n color: Color\n }\n result.type = 'line'\n result.direction = 'vertical'\n result.stack = false\n result.xField = encoding[0].x[0]\n result.yField = [encoding[0].y[0]]\n\n result.animation = true\n result.line = {\n style: {\n stroke: color.colorScheme?.[0],\n },\n }\n result.point = {\n style: {\n visible: false,\n fill: color.colorScheme?.[0],\n },\n }\n return result\n}\n\nexport const initAreaRangeLine2: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineSeriesSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n const { color } = advancedVSeed.config.areaRange as {\n color: Color\n }\n result.type = 'line'\n result.direction = 'vertical'\n result.stack = false\n result.xField = encoding[0].x[0]\n result.yField = [encoding[0].y[1]]\n\n result.animation = true\n result.line = {\n style: {\n stroke: color.colorScheme?.[0],\n },\n }\n result.point = {\n style: {\n visible: false,\n fill: color.colorScheme?.[0],\n },\n }\n return result\n}\n","import type { SpecPipe } from 'src/types'\n\nexport const tooltipDisable: SpecPipe = (spec) => {\n const result = { ...spec }\n\n result.tooltip = {\n visible: false,\n }\n return result\n}\n","import { isEmpty } from 'remeda'\nimport { autoFormatter, createFormatter, findMeasureById } from '../../../../utils'\nimport type { Datum, SpecPipe, Tooltip } from 'src/types'\n\nexport const tooltipAreaRange: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { measures, datasetReshapeInfo, chartType, locale, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n\n const { groupName } = datasetReshapeInfo[0].unfoldInfo\n\n const y = encoding[0]?.y || []\n\n result.tooltip = {\n visible: enable,\n\n dimension: {\n content: [\n {\n visible: true,\n key: (datum) => (datum && (datum[groupName] as string)) || '',\n value: (datum) => {\n if (!datum) {\n return ''\n }\n const text = y.map((id) => {\n const value = datum[id] as string | number\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n })\n return text.join(' ~ ')\n },\n shapeType: 'rectRound',\n },\n ...y.map((id: string) => {\n const measure = findMeasureById(measures, id)\n return {\n visible: true,\n key: measure?.alias || id,\n value: (datum: unknown) => {\n if (!datum) {\n return ''\n }\n const value = (datum as unknown as Datum)[id] as string | number\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n shapeType: 'rectRound',\n }\n }),\n ],\n },\n }\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n xBand,\n yLinear,\n backgroundColor,\n label,\n datasetPivot,\n pivotIndicators,\n pivotAdapter,\n initPivot,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n verticalCrosshairLine,\n initAreaRange,\n series,\n lineStyle,\n pointStyle,\n pointStateDimensionHover,\n areaStyle,\n progressive,\n tooltipAreaRange,\n tooltipDisable,\n} from '../pipes'\nimport { initAreaRangeLine1, initAreaRangeLine2 } from '../pipes/init/areaRange'\n\nconst areaRange: SpecPipeline = [\n series(\n [initAreaRange, areaStyle],\n [initAreaRangeLine1, lineStyle, pointStyle, pointStateDimensionHover, tooltipDisable],\n [initAreaRangeLine2, lineStyle, pointStyle, pointStateDimensionHover, tooltipDisable],\n ),\n datasetXY,\n progressive,\n backgroundColor,\n xBand,\n yLinear,\n label,\n tooltipAreaRange,\n verticalCrosshairLine,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotAreaRange: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n series(\n [initAreaRange, areaStyle],\n [initAreaRangeLine1, lineStyle, pointStyle, pointStateDimensionHover, tooltipDisable],\n [initAreaRangeLine2, lineStyle, pointStyle, pointStateDimensionHover, tooltipDisable],\n ),\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltipAreaRange,\n verticalCrosshairLine,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n]\n\nexport const areaRangeSpecPipeline = [pivotAdapter(areaRange, pivotAreaRange)]\n","import { areaRangeAdvancedPipeline, areaRangeSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerAreaRange = () => {\n Builder._advancedPipelineMap['areaRange'] = areaRangeAdvancedPipeline\n Builder._specPipelineMap['areaRange'] = areaRangeSpecPipeline\n}","import type { Dataset, Dimension, FoldInfo, Measure, UnfoldInfo } from 'src/types'\nimport { foldMeasures } from './foldMeasures'\nimport {\n UnfoldDimensionGroup,\n FoldMeasureId,\n FoldMeasureName,\n FoldMeasureValue,\n UnfoldDimensionGroupId,\n} from './constant'\nimport { unfoldDimensions } from './unfoldDimensions'\nimport { i18n } from '../i18n'\n\nconst emptyReshapeResult = {\n dataset: [],\n foldInfo: {\n foldMap: {},\n measureId: '',\n measureName: '',\n measureValue: '',\n },\n unfoldInfo: {\n groupName: '',\n groupId: '',\n colorItems: [],\n colorIdMap: {},\n },\n}\n/**\n * 数据重塑为1个维度1个指标\n * @param dataset\n * @param dimensions\n * @param measures\n * @returns\n */\nexport const dataReshapeFor1D2M = (\n dataset: Dataset,\n dimensions: Dimension[],\n measures: Measure[],\n options?: {\n foldMeasureId?: string\n foldMeasureName?: string\n foldMeasureValue?: string\n unfoldDimensionGroup?: string\n unfoldDimensionGroupId?: string\n },\n): {\n dataset: Dataset\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n} => {\n const {\n foldMeasureId = FoldMeasureId,\n foldMeasureName = FoldMeasureName,\n foldMeasureValue = FoldMeasureValue,\n unfoldDimensionGroup = UnfoldDimensionGroup,\n unfoldDimensionGroupId = UnfoldDimensionGroupId,\n } = options || {}\n\n if (dimensions.length === 0 && measures.length === 0) {\n return emptyReshapeResult\n }\n\n // 合并所有指标为1个指标\n const { dataset: foldedDataset, foldInfo } = foldMeasures(\n dataset,\n measures.length > 1 ? measures.slice(1) : measures,\n foldMeasureId,\n foldMeasureName,\n foldMeasureValue,\n )\n\n if (dimensions.length === 0) {\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(\n foldedDataset,\n [{ id: foldMeasureValue, alias: i18n`指标值`, location: 'dimension' }],\n [{ id: foldMeasureValue, alias: i18n`指标值` }],\n 0,\n unfoldDimensionGroup,\n unfoldDimensionGroupId,\n foldMeasureId,\n )\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n } else {\n // 展开指定的维度为指标\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(\n foldedDataset,\n [...dimensions],\n [{ id: foldMeasureValue, alias: i18n`指标值` }],\n 0,\n unfoldDimensionGroup,\n unfoldDimensionGroupId,\n foldMeasureId,\n )\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n }\n}\n","import { dataReshapeFor1D2M } from 'src/dataReshape'\nimport type { AdvancedPipe } from 'src/types'\n\n/**\n * 数据重塑, 将任意维度、任意指标, 重塑为1个维度2个指标.\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const reshapeTo1D2M: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { dimensions, measures } = advancedVSeed\n if (!measures || !dimensions || !dataset) {\n return result\n }\n\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n\n const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor1D2M(dataset, dimensions, measures)\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: [\n {\n id: '1D2M',\n index: 0,\n foldInfo,\n unfoldInfo,\n },\n ],\n }\n}\n","import { FoldMeasureId, FoldMeasureName, FoldMeasureValue, UnfoldDimensionGroup } from 'src/dataReshape/constant'\nimport { dataReshapeFor1D2M } from 'src/dataReshape'\nimport type { AdvancedPipe, Dataset, DatasetReshapeInfo, Dimensions, MeasureGroup } from 'src/types'\n\n/**\n * 数据重塑为透视结构, 如果存在指标分组, 则将数据按组划分. 如果存在行列维度, 则生成行列树结构.\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const pivotReshapeTo1D2M: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { measures } = advancedVSeed\n const dimensions = advancedVSeed.dimensions as Dimensions\n\n if (!measures || !dimensions) {\n return result\n }\n\n const measureGroups: MeasureGroup[] = []\n if (measures) {\n measures.forEach((measure: MeasureGroup) => {\n if (measure.children && measure.children.length > 0) {\n measureGroups.push(measure)\n }\n })\n }\n const newDatasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n measureGroups.forEach((measureGroup, index) => {\n const measures = measureGroup.children\n if (!measures) {\n return\n }\n\n const commonDimensions = dimensions.filter((dim) => dim.location === 'dimension')\n const groupId = measureGroup.id\n const {\n dataset: newSubDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeFor1D2M(dataset, commonDimensions, measures, {\n foldMeasureId: FoldMeasureId,\n foldMeasureName: FoldMeasureName,\n foldMeasureValue: FoldMeasureValue + groupId,\n unfoldDimensionGroup: UnfoldDimensionGroup,\n })\n const reshapeInfo = {\n id: groupId,\n index,\n foldInfo,\n unfoldInfo,\n }\n newDatasets.push(newSubDataset)\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n","import { findFirstMeasure } from 'src/pipeline/utils'\nimport type { AdvancedPipe, FoldInfo, UnfoldInfo } from 'src/types'\nimport type { Encoding } from 'src/types'\n\nexport const encodingYY: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const { datasetReshapeInfo, measures } = advancedVSeed\n if (!datasetReshapeInfo || !measures) {\n return result\n }\n\n const firstMeasure = findFirstMeasure(measures)\n const encoding = datasetReshapeInfo.reduce<Encoding>((prev, cur) => {\n const { foldInfo, unfoldInfo } = cur as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n const x = [firstMeasure?.id]\n const y = [foldInfo.measureValue]\n const group = [unfoldInfo.groupId]\n const color = [unfoldInfo.groupId]\n\n return [\n ...prev,\n {\n x,\n y,\n group,\n color,\n },\n ] as Encoding\n }, [])\n\n return {\n ...result,\n encoding,\n }\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n annotation,\n markStyle,\n scatterConfig,\n reshapeTo1D2M,\n pivotReshapeTo1D2M,\n encodingYY,\n} from '../pipes'\n\nexport const scatterAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo1D2M], [pivotReshapeTo1D2M]),\n encodingYY,\n scatterConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IScatterChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initScatter: SpecPipe = (spec, context) => {\n const result = { ...spec } as IScatterChartSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n\n result.type = 'scatter'\n result.direction = 'vertical'\n result.xField = encoding[0].x[0]\n result.yField = encoding[0].y[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n","import type { ICartesianCrosshairSpec, ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const horizontalCrosshairLine: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n\n const config = advancedVSeed.config?.[chartType as 'line']?.crosshairLine\n if (!config) {\n return result\n }\n\n if (!result.crosshair) {\n result.crosshair = {}\n }\n\n const visible = config.visible || true\n const lineColor = config.lineColor || undefined\n const labelColor = config.labelColor || undefined\n const labelVisible = config.labelVisible || undefined\n const labelBackgroundColor = config.labelBackgroundColor || undefined\n\n const crosshair = result.crosshair as ICartesianCrosshairSpec\n crosshair.yField = {\n visible,\n line: {\n type: 'line',\n style: {\n lineWidth: 1,\n opacity: 1,\n stroke: lineColor,\n lineDash: [4, 2],\n },\n },\n label: {\n visible: labelVisible,\n labelBackground: {\n visible: labelVisible,\n style: {\n fill: labelBackgroundColor,\n },\n },\n style: {\n fill: labelColor,\n },\n },\n }\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n yLinear,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n initPivot,\n datasetPivot,\n pivotDiscreteLegend,\n pivotIndicators,\n pivotAdapter,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n pointStyle,\n verticalCrosshairLine,\n xLinear,\n horizontalCrosshairLine,\n pointStateHover,\n initScatter,\n progressive\n} from '../pipes'\n\nconst scatter: SpecPipeline = [\n initScatter,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n xLinear,\n yLinear,\n label,\n tooltip,\n verticalCrosshairLine,\n horizontalCrosshairLine,\n discreteLegend,\n pointStyle,\n pointStateHover,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotScatter: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initScatter,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n xLinear,\n yLinear,\n label,\n tooltip,\n verticalCrosshairLine,\n horizontalCrosshairLine,\n pointStyle,\n pointStateHover,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const scatterSpecPipeline: SpecPipeline = [pivotAdapter(scatter, pivotScatter)]\n","import { scatterAdvancedPipeline, scatterSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerScatter = () => {\n Builder._advancedPipelineMap['scatter'] = scatterAdvancedPipeline\n Builder._specPipelineMap['scatter'] = scatterSpecPipeline\n}","import { dataReshapeFor2D1M, FoldPrimaryMeasureValue, FoldSecondaryMeasureValue } from 'src/dataReshape'\nimport type { AdvancedPipe, Dimension, FoldInfo, MeasureGroup, UnfoldInfo } from 'src/types'\n\n/**\n * 数据重塑, 将任意维度、任意指标, 重塑为2个维度2个指标.\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const reshapeTo2D2M: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { dimensions, measures } = advancedVSeed\n\n if (!measures || !dimensions || !dataset) {\n return result\n }\n\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n if (measures.length > 2) {\n throw new Error('measures can not be more than 2')\n }\n\n const commonDimensions = dimensions.filter((dim) => (dim as Dimension).location === 'dimension')\n\n const datasets = []\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const primaryMeasures = measures[0] as MeasureGroup\n const secondaryMeasures = (measures[1] || []) as MeasureGroup\n\n if (primaryMeasures && primaryMeasures.children) {\n const {\n dataset: newDatasets,\n foldInfo,\n unfoldInfo,\n } = dataReshapeFor2D1M(dataset, commonDimensions, primaryMeasures.children, {\n foldMeasureValue: FoldPrimaryMeasureValue,\n })\n datasets.push(newDatasets)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n if (secondaryMeasures && secondaryMeasures.children) {\n const {\n dataset: newDatasets,\n foldInfo,\n unfoldInfo,\n } = dataReshapeFor2D1M(dataset, commonDimensions, secondaryMeasures.children, {\n foldMeasureValue: FoldSecondaryMeasureValue,\n })\n datasets.push(newDatasets)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n const unfoldInfo: UnfoldInfo = {\n groupName: unfoldInfoList[0].groupName,\n groupId: unfoldInfoList[0].groupId,\n colorItems: unfoldInfoList.flatMap((d) => d.colorItems),\n colorIdMap: unfoldInfoList.reduce((prev, cur) => ({ ...prev, ...cur.colorIdMap }), {}),\n }\n\n return {\n ...result,\n dataset: datasets,\n datasetReshapeInfo: [\n {\n id: '2D2M',\n index: 0,\n foldInfo: foldInfoList[0],\n foldInfoList: foldInfoList,\n unfoldInfo: unfoldInfo,\n },\n ],\n }\n}\n","import { dataReshapeFor2D1M, FoldPrimaryMeasureValue, FoldSecondaryMeasureValue } from 'src/dataReshape'\nimport type {\n AdvancedPipe,\n Dataset,\n DatasetReshapeInfo,\n Dimension,\n FoldInfo,\n MeasureGroup,\n UnfoldInfo,\n} from 'src/types'\n\n/**\n * 数据重塑, 将任意维度、任意指标, 重塑为2个维度2个指标.\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const pivotReshapeTo2D2M: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { dimensions, measures } = advancedVSeed\n\n if (!measures || !dimensions || !dataset) {\n return result\n }\n\n const commonDimensions = dimensions.filter((dim) => (dim as Dimension).location === 'dimension')\n\n const datasetList: Dataset[] = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n measures.forEach((measureGroup: MeasureGroup, index) => {\n const measures = measureGroup.children || []\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n if (measures.length > 2) {\n throw new Error('measures can not be more than 2')\n }\n\n const datasets = []\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const primaryMeasures = measures[0] as MeasureGroup\n const secondaryMeasures = (measures[1] || measures[0]) as MeasureGroup\n\n if (primaryMeasures && primaryMeasures.children) {\n const {\n dataset: newDatasets,\n foldInfo,\n unfoldInfo,\n } = dataReshapeFor2D1M(dataset, commonDimensions, primaryMeasures.children, {\n foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`,\n })\n datasets.push(newDatasets)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n if (secondaryMeasures && secondaryMeasures.children) {\n const {\n dataset: newDatasets,\n foldInfo,\n unfoldInfo,\n } = dataReshapeFor2D1M(dataset, commonDimensions, secondaryMeasures.children, {\n foldMeasureValue: `${FoldSecondaryMeasureValue}${index}`,\n })\n datasets.push(newDatasets)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n datasetList.push(datasets.flat(2))\n\n const unfoldInfo: UnfoldInfo = {\n groupName: unfoldInfoList[0].groupName,\n groupId: unfoldInfoList[0].groupId,\n colorItems: unfoldInfoList.flatMap((d) => d.colorItems),\n colorIdMap: unfoldInfoList.reduce((prev, cur) => ({ ...prev, ...cur.colorIdMap }), {}),\n }\n\n const reshapeInfo = {\n id: `2D2M-${index}`,\n index,\n foldInfo: foldInfoList[0],\n unfoldInfo: unfoldInfo,\n foldInfoList: foldInfoList,\n }\n\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n return {\n ...result,\n dataset: datasetList,\n datasetReshapeInfo,\n }\n}\n","import type { AdvancedPipe, Dimensions, FoldInfo, UnfoldInfo } from 'src/types'\nimport type { Encoding } from 'src/types'\n\nexport const encodingXYY: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const { datasetReshapeInfo, dimensions } = advancedVSeed\n if (!datasetReshapeInfo || !dimensions) {\n return result\n }\n\n const xDimension =\n (dimensions as Dimensions).find(\n (item) => item.location !== 'rowDimension' && item.location !== 'columnDimension',\n ) || dimensions[0]\n\n const isZeroDimension = dimensions.length === 0\n\n const encoding = datasetReshapeInfo.reduce<Encoding>((prev, cur) => {\n const { foldInfoList, unfoldInfo } = cur as {\n foldInfoList: FoldInfo[]\n unfoldInfo: UnfoldInfo\n }\n\n const x = [isZeroDimension ? foldInfoList[0].measureName : xDimension?.id]\n const y = foldInfoList.map((d) => d.measureValue)\n const group = [unfoldInfo.groupId]\n const color = [foldInfoList[0].measureName]\n\n return [\n ...prev,\n {\n x,\n y,\n group,\n color,\n },\n ] as Encoding\n }, [])\n\n return {\n ...result,\n encoding,\n }\n}\n","import { pick } from 'remeda'\nimport type { AdvancedPipe, AdvancedVSeed, Config } from 'src/types'\n\nexport const dualAxisConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const config = pick(vseed, [\n // common\n 'backgroundColor',\n 'color',\n 'label',\n 'legend',\n 'tooltip',\n\n // only for dualAxis\n 'dualChartType',\n 'primaryYAxis',\n 'secondaryYAxis',\n 'crosshairLine',\n ]) as Config['dualAxis']\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n","import { measureDepth } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Datum, DualAxis, DualMeasures, MeasureGroup, MeasureTree } from 'src/types'\n\nexport const autoDualMeasures: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context as {\n vseed: DualAxis\n }\n const { dataset, dualMeasures, measures } = vseed\n\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return result\n }\n\n if (dualMeasures) {\n result.measures = dualMeasuresToMeasureTree(dualMeasures)\n return result\n }\n if (measures && measureDepth(measures) > 1) {\n result.measures = measures\n return result\n }\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n const newMeasures =\n measures ||\n Object.keys(sample)\n .filter((key) => {\n return top100dataset.some((item) => typeof item[key] === 'number') && !['', null, undefined].includes(key)\n })\n .map((measure) => ({\n id: measure,\n alias: measure,\n }))\n\n if (newMeasures.length === 0) {\n result.measures = []\n return result\n } else if (newMeasures.length === 1) {\n result.measures = [\n {\n id: 'primary',\n alias: 'primary',\n children: newMeasures,\n },\n ]\n return result\n } else if (newMeasures.length > 1) {\n result.measures = [\n {\n id: 'primary',\n alias: 'primary',\n children: newMeasures.slice(0, 1),\n },\n {\n id: 'secondary',\n alias: 'secondary',\n children: newMeasures.slice(1),\n },\n ]\n }\n\n return result\n}\n\nconst dualMeasuresToMeasureTree = (dualMeasures: DualMeasures): MeasureTree => {\n const measureTree = dualMeasures.map((item, index): MeasureGroup => {\n const { primaryMeasures, secondaryMeasures } = item\n const groupChildren: MeasureGroup[] = []\n\n let id: string = ''\n if (primaryMeasures) {\n const arrPrimaryMeasures = Array.isArray(primaryMeasures) ? primaryMeasures : [primaryMeasures]\n const alias = arrPrimaryMeasures.map((item) => item.alias || item.id).toString()\n id += alias\n groupChildren.push({\n id: `${index}-primary`,\n alias: arrPrimaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrPrimaryMeasures,\n })\n }\n if (secondaryMeasures) {\n const arrSecondaryMeasures = Array.isArray(secondaryMeasures) ? secondaryMeasures : [secondaryMeasures]\n const alias = arrSecondaryMeasures.map((item) => item.alias || item.id).toString()\n id += alias\n groupChildren.push({\n id: `${index}-secondary`,\n alias: arrSecondaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrSecondaryMeasures,\n })\n }\n\n return {\n id,\n alias: id,\n children: groupChildren,\n }\n })\n\n // 只有1个双轴图, 仅返回2层, vchart 绘制双轴图\n if (dualMeasures.length === 1) {\n return measureTree[0].children || []\n }\n\n // 有多个双轴图, 返回3层, pivot chart 绘制组合双轴图\n return measureTree\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n annotation,\n markStyle,\n sortXBandAxis,\n sortLegend,\n reshapeTo2D2M,\n encodingXYY,\n pivotReshapeTo2D2M,\n dualAxisConfig,\n} from '../pipes'\nimport { autoDualMeasures } from '../pipes/init/autoDualMeasures'\n\nexport const dualAxisAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoDualMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D2M], [pivotReshapeTo2D2M]),\n encodingXYY,\n sortXBandAxis,\n sortLegend,\n dualAxisConfig,\n theme,\n markStyle,\n annotation\n]\n","import type { IBarSeriesSpec, ILineSeriesSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initDualAxisPrimary: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarSeriesSpec\n const { advancedVSeed } = context\n const { encoding, datasetReshapeInfo } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n\n result.id = `${datasetReshapeInfo[0].id}-primary-series`\n result.type = 'bar'\n result.direction = 'vertical'\n result.xField = encoding[0].x[0]\n result.yField = encoding[0].y[0]\n result.seriesField = encoding[0].group[0]\n result.animation = true\n\n return result\n}\n\nexport const initDualAxisSecondary: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineSeriesSpec\n const { advancedVSeed } = context\n const { encoding, datasetReshapeInfo } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n\n result.id = `${datasetReshapeInfo[0].id}-secondary-series`\n result.type = 'line'\n result.direction = 'vertical'\n result.xField = encoding[0].x[0]\n result.yField = encoding[0].y[1]\n result.seriesField = encoding[0].group[0]\n\n result.animation = true\n\n return result\n}\n","import type { IBarSeriesSpec, ISeriesSpec } from '@visactor/vchart'\nimport type { DualChartType, SpecPipe } from 'src/types'\n\nexport const dualChartTypePrimary: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISeriesSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { datasetReshapeInfo } = advancedVSeed\n const index = datasetReshapeInfo[0].index\n\n const config =\n advancedVSeed.config?.[chartType as 'dualAxis']?.dualChartType ||\n ({\n primary: 'column',\n secondary: 'line',\n } as DualChartType)\n\n const primary = Array.isArray(config) ? config[index].primary || config[0].primary : config.primary\n\n switch (primary) {\n case 'line': {\n result.type = 'line'\n break\n }\n case 'column': {\n result.type = 'bar'\n break\n }\n case 'columnParallel': {\n const columnSpec = result as IBarSeriesSpec\n if (Array.isArray(columnSpec.xField)) {\n columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.groupId)\n } else if (columnSpec.xField) {\n columnSpec.xField = [columnSpec.xField, datasetReshapeInfo[0].unfoldInfo.groupId]\n }\n columnSpec.type = 'bar'\n break\n }\n // @ts-expect-error 'columnPercent' 和 'areaPercent' 会改变轴值域为[0,1], VTable不支持.\n case 'columnPercent': {\n result.type = 'bar'\n result.percent = true\n break\n }\n case 'area': {\n result.type = 'area'\n break\n }\n // @ts-expect-error 'columnPercent' 和 'areaPercent' 会改变轴值域为[0,1], VTable不支持.\n case 'areaPercent': {\n result.type = 'area'\n result.percent = true\n break\n }\n case 'scatter': {\n result.type = 'scatter'\n break\n }\n default:\n result.type = primary\n }\n\n return result\n}\n\nexport const dualChartTypeSecondary: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISeriesSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { datasetReshapeInfo } = advancedVSeed\n const config =\n advancedVSeed.config?.[chartType as 'dualAxis']?.dualChartType ||\n ({\n primary: 'column',\n secondary: 'line',\n } as DualChartType)\n\n const index = datasetReshapeInfo[0].index\n const secondary = Array.isArray(config) ? config[index].secondary || config[0].secondary : config.secondary\n\n switch (secondary) {\n case 'line': {\n result.type = 'line'\n break\n }\n case 'column': {\n result.type = 'bar'\n break\n }\n case 'columnParallel': {\n const columnSpec = result as IBarSeriesSpec\n if (Array.isArray(columnSpec.xField)) {\n columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.groupId)\n } else if (columnSpec.xField) {\n columnSpec.xField = [columnSpec.xField, datasetReshapeInfo[0].unfoldInfo.groupId]\n }\n columnSpec.type = 'bar'\n break\n }\n // @ts-expect-error 'columnPercent' 和 'areaPercent' 会改变轴值域为[0,1], VTable不支持.\n case 'columnPercent': {\n result.type = 'bar'\n result.percent = true\n break\n }\n case 'area': {\n result.type = 'area'\n break\n }\n // @ts-expect-error 'columnPercent' 和 'areaPercent' 会改变轴值域为[0,1], VTable不支持.\n case 'areaPercent': {\n result.type = 'area'\n result.percent = true\n break\n }\n case 'scatter': {\n result.type = 'scatter'\n break\n }\n default:\n result.type = secondary\n }\n\n return result\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { isPivotChart } from 'src/pipeline/utils'\nimport type { SpecPipe } from 'src/types'\n\nexport const datasetPrimary: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { encoding, analysis, datasetReshapeInfo } = advancedVSeed\n const orderMapping = analysis?.orderMapping || {}\n const x = encoding[0]?.x?.[0]\n const group = encoding[0]?.group?.[0]\n const id = datasetReshapeInfo[0].id\n\n const fields: Record<string, object> = {}\n\n if (x) {\n const order = orderMapping[x]\n if (order) {\n fields[x] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[x] = {\n sortIndex: 0,\n }\n }\n }\n\n if (group) {\n const order = orderMapping[group]\n if (order) {\n fields[group] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[group] = {\n sortIndex: 0,\n }\n }\n }\n\n return {\n ...spec,\n data: {\n id: `${id}-primary-dataset`,\n // 透视表不使用 dataValues\n values: isPivotChart(vseed) ? undefined : advancedVSeed.dataset,\n fields: fields,\n },\n } as ISpec\n}\n\nexport const datasetSecondary: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { encoding, analysis, datasetReshapeInfo } = advancedVSeed\n const orderMapping = analysis?.orderMapping || {}\n const x = encoding[0]?.x?.[0]\n const group = encoding[0]?.group?.[0]\n const id = datasetReshapeInfo[0].id\n\n const fields: Record<string, object> = {}\n\n if (x) {\n const order = orderMapping[x]\n if (order) {\n fields[x] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[x] = {\n sortIndex: 0,\n }\n }\n }\n\n if (group) {\n const order = orderMapping[group]\n if (order) {\n fields[group] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[group] = {\n sortIndex: 0,\n }\n }\n }\n\n return {\n ...spec,\n data: {\n id: `${id}-secondary-dataset`,\n // 透视表不使用 dataValues\n values: isPivotChart(vseed) ? undefined : advancedVSeed.dataset,\n fields: fields,\n },\n } as ISpec\n}\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport type { ILineLikeLabelSpec } from '@visactor/vchart/esm/series/mixin/interface'\nimport { autoFormatter, createFormatter, findMeasureById } from '../../../../utils'\nimport type { Datum, FoldInfo, Label, SpecPipe } from 'src/types'\nimport { isEmpty, isNullish } from 'remeda'\n\nexport const labelPrimary: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed } = context\n const { measures, datasetReshapeInfo, locale } = advancedVSeed\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { label: Label }\n\n if (!baseConfig || !baseConfig.label) {\n return result\n }\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n const { measureId, measureValue } = foldInfoList[0]\n const { label } = baseConfig\n const { enable } = label\n\n result.label = {\n visible: enable,\n formatMethod: (value: string, datum: Datum) => {\n const result = []\n\n const formatValue = (value: number) => {\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return value\n }\n\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n }\n\n result.push(formatValue(datum[measureValue] as number))\n\n return result.join(' ')\n },\n } as ILineLikeLabelSpec\n return result\n}\n\nexport const labelSecondary: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed } = context\n const { measures, datasetReshapeInfo, locale } = advancedVSeed\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { label: Label }\n\n if (!baseConfig || !baseConfig.label) {\n return result\n }\n if (isNullish(datasetReshapeInfo[0].foldInfoList?.[1])) {\n return result\n }\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n\n const { measureId, measureValue } = foldInfoList[1]\n const { label } = baseConfig\n const { enable } = label\n\n result.label = {\n visible: enable,\n formatMethod: (value: string, datum: Datum) => {\n const result = []\n\n const formatValue = (value: number) => {\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return value\n }\n\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n }\n\n result.push(formatValue(datum[measureValue] as number))\n\n return result.join(' ')\n },\n } as ILineLikeLabelSpec\n return result\n}\n","import { isEmpty, isNullish } from 'remeda'\nimport { autoFormatter, createFormatter, findMeasureById } from '../../../../utils'\nimport type { Datum, FoldInfo, SpecPipe, Tooltip, UnfoldInfo } from 'src/types'\n\nexport const tooltipPrimary: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { measures, datasetReshapeInfo, chartType, locale, dimensions } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n const unfoldInfo = datasetReshapeInfo[0].unfoldInfo\n\n const { measureId, measureValue, measureName } = foldInfoList[0]\n const { groupName } = unfoldInfo\n\n result.tooltip = {\n visible: enable,\n\n mark: {\n title: {\n visible: true,\n },\n content: [\n ...dimensions.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (datum: unknown) => {\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return (datum as Datum) && ((datum as Datum)[item.id] as string)\n },\n value: (datum: unknown) => {\n return (datum as Datum) && ((datum as Datum)[item.id] as string)\n },\n })),\n {\n visible: true,\n hasShape: true,\n key: (datum) => (datum && (datum[measureName || groupName] as string)) || '',\n value: (datum) => {\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n },\n ],\n },\n dimension: {\n content: [\n {\n visible: true,\n key: (datum) => (datum && (datum[groupName] as string)) || '',\n value: (datum) => {\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n shapeType: 'rectRound',\n },\n ],\n },\n }\n return result\n}\n\nexport const tooltipSecondary: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { measures, datasetReshapeInfo, chartType, locale, dimensions } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n\n if (isNullish(datasetReshapeInfo[0].foldInfoList?.[1])) {\n return result\n }\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n const unfoldInfo = datasetReshapeInfo[0].unfoldInfo as UnfoldInfo\n const { measureId, measureValue, measureName } = foldInfoList[1]\n const { groupName } = unfoldInfo\n\n result.tooltip = {\n visible: enable,\n\n mark: {\n title: {\n visible: true,\n },\n content: [\n ...dimensions.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (datum: unknown) => {\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return (datum as Datum) && ((datum as Datum)[item.id] as string)\n },\n value: (datum: unknown) => {\n return (datum as Datum) && ((datum as Datum)[item.id] as string)\n },\n })),\n {\n visible: true,\n hasShape: true,\n key: (datum) => (datum && (datum[measureName || groupName] as string)) || '',\n value: (datum) => {\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n },\n ],\n },\n dimension: {\n content: [\n {\n visible: true,\n key: (datum) => (datum && (datum[groupName] as string)) || '',\n value: (datum) => {\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n shapeType: 'rectRound',\n },\n ],\n },\n }\n return result\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { LINEAR_AXIS_INNER_OFFSET_TOP } from '../../../../utils/constant'\nimport { autoFormatter } from '../../../../utils'\nimport type { SpecPipe, YLinearAxis } from 'src/types'\nimport { isEmpty } from 'remeda'\n\nexport const yLinearPrimary: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { locale, datasetReshapeInfo } = advancedVSeed\n // TODO: default config missing\n const index = datasetReshapeInfo[0].index\n const primaryYAxis = advancedVSeed.config?.[chartType as 'dualAxis']?.primaryYAxis as YLinearAxis | YLinearAxis[]\n const config = Array.isArray(primaryYAxis) ? primaryYAxis[index] || primaryYAxis[0] : primaryYAxis\n\n if (datasetReshapeInfo[0].foldInfoList?.[0] && isEmpty(datasetReshapeInfo[0].foldInfoList[0].foldMap)) {\n return result\n }\n const id = `${datasetReshapeInfo[0].id}-primary-axis`\n const seriesId = `${datasetReshapeInfo[0].id}-primary-series`\n\n if (!result.axes) {\n result.axes = []\n }\n\n if (!config) {\n result.axes = [\n ...result.axes,\n {\n visible: true,\n id,\n seriesId,\n type: 'linear',\n orient: 'left',\n sync: {\n axisId: `${datasetReshapeInfo[0].id}-secondary-axis`,\n tickAlign: false,\n zeroAlign: true,\n },\n },\n ] as ISpec['axes']\n return result\n }\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n\n zero,\n nice,\n inverse,\n max,\n min,\n log,\n logBase = 10,\n } = config\n\n const linearAxis = {\n visible,\n id,\n seriesId,\n sync: {\n axisId: `${datasetReshapeInfo[0].id}-secondary-axis`,\n tickAlign: false,\n zeroAlign: true,\n },\n\n type: log ? 'log' : 'linear',\n base: logBase,\n orient: 'left',\n nice,\n zero: log ? false : zero,\n inverse,\n max,\n min,\n label: {\n visible: label?.visible,\n formatMethod: (value: string) => {\n return autoFormatter(value, locale)\n },\n style: {\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n },\n title: {\n visible: title?.visible,\n text: title?.titleText,\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n innerOffset: {\n top: LINEAR_AXIS_INNER_OFFSET_TOP,\n // bottom: LINEAR_AXIS_INNER_OFFSET_TOP,\n },\n }\n\n result.axes = [...result.axes, linearAxis] as ISpec['axes']\n\n return result\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { LINEAR_AXIS_INNER_OFFSET_TOP } from '../../../../utils/constant'\nimport { autoFormatter } from '../../../../utils'\nimport type { SpecPipe, YLinearAxis } from 'src/types'\nimport { isNullish } from 'remeda'\n\nexport const yLinearSecondary: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { locale, datasetReshapeInfo } = advancedVSeed\n // TODO: default config missing\n const index = datasetReshapeInfo[0].index\n const secondaryYAxis = advancedVSeed.config?.[chartType as 'dualAxis']?.secondaryYAxis as YLinearAxis | YLinearAxis[]\n const config = Array.isArray(secondaryYAxis) ? secondaryYAxis[index] || secondaryYAxis[0] : secondaryYAxis\n\n if (isNullish(datasetReshapeInfo[0].foldInfoList?.[1])) {\n return result\n }\n\n const id = `${datasetReshapeInfo[0].id}-secondary-axis`\n const seriesId = `${datasetReshapeInfo[0].id}-secondary-series`\n\n if (!result.axes) {\n result.axes = []\n }\n\n if (!config) {\n result.axes = [\n ...result.axes,\n {\n visible: true,\n id,\n seriesId,\n type: 'linear',\n orient: 'right',\n },\n ] as ISpec['axes']\n return result\n }\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n\n zero,\n nice,\n inverse,\n max,\n min,\n log,\n logBase = 10,\n } = config\n\n const linearAxis = {\n visible,\n id,\n seriesId,\n type: log ? 'log' : 'linear',\n base: logBase,\n orient: 'right',\n nice,\n zero: log ? false : zero,\n inverse,\n max,\n min,\n label: {\n visible: label?.visible,\n formatMethod: (value: string) => {\n return autoFormatter(value, locale)\n },\n style: {\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n },\n title: {\n visible: title?.visible,\n text: title?.titleText,\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n innerOffset: {\n top: LINEAR_AXIS_INNER_OFFSET_TOP,\n // bottom: LINEAR_AXIS_INNER_OFFSET_TOP,\n },\n }\n\n result.axes = [...result.axes, linearAxis] as ISpec['axes']\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n xBand,\n backgroundColor,\n discreteLegend,\n color,\n initPivot,\n datasetPivot,\n pivotDiscreteLegend,\n pivotIndicators,\n pivotAdapter,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n pointStyle,\n lineStyle,\n pointStateDimensionHover,\n progressive,\n datasetPrimary,\n datasetSecondary,\n areaStyle,\n barStyle,\n verticalCrosshairRect,\n yLinearSecondary,\n initDualAxisPrimary,\n initDualAxisSecondary,\n labelPrimary,\n labelSecondary,\n tooltipPrimary,\n tooltipSecondary,\n yLinearPrimary,\n dualChartTypePrimary,\n dualChartTypeSecondary,\n seriesDualAxis,\n} from '../pipes'\n\nconst dualAxis: SpecPipeline = [\n seriesDualAxis(\n [\n initDualAxisPrimary,\n dualChartTypePrimary,\n datasetPrimary,\n labelPrimary,\n tooltipPrimary,\n progressive,\n\n barStyle,\n pointStyle,\n pointStateDimensionHover,\n lineStyle,\n areaStyle,\n ],\n [\n initDualAxisSecondary,\n dualChartTypeSecondary,\n datasetSecondary,\n labelSecondary,\n tooltipSecondary,\n progressive,\n\n barStyle,\n pointStyle,\n pointStateDimensionHover,\n lineStyle,\n areaStyle,\n ],\n ),\n xBand,\n yLinearPrimary,\n yLinearSecondary,\n\n color,\n backgroundColor,\n discreteLegend,\n\n verticalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotDualAxis: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n seriesDualAxis(\n [\n initDualAxisPrimary,\n dualChartTypePrimary,\n datasetPrimary,\n labelPrimary,\n tooltipPrimary,\n progressive,\n\n barStyle,\n pointStyle,\n pointStateDimensionHover,\n lineStyle,\n areaStyle,\n ],\n [\n initDualAxisSecondary,\n dualChartTypeSecondary,\n datasetSecondary,\n labelSecondary,\n tooltipSecondary,\n progressive,\n\n barStyle,\n pointStyle,\n pointStateDimensionHover,\n lineStyle,\n areaStyle,\n ],\n ),\n xBand,\n yLinearPrimary,\n yLinearSecondary,\n color,\n backgroundColor,\n verticalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const dualAxisSpecPipeline: SpecPipeline = [pivotAdapter(dualAxis, pivotDualAxis)]\n","import { dualAxisAdvancedPipeline, dualAxisSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerDualAxis = () => {\n Builder._advancedPipelineMap['dualAxis'] = dualAxisAdvancedPipeline\n Builder._specPipelineMap['dualAxis'] = dualAxisSpecPipeline\n}\n","import type { Dataset, Dimension, FoldInfo, Measure, UnfoldInfo } from 'src/types'\nimport { foldMeasures } from './foldMeasures'\nimport {\n UnfoldDimensionGroup,\n FoldMeasureId,\n FoldMeasureName,\n FoldMeasureValue,\n UnfoldDimensionGroupId,\n} from './constant'\nimport { unfoldDimensions } from './unfoldDimensions'\nimport { i18n } from '../i18n'\n\nconst emptyReshapeResult = {\n dataset: [],\n foldInfo: {\n foldMap: {},\n measureId: '',\n measureName: '',\n measureValue: '',\n },\n unfoldInfo: {\n groupName: '',\n groupId: '',\n colorItems: [],\n colorIdMap: {},\n },\n}\n/**\n * 数据重塑为1个维度1个指标\n * @param dataset\n * @param dimensions\n * @param measures\n * @returns\n */\nexport const dataReshapeFor1D1M = (\n dataset: Dataset,\n dimensions: Dimension[],\n measures: Measure[],\n options?: {\n foldMeasureId?: string\n foldMeasureName?: string\n foldMeasureValue?: string\n unfoldDimensionGroup?: string\n unfoldDimensionGroupId?: string\n },\n): {\n dataset: Dataset\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n} => {\n const {\n foldMeasureId = FoldMeasureId,\n foldMeasureName = FoldMeasureName,\n foldMeasureValue = FoldMeasureValue,\n unfoldDimensionGroup = UnfoldDimensionGroup,\n unfoldDimensionGroupId = UnfoldDimensionGroupId,\n } = options || {}\n\n if (dimensions.length === 0 && measures.length === 0) {\n return emptyReshapeResult\n }\n\n // 合并所有指标为1个指标\n const { dataset: foldedDataset, foldInfo } = foldMeasures(\n dataset,\n measures,\n foldMeasureId,\n foldMeasureName,\n foldMeasureValue,\n )\n\n if (dimensions.length === 0) {\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(\n foldedDataset,\n [{ id: foldMeasureName, alias: i18n`指标名称`, location: 'dimension' }],\n [{ id: foldMeasureValue, alias: i18n`指标值` }],\n 0,\n unfoldDimensionGroup,\n unfoldDimensionGroupId,\n foldMeasureId,\n )\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n } else {\n const dims =\n measures.length === 1\n ? ([...dimensions] as Dimension[])\n : ([...dimensions, { id: foldMeasureName, alias: i18n`指标名称`, location: 'dimension' }] as Dimension[])\n // 展开指定的维度为指标\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(\n foldedDataset,\n dims,\n [{ id: foldMeasureValue, alias: i18n`指标值` }],\n 0,\n unfoldDimensionGroup,\n unfoldDimensionGroupId,\n foldMeasureId,\n )\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n }\n}\n","import { dataReshapeFor1D1M } from 'src/dataReshape'\nimport type { AdvancedPipe } from 'src/types'\n\n/**\n * 数据重塑, 将任意维度、任意指标, 重塑为2个维度1个指标.\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const reshapeTo1D1M: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { dimensions, measures } = advancedVSeed\n if (!measures || !dimensions || !dataset) {\n return result\n }\n\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n\n const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor1D1M(dataset, dimensions, measures)\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: [\n {\n id: '1D1M',\n index: 0,\n foldInfo,\n unfoldInfo,\n },\n ],\n }\n}\n","import { FoldMeasureId, FoldMeasureName, FoldMeasureValue, UnfoldDimensionGroup } from 'src/dataReshape/constant'\nimport { dataReshapeFor1D1M } from 'src/dataReshape'\nimport type { AdvancedPipe, Dataset, DatasetReshapeInfo, Dimensions, MeasureGroup } from 'src/types'\n\n/**\n * 数据重塑为透视结构, 如果存在指标分组, 则将数据按组划分. 如果存在行列维度, 则生成行列树结构.\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const pivotReshapeTo1D1M: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { measures } = advancedVSeed\n const dimensions = advancedVSeed.dimensions as Dimensions\n\n if (!measures || !dimensions) {\n return result\n }\n\n const measureGroups: MeasureGroup[] = []\n if (measures) {\n measures.forEach((measure: MeasureGroup) => {\n if (measure.children && measure.children.length > 0) {\n measureGroups.push(measure)\n }\n })\n }\n const newDatasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n measureGroups.forEach((measureGroup, index) => {\n const measures = measureGroup.children\n if (!measures) {\n return\n }\n\n const commonDimensions = dimensions.filter((dim) => dim.location === 'dimension')\n const groupId = measureGroup.id\n const {\n dataset: newSubDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeFor1D1M(dataset, commonDimensions, measures, {\n foldMeasureId: FoldMeasureId,\n foldMeasureName: FoldMeasureName,\n foldMeasureValue: FoldMeasureValue + groupId,\n unfoldDimensionGroup: UnfoldDimensionGroup,\n })\n const reshapeInfo = {\n id: groupId,\n index,\n foldInfo,\n unfoldInfo,\n }\n newDatasets.push(newSubDataset)\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n","import type { AdvancedPipe, FoldInfo, UnfoldInfo } from 'src/types'\nimport type { Encoding } from 'src/types'\n\nexport const encodingPie: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const { datasetReshapeInfo } = advancedVSeed\n if (!datasetReshapeInfo) {\n return result\n }\n\n const encoding = datasetReshapeInfo.reduce<Encoding>((prev, cur) => {\n const { foldInfo, unfoldInfo } = cur as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n const radius = [foldInfo.measureValue]\n const angle = [unfoldInfo.groupId]\n const group = [unfoldInfo.groupId]\n const color = [unfoldInfo.groupId]\n\n return [\n ...prev,\n {\n angle,\n radius,\n group,\n color,\n },\n ] as Encoding\n }, [])\n\n return {\n ...result,\n encoding,\n }\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n reshapeTo1D1M,\n pivotReshapeTo1D1M,\n encodingPie,\n pieConfig,\n annotation,\n} from '../pipes'\n\nexport const pieAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo1D1M], [pivotReshapeTo1D1M]),\n encodingPie,\n pieConfig,\n theme,\n annotation\n]\n","import type { IPieChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initPie: SpecPipe = (spec, context) => {\n const result = { ...spec } as IPieChartSpec\n const { advancedVSeed } = context\n const { encoding, dataset } = advancedVSeed\n\n if (!encoding[0].angle || !encoding[0].radius || !encoding[0].group) {\n return result\n }\n\n const showStroke = dataset.length <= 30\n\n result.type = 'pie'\n result.outerRadius = 0.8\n result.innerRadius = 0\n result.valueField = encoding[0].radius[0]\n result.categoryField = encoding[0].angle[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.pie = {\n style: {\n stroke: '#ffffff',\n lineWidth: showStroke ? 1 : 0,\n centerOffset: 0,\n },\n state: {\n hover: {\n outerRadius: result.outerRadius * 1.1,\n },\n },\n }\n result.animation = true\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n backgroundColor,\n color,\n datasetXY,\n datasetPivot,\n initPie,\n initPivot,\n label,\n discreteLegend,\n pivotAdapter,\n pivotColumnDimensions,\n pivotGridStyle,\n pivotIndicators,\n pivotIndicatorsAsRow,\n pivotDiscreteLegend,\n pivotRowDimensions,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n progressive,\n} from '../pipes'\n\nconst pie: SpecPipeline = [\n initPie,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n label,\n tooltip,\n discreteLegend,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotPie: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initPie,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n label,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const pieSpecPipeline: SpecPipeline = [pivotAdapter(pie, pivotPie)]\n","import { pieAdvancedPipeline, pieSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerPie = () => {\n Builder._advancedPipelineMap['pie'] = pieAdvancedPipeline\n Builder._specPipelineMap['pie'] = pieSpecPipeline\n}","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n reshapeTo1D1M,\n pivotReshapeTo1D1M,\n encodingPie,\n annotation,\n donutConfig,\n} from '../pipes'\n\nexport const donutAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo1D1M], [pivotReshapeTo1D1M]),\n encodingPie,\n donutConfig,\n theme,\n annotation\n]\n","import type { IPieChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initDonut: SpecPipe = (spec, context) => {\n const result = { ...spec } as IPieChartSpec\n const { advancedVSeed } = context\n const { encoding, dataset } = advancedVSeed\n\n if (!encoding[0].angle || !encoding[0].radius || !encoding[0].group) {\n return result\n }\n const showStroke = dataset.length <= 30\n\n result.type = 'pie'\n result.outerRadius = 0.8\n result.innerRadius = result.outerRadius * 0.8\n result.valueField = encoding[0].radius[0]\n result.categoryField = encoding[0].angle[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n\n result.pie = {\n style: {\n stroke: '#ffffff',\n lineWidth: showStroke ? 1 : 0,\n },\n state: {\n hover: {\n outerRadius: result.outerRadius * 1.1,\n },\n },\n }\n\n result.animation = true\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n backgroundColor,\n color,\n datasetXY,\n datasetPivot,\n initDonut,\n initPivot,\n label,\n discreteLegend,\n pivotAdapter,\n pivotColumnDimensions,\n pivotGridStyle,\n pivotIndicators,\n pivotIndicatorsAsRow,\n pivotDiscreteLegend,\n pivotRowDimensions,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n progressive,\n} from '../pipes'\n\nconst donut: SpecPipeline = [\n initDonut,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n label,\n tooltip,\n discreteLegend,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotDonut: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initDonut,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n label,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const donutSpecPipeline: SpecPipeline = [pivotAdapter(donut, pivotDonut)]\n","import { donutAdvancedPipeline, donutSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerDonut = () => {\n Builder._advancedPipelineMap['donut'] = donutAdvancedPipeline\n Builder._specPipelineMap['donut'] = donutSpecPipeline\n}","import type { AdvancedPipe, Dimensions, FoldInfo, UnfoldInfo } from 'src/types'\nimport type { Encoding } from 'src/types'\n\nexport const encodingRose: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const { datasetReshapeInfo, dimensions, measures } = advancedVSeed\n if (!datasetReshapeInfo || !dimensions || !measures) {\n return result\n }\n\n const angleDimension =\n (dimensions as Dimensions).find(\n (item) => item.location !== 'rowDimension' && item.location !== 'columnDimension',\n ) || dimensions[0]\n\n const is1D1M = dimensions.length === 1 && measures.length === 1\n const isZeroDimension = dimensions.length === 0\n\n const encoding = datasetReshapeInfo.reduce<Encoding>((prev, cur) => {\n const { foldInfo, unfoldInfo } = cur as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n const radius = [foldInfo.measureValue]\n const angle = [isZeroDimension ? foldInfo.measureName : angleDimension?.id]\n const group = [is1D1M ? angleDimension?.id : unfoldInfo.groupId]\n const color = [is1D1M ? angleDimension?.id : unfoldInfo.groupId]\n\n return [\n ...prev,\n {\n angle,\n radius,\n group,\n color,\n },\n ] as Encoding\n }, [])\n\n return {\n ...result,\n encoding,\n }\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n initAdvancedVSeed,\n reshapeTo2D1M,\n theme,\n pivotAdapter,\n markStyle,\n annotation,\n roseConfig,\n encodingRose,\n pivotReshapeTo2D1M,\n} from '../pipes'\n\nexport const roseAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingRose,\n roseConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initRose: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRoseChartSpec\n const { advancedVSeed } = context\n const { encoding, dataset, datasetReshapeInfo } = advancedVSeed\n const { foldInfo } = datasetReshapeInfo[0]\n if (!encoding[0].radius || !encoding[0].angle || !encoding[0].group) {\n return result\n }\n\n result.type = 'rose'\n result.categoryField = encoding[0].angle[0]\n result.valueField = encoding[0].radius[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n result.outerRadius = 0.9\n result.innerRadius = 0\n\n const hasNegativeValue = dataset.flat().find((d) => d[foldInfo.measureValue] < 0)\n if (hasNegativeValue) {\n result.innerRadius = 0.05\n }\n\n result.rose = {\n style: {\n stroke: '#ffffff',\n lineWidth: 1,\n },\n state: {\n hover: {\n lineWidth: 1,\n fillOpacity: 0.6,\n },\n },\n }\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const radiusAxis: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRoseChartSpec\n const { advancedVSeed } = context\n const { dimensions, measures } = advancedVSeed\n\n if (!dimensions || !measures) {\n return result\n }\n\n const is0D = dimensions.length === 0\n const is1M1D = dimensions.length === 1 && measures.length === 1\n const showAxis = !(is0D || is1M1D)\n\n if (!result.axes) {\n result.axes = []\n }\n\n result.axes.push({\n orient: 'radius',\n visible: showAxis,\n zero: true,\n nice: showAxis ? true : false,\n grid: {\n visible: showAxis,\n },\n tick: {\n visible: showAxis,\n },\n label: {\n visible: showAxis,\n },\n domainLine: {\n visible: showAxis,\n },\n })\n\n return result\n}\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const angleAxis: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRoseChartSpec\n const { advancedVSeed } = context\n const { dimensions, measures } = advancedVSeed\n\n if (!dimensions || !measures) {\n return result\n }\n\n const is0D = dimensions.length === 0\n const is1M1D = dimensions.length === 1 && measures.length === 1\n const showAxis = !(is0D || is1M1D)\n\n if (!result.axes) {\n result.axes = []\n }\n\n result.axes.push({\n orient: 'angle',\n visible: showAxis,\n zero: true,\n nice: showAxis ? true : false,\n paddingInner: showAxis ? [0.15, 0.1] : [0, 0],\n paddingOuter: showAxis ? [0.075, 0.1] : [0, 0],\n grid: {\n visible: showAxis,\n },\n domainLine: {\n visible: showAxis,\n },\n tick: {\n visible: showAxis,\n },\n })\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n pivotAdapter,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n stackInverse,\n verticalCrosshairRect,\n stackCornerRadius,\n initRose,\n radiusAxis,\n angleAxis,\n progressive,\n} from '../pipes'\n\nconst rose: SpecPipeline = [\n initRose,\n stackCornerRadius,\n stackInverse,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n radiusAxis,\n angleAxis,\n label,\n tooltip,\n verticalCrosshairRect,\n discreteLegend,\n]\n\nconst pivotRose: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initRose,\n stackCornerRadius,\n stackInverse,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n radiusAxis,\n angleAxis,\n label,\n tooltip,\n verticalCrosshairRect,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const roseSpecPipeline = [pivotAdapter(rose, pivotRose)]\n","import { roseAdvancedPipeline, roseSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerRose = () => {\n Builder._advancedPipelineMap['rose'] = roseAdvancedPipeline\n Builder._specPipelineMap['rose'] = roseSpecPipeline\n}","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n initAdvancedVSeed,\n reshapeTo2D1M,\n theme,\n pivotAdapter,\n pivotReshapeTo2D1M,\n markStyle,\n annotation,\n roseParallelConfig,\n encodingRose,\n} from '../pipes'\n\nexport const roseParallelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingRose,\n roseParallelConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initRoseParallel: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRoseChartSpec\n const { advancedVSeed } = context\n const { encoding, datasetReshapeInfo, dataset } = advancedVSeed\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n if (!encoding[0].radius || !encoding[0].angle || !encoding[0].group) {\n return result\n }\n\n result.type = 'rose'\n result.categoryField = [encoding[0].angle[0], unfoldInfo.groupId]\n result.valueField = encoding[0].radius[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n\n result.outerRadius = 0.9\n result.innerRadius = 0\n\n const hasNegativeValue = dataset.flat().find((d) => d[foldInfo.measureValue] < 0)\n if (hasNegativeValue) {\n result.innerRadius = 0.05\n }\n\n result.rose = {\n style: {\n stroke: '#ffffff',\n lineWidth: 1,\n },\n state: {\n hover: {\n lineWidth: 1,\n fillOpacity: 0.6,\n },\n },\n }\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n pivotIndicators,\n initPivot,\n datasetPivot,\n pivotAdapter,\n pivotDiscreteLegend,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n verticalCrosshairRect,\n stackCornerRadius,\n initRoseParallel,\n radiusAxis,\n angleAxis,\n progressive,\n} from '../pipes'\n\nconst roseParallel: SpecPipeline = [\n initRoseParallel,\n stackCornerRadius,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n radiusAxis,\n angleAxis,\n label,\n tooltip,\n discreteLegend,\n verticalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotRoseParallel: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initRoseParallel,\n stackCornerRadius,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n radiusAxis,\n angleAxis,\n label,\n tooltip,\n verticalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const roseParallelSpecPipeline: SpecPipeline = [pivotAdapter(roseParallel, pivotRoseParallel)]\n","import { roseParallelAdvancedPipeline, roseParallelSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerRoseParallel = () => {\n Builder._advancedPipelineMap['roseParallel'] = roseParallelAdvancedPipeline\n Builder._specPipelineMap['roseParallel'] = roseParallelSpecPipeline\n}","import type { AdvancedPipe, Dimensions, FoldInfo, UnfoldInfo } from 'src/types'\nimport type { Encoding } from 'src/types'\n\nexport const encodingAR: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const { datasetReshapeInfo, dimensions, measures } = advancedVSeed\n if (!datasetReshapeInfo || !dimensions || !measures) {\n return result\n }\n\n const angleDimension =\n (dimensions as Dimensions).find(\n (item) => item.location !== 'rowDimension' && item.location !== 'columnDimension',\n ) || dimensions[0]\n\n const isZeroDimension = dimensions.length === 0\n\n const encoding = datasetReshapeInfo.reduce<Encoding>((prev, cur) => {\n const { foldInfo, unfoldInfo } = cur as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n const angle = [isZeroDimension ? foldInfo.measureName : angleDimension?.id]\n const radius = [foldInfo.measureValue]\n const group = [unfoldInfo.groupId]\n const color = [unfoldInfo.groupId]\n\n return [\n ...prev,\n {\n angle,\n radius,\n group,\n color,\n },\n ] as Encoding\n }, [])\n\n return {\n ...result,\n encoding,\n }\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n annotation,\n markStyle,\n sortLegend,\n radarConfig,\n encodingAR,\n reshapeTo2D1M0Name,\n pivotReshapeTo2D1M0Name,\n} from '../pipes'\n\nexport const radarAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M0Name], [pivotReshapeTo2D1M0Name]),\n encodingAR,\n // sortXBandAxis,\n sortLegend,\n radarConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IRadarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initRadar: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRadarChartSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].angle || !encoding[0].radius || !encoding[0].group) {\n return result\n }\n\n result.type = 'radar'\n result.angleField = encoding[0].angle[0]\n result.radiusField = encoding[0].radius[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const radarAngleAxis: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRoseChartSpec\n const { advancedVSeed } = context\n const { dimensions, measures } = advancedVSeed\n\n if (!dimensions || !measures) {\n return result\n }\n\n if (!result.axes) {\n result.axes = []\n }\n\n result.axes.push({\n orient: 'angle',\n visible: true,\n zero: true,\n nice: true,\n grid: {\n visible: true,\n },\n domainLine: {\n visible: true,\n },\n tick: {\n visible: true,\n },\n })\n\n return result\n}\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const radarRadiusAxis: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRoseChartSpec\n const { advancedVSeed } = context\n const { dimensions, measures } = advancedVSeed\n\n if (!dimensions || !measures) {\n return result\n }\n\n if (!result.axes) {\n result.axes = []\n }\n\n result.axes.push({\n orient: 'radius',\n visible: true,\n zero: true,\n nice: true,\n grid: {\n visible: true,\n },\n tick: {\n visible: true,\n },\n label: {\n visible: true,\n },\n domainLine: {\n visible: true,\n },\n })\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n initPivot,\n datasetPivot,\n pivotDiscreteLegend,\n pivotIndicators,\n pivotAdapter,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n pointStyle,\n lineStyle,\n verticalCrosshairLine,\n pointStateDimensionHover,\n initRadar,\n areaStyle,\n radarAngleAxis,\n radarRadiusAxis,\n progressive,\n} from '../pipes'\n\nconst radar: SpecPipeline = [\n initRadar,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n radarAngleAxis,\n radarRadiusAxis,\n label,\n tooltip,\n verticalCrosshairLine,\n discreteLegend,\n pointStyle,\n pointStateDimensionHover,\n lineStyle,\n areaStyle,\n // annotationPoint,\n // annotationVerticalLine,\n // annotationHorizontalLine,\n // annotationArea,\n]\n\nconst pivotRadar: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initRadar,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n radarAngleAxis,\n radarRadiusAxis,\n label,\n tooltip,\n verticalCrosshairLine,\n pointStyle,\n pointStateDimensionHover,\n lineStyle,\n areaStyle,\n // annotationPoint,\n // annotationVerticalLine,\n // annotationHorizontalLine,\n // annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const radarSpecPipeline: SpecPipeline = [pivotAdapter(radar, pivotRadar)]\n","import { radarAdvancedPipeline, radarSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerRadar = () => {\n Builder._advancedPipelineMap['radar'] = radarAdvancedPipeline\n Builder._specPipelineMap['radar'] = radarSpecPipeline\n}","import type { AdvancedPipe, FoldInfo, UnfoldInfo } from 'src/types'\nimport type { Encoding } from 'src/types'\n\nexport const encodingFunnel: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const { datasetReshapeInfo } = advancedVSeed\n if (!datasetReshapeInfo) {\n return result\n }\n\n const encoding = datasetReshapeInfo.reduce<Encoding>((prev, cur) => {\n const { foldInfo, unfoldInfo } = cur as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n const size = [foldInfo.measureValue]\n const group = [unfoldInfo.groupId]\n const color = [foldInfo.measureValue]\n\n return [\n ...prev,\n {\n size,\n group,\n color,\n },\n ] as Encoding\n }, [])\n\n return {\n ...result,\n encoding,\n }\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n reshapeTo1D1M,\n pivotReshapeTo1D1M,\n annotation,\n encodingFunnel,\n funnelConfig,\n} from '../pipes'\n\nexport const funnelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo1D1M], [pivotReshapeTo1D1M]),\n encodingFunnel,\n funnelConfig,\n theme,\n annotation,\n]\n","import type { IFunnelChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initFunnel: SpecPipe = (spec, context) => {\n const result = { ...spec } as IFunnelChartSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].size || !encoding[0].group || !encoding[0].color) {\n return result\n }\n\n result.type = 'funnel'\n result.valueField = encoding[0].size[0]\n result.categoryField = encoding[0].group[0]\n result.padding = 0\n result.isTransform = true\n result.shape = 'rect'\n result.maxSize = '75%'\n result.minSize = '10%'\n result.region = [\n {\n clip: true,\n },\n ]\n result.funnel = {\n style: {\n cornerRadius: 4,\n fill: {\n field: encoding[0].color[0],\n scale: 'color',\n },\n },\n state: {\n hover: {\n fillOpacity: 0.6,\n },\n },\n }\n result.transformLabel = {\n visible: true,\n }\n\n result.animation = true\n\n return result\n}\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport type { Color, SpecPipe } from 'src/types'\n\nexport const linearColor: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo, chartType, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { color: Color }\n\n if (!baseConfig || !baseConfig.color) {\n return result\n }\n\n const { color } = baseConfig\n const { colorScheme } = color\n\n result.color = {\n type: 'linear',\n domain: [\n {\n dataId: datasetReshapeInfo[0].id,\n fields: encoding?.[0]?.color,\n },\n ],\n range: colorScheme,\n } as ILineChartSpec['color']\n return result\n}\n","import type { Legend, SpecPipe } from 'src/types'\n\nexport const colorLegend: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { legend: Legend }\n const { encoding } = advancedVSeed\n\n if (!encoding[0].color) {\n return result\n }\n\n if (!baseConfig || !baseConfig.legend) {\n return result\n }\n\n const { legend } = baseConfig\n const { enable, position = 'bottom' } = legend || {}\n\n const orient = ['bottom', 'bottomLeft', 'bottomRight', 'bl', 'br'].includes(position)\n ? 'bottom'\n : ['top', 'topLeft', 'topRight', 'tl', 'tr'].includes(position)\n ? 'top'\n : ['left', 'leftTop', 'leftBottom', 'lt', 'lb'].includes(position)\n ? 'left'\n : 'right'\n\n const legendPosition = ['topLeft', 'bottomLeft', 'leftTop', 'rightTop', 'lt', 'rt', 'tl', 'bl'].includes(position)\n ? 'start'\n : ['topRight', 'bottomRight', 'leftBottom', 'rightBottom', 'lb', 'rb', 'rt', 'br'].includes(position)\n ? 'end'\n : 'middle'\n\n result.legends = {\n type: 'color',\n visible: enable,\n orient,\n position: legendPosition,\n field: encoding[0].color[0],\n inverse: ['left', 'right'].includes(orient) ? true : false,\n }\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n backgroundColor,\n datasetXY,\n datasetPivot,\n initPivot,\n label,\n colorLegend,\n pivotAdapter,\n pivotColumnDimensions,\n pivotGridStyle,\n pivotIndicators,\n pivotIndicatorsAsRow,\n pivotRowDimensions,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n initFunnel,\n linearColor,\n} from '../pipes'\n\nconst funnel: SpecPipeline = [\n initFunnel,\n linearColor,\n backgroundColor,\n datasetXY,\n label,\n tooltip,\n colorLegend,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotFunnel: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initFunnel,\n linearColor,\n backgroundColor,\n datasetXY,\n label,\n tooltip,\n colorLegend,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n]\n\nexport const funnelSpecPipeline: SpecPipeline = [pivotAdapter(funnel, pivotFunnel)]\n","import { funnelAdvancedPipeline, funnelSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerFunnel = () => {\n Builder._advancedPipelineMap['funnel'] = funnelAdvancedPipeline\n Builder._specPipelineMap['funnel'] = funnelSpecPipeline\n}","import type { AdvancedPipe, Dimensions, FoldInfo, UnfoldInfo } from 'src/types'\nimport type { Encoding } from 'src/types'\n\nexport const encodingMatrix: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const { datasetReshapeInfo, dimensions } = advancedVSeed\n if (!datasetReshapeInfo || !dimensions) {\n return result\n }\n\n const xDimension =\n (dimensions as Dimensions).find(\n (item) => item.location !== 'rowDimension' && item.location !== 'columnDimension',\n ) || dimensions[0]\n\n const isZeroDimension = dimensions.length === 0\n\n const encoding = datasetReshapeInfo.reduce<Encoding>((prev, cur) => {\n const { foldInfo, unfoldInfo } = cur as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n const x = [isZeroDimension ? foldInfo.measureName : xDimension?.id]\n const y = [unfoldInfo.groupName]\n const color = [foldInfo.measureValue]\n\n return [\n ...prev,\n {\n x,\n y,\n color,\n },\n ] as Encoding\n }, [])\n\n return {\n ...result,\n encoding,\n }\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n initAdvancedVSeed,\n reshapeTo2D1M,\n theme,\n pivotAdapter,\n pivotReshapeTo2D1M,\n annotation,\n markStyle,\n sortXBandAxis,\n heatmapConfig,\n} from '../pipes'\nimport { encodingMatrix } from '../pipes/encoding/encodingMatrix'\n\nexport const heatmapAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingMatrix,\n sortXBandAxis,\n heatmapConfig,\n theme,\n markStyle,\n annotation\n]\n","import type { IHeatmapChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const labelColorInversion: SpecPipe = (spec) => {\n const result = { ...spec } as IHeatmapChartSpec\n if (result.label) {\n result.label.smartInvert = true\n } else {\n result.label = {\n smartInvert: true,\n }\n }\n return result\n}\n","import type { IHeatmapChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initHeatmap: SpecPipe = (spec, context) => {\n const result = { ...spec } as IHeatmapChartSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].color) {\n return result\n }\n\n result.type = 'heatmap'\n result.direction = 'vertical'\n result.xField = encoding[0].x[0]\n result.yField = encoding[0].y[0]\n result.valueField = encoding[0].color[0]\n result.padding = 0\n result.cell = {\n style: {\n shape: 'rect',\n stroke: '#ffffff',\n lineWidth: 1,\n fill: {\n field: encoding[0].color[0],\n scale: 'color',\n },\n },\n }\n result.axes = [\n {\n type: 'band',\n orient: 'left',\n bandPadding: 0,\n },\n {\n type: 'band',\n orient: 'bottom',\n bandPadding: 0,\n },\n ]\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n backgroundColor,\n label,\n tooltip,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotAdapter,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n pointStyle,\n lineStyle,\n pointStateDimensionHover,\n colorLegend,\n linearColor,\n labelColorInversion,\n} from '../pipes'\nimport { initHeatmap } from '../pipes/init/heatmap'\n\nconst heatmap: SpecPipeline = [\n initHeatmap,\n linearColor,\n backgroundColor,\n datasetXY,\n label,\n labelColorInversion,\n colorLegend,\n tooltip,\n pointStyle,\n pointStateDimensionHover,\n lineStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotHeatmap: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initHeatmap,\n linearColor,\n backgroundColor,\n datasetXY,\n label,\n labelColorInversion,\n colorLegend,\n tooltip,\n pointStyle,\n pointStateDimensionHover,\n lineStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n]\n\nexport const heatmapSpecPipeline: SpecPipeline = [pivotAdapter(heatmap, pivotHeatmap)]\n","import { heatmapAdvancedPipeline, heatmapSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerHeatmap = () => {\n Builder._advancedPipelineMap['heatmap'] = heatmapAdvancedPipeline\n Builder._specPipelineMap['heatmap'] = heatmapSpecPipeline\n}","import type {\n BackgroundColor,\n Color,\n CustomThemeConfig,\n Label,\n Legend,\n TableConfig,\n Tooltip,\n YBandAxis,\n YLinearAxis,\n} from 'src/types'\n\nexport const lightTheme = (): CustomThemeConfig => {\n const linearAxis: YLinearAxis = {\n nice: true,\n zero: true,\n inverse: false,\n label: {\n visible: true,\n labelAngle: 0,\n labelColor: '#797B85',\n labelFontSize: 12,\n labelFontWeight: 400,\n },\n title: {\n visible: false,\n titleText: '',\n titleColor: '#646A73',\n titleFontSize: 12,\n titleFontWeight: 400,\n },\n grid: {\n visible: true,\n gridColor: '#36415926',\n gridWidth: 0.5,\n },\n tick: {\n visible: false,\n tickInside: false,\n tickSize: 4,\n tickColor: '#3641594d',\n },\n line: {\n visible: false,\n lineColor: '#3641594d',\n lineWidth: 1,\n },\n }\n const bandAxis: YBandAxis = {\n labelAutoHide: true,\n labelAutoHideGap: 4,\n labelAutoLimit: true,\n labelAutoLimitLength: 80,\n labelAutoRotate: false,\n labelAutoRotateAngleRange: [0, -45, -90],\n label: {\n visible: true,\n labelAngle: 0,\n labelColor: '#797B85',\n labelFontSize: 12,\n labelFontWeight: 400,\n },\n title: {\n visible: false,\n titleText: '',\n titleColor: '#646A73',\n titleFontSize: 12,\n titleFontWeight: 400,\n },\n grid: {\n visible: false,\n gridColor: '#36415926',\n gridWidth: 0.5,\n },\n tick: {\n visible: false,\n tickInside: false,\n tickSize: 4,\n tickColor: '#3641594d',\n },\n line: {\n visible: true,\n lineColor: '#3641594d',\n lineWidth: 1,\n },\n }\n const barBandAxis: YBandAxis = {\n ...bandAxis,\n labelAutoHide: false,\n labelAutoHideGap: 1,\n labelAutoLimit: false,\n labelAutoLimitLength: undefined,\n labelAutoRotate: false,\n labelAutoRotateAngleRange: [0, -45, -90],\n }\n\n const crosshairLine = {\n visible: true,\n labelVisible: true,\n lineColor: '#3641594d',\n labelColor: '#ffffff',\n labelBackgroundColor: '#364159',\n }\n const crosshairRect = {\n visible: true,\n labelVisible: true,\n rectColor: '#3641594d',\n labelColor: '#ffffff',\n labelBackgroundColor: '#364159',\n }\n\n const baseConfig: {\n backgroundColor?: BackgroundColor\n color?: Color\n label?: Label\n tooltip?: Tooltip\n legend?: Legend\n } = {\n backgroundColor: 'transparent',\n color: {\n colorScheme: [\n '#8D72F6',\n '#5766EC',\n '#66A3FE',\n '#51D5E6',\n '#4EC0B3',\n '#F9DF90',\n '#F9AD71',\n '#ED8888',\n '#E9A0C3',\n '#D77DD3',\n ],\n },\n label: {\n enable: true,\n },\n tooltip: {\n enable: true,\n },\n legend: {\n enable: true,\n border: true,\n maxSize: 1,\n shapeType: 'rectRound',\n position: 'rt',\n labelFontColor: '#646A73',\n labelFontSize: 12,\n labelFontWeight: 400,\n },\n }\n const tableConfig: TableConfig = {\n borderColor: '#e3e5eb',\n\n bodyFontSize: 12,\n bodyFontColor: '#141414',\n bodyBackgroundColor: 'transparent',\n\n headerFontSize: 12,\n headerFontColor: '#21252c',\n headerBackgroundColor: '#f6f7f9',\n\n hoverBodyBackgroundColor: '#bedaff',\n hoverBodyInlineBackgroundColor: '#bedaff33',\n hoverHeaderBackgroundColor: '#D9DDE4',\n hoverHeaderInlineBackgroundColor: '#D9DDE455',\n\n selectedBorderColor: '#4080ff',\n selectedBackgroundColor: '#bedaff33',\n\n backgroundColor: 'transparent',\n }\n\n return {\n config: {\n // table\n table: tableConfig,\n pivotTable: tableConfig,\n // cartesian\n line: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine,\n },\n column: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairRect,\n stackCornerRadius: [4, 4, 4, 4],\n },\n columnParallel: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairRect,\n stackCornerRadius: [4, 4, 4, 4],\n },\n columnPercent: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairRect,\n stackCornerRadius: [4, 4, 4, 4],\n },\n bar: {\n ...baseConfig,\n xAxis: linearAxis,\n yAxis: barBandAxis,\n crosshairRect,\n stackCornerRadius: [4, 4, 4, 4],\n },\n barParallel: {\n ...baseConfig,\n xAxis: linearAxis,\n yAxis: barBandAxis,\n crosshairRect,\n stackCornerRadius: [4, 4, 4, 4],\n },\n barPercent: {\n ...baseConfig,\n xAxis: linearAxis,\n yAxis: barBandAxis,\n crosshairRect,\n stackCornerRadius: [4, 4, 4, 4],\n },\n area: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine,\n },\n areaPercent: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine,\n },\n areaRange: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine,\n },\n scatter: {\n ...baseConfig,\n xAxis: {\n ...linearAxis,\n line: {\n ...linearAxis.line,\n visible: true,\n },\n },\n yAxis: {\n ...linearAxis,\n line: {\n ...linearAxis.line,\n visible: true,\n },\n },\n crosshairLine,\n },\n dualAxis: {\n ...baseConfig,\n xAxis: bandAxis,\n primaryYAxis: linearAxis,\n secondaryYAxis: { ...linearAxis, grid: { visible: false } },\n dualChartType: {\n primary: 'column',\n secondary: 'line',\n },\n crosshairRect,\n },\n // polar\n pie: {\n ...baseConfig,\n },\n donut: {\n ...baseConfig,\n },\n radar: {\n ...baseConfig,\n },\n rose: {\n ...baseConfig,\n },\n roseParallel: {\n ...baseConfig,\n },\n // other\n funnel: {\n ...baseConfig,\n color: {\n colorScheme: [\n '#5766EC',\n '#6372F0',\n '#7080F4',\n '#7C8CFA',\n '#8998FF',\n '#95A3FF',\n '#A0AEFF',\n '#ACB9FF',\n '#B7C4FF',\n '#C2CEFF',\n ].reverse(),\n },\n },\n heatmap: {\n ...baseConfig,\n color: {\n colorScheme: [\n '#5766EC',\n '#6372F0',\n '#7080F4',\n '#7C8CFA',\n '#8998FF',\n '#95A3FF',\n '#A0AEFF',\n '#ACB9FF',\n '#B7C4FF',\n '#C2CEFF',\n ].reverse(),\n },\n },\n },\n }\n}\n","import type {\n BackgroundColor,\n Color,\n CustomThemeConfig,\n Label,\n Legend,\n TableConfig,\n Tooltip,\n YBandAxis,\n YLinearAxis,\n} from 'src/types'\n\nexport const darkTheme = (): CustomThemeConfig => {\n const linearAxis: YLinearAxis = {\n nice: true,\n zero: true,\n label: {\n visible: true,\n labelAngle: 0,\n labelColor: '#E2E3E6',\n labelFontSize: 12,\n labelFontWeight: 400,\n },\n title: {\n visible: false,\n titleText: '',\n titleColor: '#FDFDFD',\n titleFontSize: 12,\n titleFontWeight: 400,\n },\n grid: {\n visible: true,\n gridColor: '#404349',\n gridWidth: 0.5,\n },\n tick: {\n visible: false,\n tickInside: false,\n tickSize: 4,\n tickColor: '#4B4F54',\n },\n line: {\n visible: false,\n lineColor: '#4B4F54',\n lineWidth: 1,\n },\n }\n const bandAxis: YBandAxis = {\n labelAutoHide: true,\n labelAutoHideGap: 4,\n labelAutoLimit: true,\n labelAutoLimitLength: 80,\n labelAutoRotate: false,\n labelAutoRotateAngleRange: [0, -45, -90],\n label: {\n visible: true,\n labelAngle: 0,\n labelColor: '#E2E3E6',\n labelFontSize: 12,\n labelFontWeight: 400,\n },\n title: {\n visible: false,\n titleText: '',\n titleColor: '#FDFDFD',\n titleFontSize: 12,\n titleFontWeight: 400,\n },\n grid: {\n visible: false,\n gridColor: '#404349',\n gridWidth: 0.5,\n },\n tick: {\n visible: false,\n tickInside: false,\n tickSize: 4,\n tickColor: '#4B4F54',\n },\n line: {\n visible: true,\n lineColor: '#4B4F54',\n lineWidth: 1,\n },\n }\n const barBandAxis: YBandAxis = {\n ...bandAxis,\n labelAutoHide: false,\n labelAutoHideGap: 1,\n labelAutoLimit: false,\n labelAutoLimitLength: undefined,\n labelAutoRotate: false,\n labelAutoRotateAngleRange: [0, -45, -90],\n }\n const crosshairLine = {\n visible: true,\n labelVisible: true,\n lineColor: '#E2E3E6',\n labelColor: '#4B4F54',\n labelBackgroundColor: '#ffffff',\n }\n const crosshairRect = {\n visible: true,\n labelVisible: true,\n lineColor: '#E2E3E6',\n labelColor: '#4B4F54',\n labelBackgroundColor: '#ffffff',\n }\n\n const baseConfig: {\n backgroundColor?: BackgroundColor\n color?: Color\n label?: Label\n tooltip?: Tooltip\n legend?: Legend\n } = {\n backgroundColor: 'transparent',\n color: {\n colorScheme: [\n '#2E62F1',\n '#4DC36A',\n '#FF8406',\n '#FFCC00',\n '#4F44CF',\n '#5AC8FA',\n '#003A8C',\n '#B08AE2',\n '#FF6341',\n '#98DD62',\n ],\n },\n label: {\n enable: true,\n },\n tooltip: {\n enable: true,\n },\n legend: {\n enable: true,\n border: true,\n maxSize: 1,\n position: 'rt',\n shapeType: 'rectRound',\n labelFontColor: '#FDFDFD',\n labelFontSize: 12,\n labelFontWeight: 400,\n },\n }\n\n const tableConfig: TableConfig = {\n borderColor: '#4b4e53',\n\n bodyFontSize: 12,\n bodyFontColor: '#fdfdfd',\n bodyBackgroundColor: 'transparent',\n\n headerFontSize: 12,\n headerFontColor: '#fdfdfd',\n headerBackgroundColor: '#36393e',\n\n hoverBodyBackgroundColor: '#4284ff66',\n hoverBodyInlineBackgroundColor: '#4284ff10',\n hoverHeaderBackgroundColor: '#6f7984cc',\n hoverHeaderInlineBackgroundColor: '#4b4f54',\n\n selectedBorderColor: '#3073f2',\n selectedBackgroundColor: '#4284ff33',\n }\n\n return {\n config: {\n table: tableConfig,\n pivotTable: tableConfig,\n\n // cartesian\n line: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine: crosshairLine,\n },\n column: {\n ...baseConfig,\n\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairRect: crosshairRect,\n stackCornerRadius: [4, 4, 4, 4],\n },\n columnParallel: {\n ...baseConfig,\n\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairRect: crosshairRect,\n stackCornerRadius: [4, 4, 4, 4],\n },\n columnPercent: {\n ...baseConfig,\n\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairRect: crosshairRect,\n stackCornerRadius: [4, 4, 4, 4],\n },\n bar: {\n ...baseConfig,\n\n xAxis: linearAxis,\n yAxis: barBandAxis,\n crosshairRect: crosshairRect,\n stackCornerRadius: [0, 4, 4, 0],\n },\n barParallel: {\n ...baseConfig,\n\n xAxis: linearAxis,\n yAxis: barBandAxis,\n crosshairRect: crosshairRect,\n stackCornerRadius: [4, 4, 4, 4],\n },\n barPercent: {\n ...baseConfig,\n\n xAxis: linearAxis,\n yAxis: barBandAxis,\n crosshairRect: crosshairRect,\n stackCornerRadius: [4, 4, 4, 4],\n },\n area: {\n ...baseConfig,\n\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine: crosshairLine,\n },\n areaPercent: {\n ...baseConfig,\n\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine: crosshairLine,\n },\n areaRange: {\n ...baseConfig,\n\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine: crosshairLine,\n },\n scatter: {\n ...baseConfig,\n\n xAxis: {\n ...linearAxis,\n line: {\n ...linearAxis.line,\n visible: true,\n },\n },\n yAxis: {\n ...linearAxis,\n line: {\n ...linearAxis.line,\n visible: true,\n },\n },\n crosshairLine,\n },\n dualAxis: {\n ...baseConfig,\n xAxis: bandAxis,\n primaryYAxis: linearAxis,\n secondaryYAxis: { ...linearAxis, grid: { visible: false } },\n dualChartType: {\n primary: 'column',\n secondary: 'line',\n },\n crosshairRect,\n },\n // polar\n pie: {\n ...baseConfig,\n },\n donut: {\n ...baseConfig,\n },\n radar: {\n ...baseConfig,\n },\n rose: {\n ...baseConfig,\n },\n roseParallel: {\n ...baseConfig,\n },\n // other\n funnel: {\n ...baseConfig,\n color: {\n colorScheme: [\n '#2E62F1',\n '#3A6EF6',\n '#4780FA',\n '#548CFE',\n '#6198FF',\n '#6FA3FF',\n '#7CACFF',\n '#88B7FF',\n '#94C2FF',\n '#A0CEFF',\n ],\n },\n },\n heatmap: {\n ...baseConfig,\n },\n },\n }\n}\n","import type { CustomThemeConfig } from 'src/types'\nimport { Builder } from '../../builder'\nimport { darkTheme, lightTheme } from '../../../theme'\n\nexport const registerCustomTheme = (\n key: string,\n themeConfig:\n | CustomThemeConfig\n | ((props: { lightTheme: CustomThemeConfig; darkTheme: CustomThemeConfig }) => CustomThemeConfig),\n) => {\n const customTheme =\n typeof themeConfig === 'function' ? themeConfig({ lightTheme: lightTheme(), darkTheme: darkTheme() }) : themeConfig\n Builder._themeMap[key] = customTheme\n}\n","import { registerCustomTheme } from './custom'\nimport { lightTheme } from '../../../theme'\n\nexport const registerLightTheme = () => {\n registerCustomTheme('light', lightTheme())\n}\n","import { darkTheme } from '../../../theme'\nimport { registerCustomTheme } from './custom'\n\nexport const registerDarkTheme = () => {\n registerCustomTheme('dark', darkTheme())\n}\n","import {\n registerArea,\n registerAreaPercent,\n registerBar,\n registerBarParallel,\n registerBarPercent,\n registerColumn,\n registerColumnParallel,\n registerColumnPercent,\n registerLine,\n registerPie,\n registerDonut,\n registerRose,\n registerRoseParallel,\n registerFunnel,\n registerScatter,\n registerTable,\n registerPivotTable,\n registerAreaRange,\n registerHeatmap,\n registerRadar,\n registerDualAxis,\n} from './chartType'\nimport { registerDarkTheme, registerLightTheme } from './theme'\n\nexport const registerAll = () => {\n // table\n registerTable()\n registerPivotTable()\n // cartesian\n registerLine()\n registerColumn()\n registerColumnParallel()\n registerColumnPercent()\n registerBar()\n registerBarParallel()\n registerBarPercent()\n registerArea()\n registerAreaPercent()\n registerAreaRange()\n registerScatter()\n registerDualAxis()\n // polar\n registerPie()\n registerDonut()\n registerRose()\n registerRoseParallel()\n registerRadar()\n // other\n registerFunnel()\n registerHeatmap()\n // theme\n registerLightTheme()\n registerDarkTheme()\n}\n","import type { AdvancedPipe, ChartType, SpecPipe } from 'src/types'\nimport { Builder } from '../builder'\n\nexport const updateAdvanced = (chartType: ChartType, advancedPipe: AdvancedPipe) => {\n Builder._customAdvancedPipe[chartType] = advancedPipe\n}\nexport const updateSpec = (chartType: ChartType, specPipe: SpecPipe) => {\n Builder._customSpecPipe[chartType] = specPipe\n}\n","import type { Dimension, DimensionGroup } from 'src/types'\n\nexport const isDimension = (dimension: Dimension | DimensionGroup): dimension is Dimension => {\n return !('children' in dimension)\n}\n\nexport const isDimensionGroup = (dimension: Dimension | DimensionGroup): dimension is DimensionGroup => {\n return 'children' in dimension\n}\n\nexport const isDimensions = (dimensions: Dimension[] | DimensionGroup[]): dimensions is Dimension[] => {\n return dimensions.every(isDimension)\n}\n","import { z } from 'zod'\n\nexport type ChartType =\n | 'table'\n | 'pivotTable'\n // cartesian\n | 'line'\n | 'column'\n | 'columnPercent'\n | 'columnParallel'\n | 'bar'\n | 'barPercent'\n | 'barParallel'\n | 'area'\n | 'areaPercent'\n | 'areaRange'\n | 'scatter'\n | 'dualAxis'\n // polar\n | 'rose'\n | 'roseParallel'\n | 'pie'\n | 'donut'\n | 'radar'\n // other\n | 'heatmap'\n | 'funnel'\n\nexport enum ChartTypeEnum {\n Table = 'table',\n PivotTable = 'pivotTable',\n // cartesian\n Line = 'line',\n Column = 'column',\n ColumnPercent = 'columnPercent',\n ColumnParallel = 'columnParallel',\n Bar = 'bar',\n BarPercent = 'barPercent',\n BarParallel = 'barParallel',\n Area = 'area',\n AreaPercent = 'areaPercent',\n AreaRange = 'areaRange',\n DualAxis = 'dualAxis',\n Scatter = 'scatter',\n // polar\n Rose = 'rose',\n RoseParallel = 'roseParallel',\n Pie = 'pie',\n Donut = 'donut',\n Radar = 'radar',\n // other\n Funnel = 'funnel',\n Heatmap = 'heatmap',\n}\n\nexport const zChartType = z.enum([\n 'table',\n 'pivotTable',\n // cartesian\n 'line',\n 'column',\n 'columnPercent',\n 'columnParallel',\n 'bar',\n 'barPercent',\n 'barParallel',\n 'area',\n 'areaPercent',\n 'areaRange',\n 'scatter',\n 'dualAxis',\n // polar\n 'rose',\n 'roseParallel',\n 'pie',\n 'donut',\n 'radar',\n // other\n 'funnel',\n 'heatmap',\n])\n","import { z } from 'zod'\n\n// 'columnPercent' 和 'areaPercent' 会改变轴值域为[0,1], VTable不支持.\nexport const zDualChartType = z.object({\n primary: z.enum(['line', 'column', 'columnParallel', 'area', 'scatter']).default('column'),\n secondary: z.enum(['line', 'column', 'columnParallel', 'area', 'scatter']).default('line'),\n})\n\nexport type DualChartType = z.infer<typeof zDualChartType>\n","import { z } from 'zod'\n\n/**\n * example dataset link:\n * [\n * { date: '2019', 20001:'type', profit:10, sales: null, },\n * { date: '2020', 20001:'type', profit:30, sales: -1.1, },\n * { date: '2021', 20001:'type', profit:30, sales: 1, },\n * { date: '2023', 20001:'type', profit:40, sales: undefined, },\n * { date: '2022', 20001:'type', profit:50, sales: 100, },\n * ]\n */\nexport const zDatum = z.record(z.string().or(z.number()), z.any())\nexport const zDataset = z.array(zDatum)\n\nexport type Datum = z.infer<typeof zDatum>\nexport type Dataset = z.infer<typeof zDataset>\n","import { z } from 'zod'\n\nexport type Dimension = {\n id: string\n alias?: string\n location?: 'dimension' | 'rowDimension' | 'columnDimension'\n}\n\nexport type DimensionGroup = {\n id: string\n alias?: string\n children?: (Dimension | DimensionGroup)[]\n}\n\nexport type Dimensions = Dimension[]\n\nexport type DimensionTree = (Dimension | DimensionGroup)[]\n\nexport const zDimension = z.object({\n id: z.string(),\n alias: z.string().optional(),\n location: z.enum(['dimension', 'rowDimension', 'columnDimension']).default('dimension'),\n})\nexport const zDimensionGroup: z.ZodType<DimensionGroup> = z.object({\n id: z.string(),\n alias: z.string().optional(),\n get children() {\n return z.array(zDimensionGroup.or(zDimension)).optional()\n },\n})\nexport const zDimensions = z.array(zDimension)\nexport const zDimensionTree = z.array(zDimensionGroup.or(zDimension))\n","import { z } from 'zod'\n\nexport interface NumFormat {\n /**\n * @description 数字格式化类型, 支持数值(十进制)、百分比(%)、千分比(‰)、科学计数法\n * @default 'number'\n */\n type?: 'number' | 'percent' | 'permille' | 'scientific'\n\n /**\n * @description 数值格式化比例, 百分比和千分比需要设置比例\n * @default 1\n * @example\n * - 100000 转换为 10万, ratio:10000, symbol:\"万\"\n * - 100000 转换为 10K, ratio:1000, symbol:\"K\"\n * - 100000 转换为 100%, ratio:100, symbol:\"%\"\n * - 100000 转换为 100‰, ratio:1000, symbol:\"‰\"\n */\n ratio?: number\n\n /**\n * @description 数值格式化符号, 例如%、‰\n * @default ''\n * @example\n * - 100000 转换为 10万, ratio:10000, symbol:\"万\"\n * - 100000 转换为 10K, ratio:1000, symbol:\"K\"\n * - 100000 转换为 100%, ratio:100, symbol:\"%\"\n * - 100000 转换为 100‰, ratio:1000, symbol:\"‰\"\n */\n symbol?: string\n\n /**\n * @description 数值格式化千分位分隔符\n * @default true\n */\n thousandSeparator?: boolean\n\n /**\n * @description 数值格式化后缀\n * @default ''\n */\n suffix?: string\n /**\n * @description 数值格式化前缀\n * @default ''\n */\n prefix?: string\n\n /**\n * @description 数值格式化小数位, 使用浏览器提供的 Intl.NumberFormat 中的 minimumFractionDigits 和 maximumFractionDigits 进行格式化, 优先级低于 significantDigits\n * @default 2\n * @example\n * - 1234.5678 转换为 1235, fractionDigits:0 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.6, fractionDigits:1 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.57, fractionDigits:2 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1230.568, fractionDigits:3 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.5678, fractionDigits:4 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.56780, fractionDigits:5 (roundingMode:halfCeil)\n */\n fractionDigits?: number\n\n /**\n * @description 数值格式化有效位, 使用浏览器提供的 Intl.NumberFormat 中的 minimumSignificantDigits 和 maximumSignificantDigits 进行格式化, 优先级高于 fractionDigits\n * @default undefined\n * @example\n * - 1234.5678 转换为 1000, significantDigits:1\n * - 1234.5678 转换为 1200, significantDigits:2\n * - 1234.5678 转换为 1230, significantDigits:3\n * - 1234.5678 转换为 1234, significantDigits:4\n * - 1234.5678 转换为 1234.6, significantDigits:5 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.57, significantDigits:6 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.568, significantDigits:7 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.5678, significantDigits:8 (roundingMode:halfCeil)\n */\n significantDigits?: number\n\n /**\n * @description 数值格式化舍入优先级, 处理同时设置了 significantDigits 和 fractionDigits 时的舍入优先级, 使用浏览器提供的 Intl.NumberFormat 进行格式化, 规则同 Intl.NumberFormat 中的 roundingPriority\n * @default 'morePrecision'\n * @example\n * - 1234.5678 转换为 1230, significantDigits:3 (roundingPriority:lessPrecision)\n * - 1234.5678 转换为 1234.5678, significantDigits:3 (roundingPriority:morePrecision)\n */\n roundingPriority?: 'morePrecision' | 'lessPrecision'\n\n /**\n * @description 数值格式化舍入模式, 使用浏览器提供的 Intl.NumberFormat 进行格式化, 规则同 Intl.NumberFormat 中的 roundingMode\n * @default 'halfExpand'\n * @example\n */\n roundingMode?:\n | 'floor'\n | 'ceil'\n | 'expand'\n | 'trunc'\n | 'halfCeil'\n | 'halfFloor'\n | 'halfExpand'\n | 'halfTrunc'\n | 'halfEven'\n}\n\nexport const zNumFormat = z\n .object({\n type: z.enum(['number', 'percent', 'permille', 'scientific']).default('number').optional(),\n ratio: z.number().default(1).optional(),\n symbol: z.string().default('').optional(),\n thousandSeparator: z.boolean().default(false).optional(),\n prefix: z.string().default('').optional(),\n suffix: z.string().default('').optional(),\n\n fractionDigits: z.number().default(2).optional(),\n significantDigits: z.number().default(0).optional(),\n roundingPriority: z.enum(['morePrecision', 'lessPrecision']).default('morePrecision').optional(),\n roundingMode: z\n .enum(['floor', 'ceil', 'halfEven', 'expand', 'trunc', 'halfFloor', 'halfCeil', 'halfExpand', 'halfTrunc'])\n .default('halfCeil')\n .optional(),\n })\n .optional()\n","import { z } from 'zod'\nimport { zNumFormat } from './format/numFormat'\nimport type { MeasureGroup } from './measures'\n\nexport const zMeasure = z.object({\n id: z.string(),\n alias: z.string().optional(),\n autoFormat: z.boolean().default(true),\n format: zNumFormat.default({}),\n})\n\nexport const zMeasureGroup: z.ZodType<MeasureGroup> = z.object({\n id: z.string(),\n alias: z.string().optional(),\n get children() {\n return z.array(zMeasureGroup.or(zMeasure)).optional()\n },\n})\n\nexport const zMeasures = z.array(zMeasure)\nexport const zMeasureTree = z.array(zMeasureGroup.or(zMeasure))\n","import { z } from 'zod'\nimport { zMeasure } from './zMeasures'\n\nexport const zDualMeasure = z.object({\n id: z.string(),\n\n primaryMeasures: z.array(zMeasure).or(zMeasure).optional(),\n\n secondaryMeasures: z.array(zMeasure).or(zMeasure).optional(),\n})\n\nexport const zDualMeasures = z.array(zDualMeasure)\n","import { z } from 'zod'\n\nexport type FoldInfo = {\n foldMap: Record<string, string | undefined>\n measureId: string\n measureName: string\n measureValue: string\n}\n\nexport type UnfoldInfo = {\n groupName: string\n groupId: string\n colorItems: string[]\n colorIdMap: Record<string, string>\n}\n\nexport const zFoldInfo = z.object({\n foldMap: z.record(z.string(), z.string().or(z.undefined())),\n measureId: z.string(),\n measureName: z.string(),\n measureValue: z.string(),\n})\nexport const zUnfoldInfo = z.object({\n colorItems: z.array(z.string()),\n groupId: z.string(),\n colorIdMap: z.record(z.string(), z.string()),\n groupName: z.string(),\n})\n\nexport const zDatasetReshapeInfo = z.array(\n z.object({\n id: z.string(),\n index: z.number(),\n foldInfo: zFoldInfo,\n foldInfoList: z.array(zFoldInfo).nullish(),\n unfoldInfo: zUnfoldInfo,\n }),\n)\n\nexport type DatasetReshapeInfo = z.infer<typeof zDatasetReshapeInfo>\n","import { z } from 'zod'\n\nexport const zEncoding = z.array(\n z.object({\n x: z.array(z.string()).nullish(),\n y: z.array(z.string()).nullish(),\n color: z.array(z.string()).nullish(),\n group: z.array(z.string()).nullish(),\n angle: z.array(z.string()).nullish(),\n radius: z.array(z.string()).nullish(),\n tooltip: z.array(z.string()).nullish(),\n size: z.array(z.string()).nullish(),\n }),\n)\n\nexport type Encoding = Array<{\n x?: string[]\n y?: string[]\n color?: string[]\n group?: string[]\n angle?: string[]\n radius?: string[]\n tooltip?: string[]\n size?: string[]\n}>\n","import { z } from 'zod'\nimport type { Axis } from './axis'\n\nexport type XBandAxis = Omit<Axis, 'min' | 'max' | 'nice' | 'zero' | 'log' | 'logBase'>\nexport type YBandAxis = Omit<Axis, 'min' | 'max' | 'nice' | 'zero' | 'log' | 'logBase'>\n\nexport const zXBandAxis = z.object({\n visible: z.boolean().default(true).nullish(),\n\n labelAutoHide: z.boolean().default(true).nullish(),\n labelAutoHideGap: z.number().default(0).nullish(),\n labelAutoRotate: z.boolean().default(true).nullish(),\n labelAutoRotateAngleRange: z.array(z.number()).default([0, -45, -90]).nullish(),\n labelAutoLimit: z.boolean().default(true).nullish(),\n labelAutoLimitLength: z.number().default(100).nullish(),\n label: z\n .object({\n visible: z.boolean().default(true).nullish(),\n labelColor: z.string().default('#797B85').nullish(),\n labelFontSize: z.number().default(12).nullish(),\n labelFontWeight: z.number().default(400).nullish(),\n labelAngle: z.number().default(0).nullish(),\n })\n .nullish(),\n line: z\n .object({\n visible: z.boolean().default(true).nullish(),\n lineColor: z.string().default('rgba(54, 65, 89, 0.30)').nullish(),\n lineWidth: z.number().default(1).nullish(),\n })\n .nullish(),\n tick: z\n .object({\n visible: z.boolean().default(true).nullish(),\n tickInside: z.boolean().default(false).nullish(),\n tickColor: z.string().default('rgba(54, 65, 89, 0.30)').nullish(),\n tickSize: z.number().default(4).nullish(),\n })\n .nullish(),\n title: z\n .object({\n visible: z.boolean().default(false).nullish(),\n titleText: z.string().default('').nullish(),\n titleColor: z.string().default('#646A73').nullish(),\n titleFontSize: z.number().default(12).nullish(),\n titleFontWeight: z.number().default(400).nullish(),\n })\n .nullish(),\n grid: z\n .object({\n visible: z.boolean().default(false).nullish(),\n gridColor: z.string().default('rgba(54, 65, 89, 0.15)').nullish(),\n gridWidth: z.number().default(0.5).nullish(),\n })\n .nullish(),\n})\nexport const zYBandAxis = zXBandAxis\n","import { z } from 'zod'\nimport { type Axis } from './axis'\n\nexport type XLinearAxis = Omit<\n Axis,\n | 'labelAutoHide'\n | 'labelAutoHideGap'\n | 'labelAutoRotate'\n | 'labelAutoRotateAngleRange'\n | 'labelAutoLimit'\n | 'labelAutoLimitLength'\n>\nexport type YLinearAxis = Omit<\n Axis,\n | 'labelAutoHide'\n | 'labelAutoHideGap'\n | 'labelAutoRotate'\n | 'labelAutoRotateAngleRange'\n | 'labelAutoLimit'\n | 'labelAutoLimitLength'\n>\n\nexport const zXLinearAxis = z.object({\n visible: z.boolean().default(true).nullish(),\n\n min: z.number().nullish(),\n max: z.number().nullish(),\n nice: z.boolean().default(true).nullish(),\n zero: z.boolean().default(true).nullish(),\n log: z.boolean().default(false).nullish(),\n logBase: z.number().default(10).nullish(),\n inverse: z.boolean().default(false).nullish(),\n\n label: z\n .object({\n visible: z.boolean().default(true).nullish(),\n labelColor: z.string().default('#797B85').nullish(),\n labelFontSize: z.number().default(12).nullish(),\n labelFontWeight: z.number().default(400).nullish(),\n labelAngle: z.number().default(0).nullish(),\n })\n .nullish(),\n line: z\n .object({\n visible: z.boolean().default(true).nullish(),\n lineColor: z.string().default('rgba(54, 65, 89, 0.30)').nullish(),\n lineWidth: z.number().default(1).nullish(),\n })\n .nullish(),\n tick: z\n .object({\n visible: z.boolean().default(true).nullish(),\n tickInside: z.boolean().default(false).nullish(),\n tickColor: z.string().default('rgba(54, 65, 89, 0.30)').nullish(),\n tickSize: z.number().default(4).nullish(),\n })\n .nullish(),\n title: z\n .object({\n visible: z.boolean().default(false).nullish(),\n titleText: z.string().default('').nullish(),\n titleColor: z.string().default('#646A73').nullish(),\n titleFontSize: z.number().default(12).nullish(),\n titleFontWeight: z.number().default(400).nullish(),\n })\n .nullish(),\n grid: z\n .object({\n visible: z.boolean().default(false).nullish(),\n gridColor: z.string().default('rgba(54, 65, 89, 0.15)').nullish(),\n gridWidth: z.number().default(0.5).nullish(),\n })\n .nullish(),\n})\n\nexport const zYLinearAxis = zXLinearAxis\n","import { z } from 'zod'\n\nexport const zCrosshairLine = z.object({\n visible: z.boolean().nullish(),\n lineColor: z.string().nullish(),\n labelColor: z.string().nullish(),\n labelVisible: z.boolean().nullish(),\n labelBackgroundColor: z.string().nullish(),\n})\n\nexport type CrosshairLine = z.infer<typeof zCrosshairLine>\n\nexport const zCrosshairRect = z.object({\n visible: z.boolean().nullish(),\n rectColor: z.string().nullish(),\n labelColor: z.string().nullish(),\n labelVisible: z.boolean().nullish(),\n labelBackgroundColor: z.string().nullish(),\n})\n\nexport type CrosshairRect = z.infer<typeof zCrosshairLine>\n","import { z } from 'zod'\n\nexport const zStackCornerRadius = z.number().or(z.array(z.number())).default([3, 3, 0, 0])\n\nexport type StackCornerRadius = z.infer<typeof zStackCornerRadius>\n","import { z } from 'zod'\nexport const zBackgroundColor = z.string().default('transparent').nullish()\n\n/**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\nexport type BackgroundColor = string | undefined\n","import { z } from 'zod'\n\nexport const zColor = z.object({\n colorScheme: z.array(z.string()).nullish(),\n colorMapping: z.record(z.string(), z.string()).nullish(),\n})\n\nexport const zLinearColor = z.object({\n colorScheme: z.array(z.string()).nullish(),\n})\n\nexport type Color = {\n /**\n * 颜色配色方案\n * @description 颜色配色方案用于定义图表中不同元素的颜色\n * @example ['#FFCDD2,#F8BBD0,#E1BEE7,#D1C4E9,#C5CAE9,#BBDEFB,#B3E5FC,#B2EBF2,#B2DFDB,#C8E6C9,#DCEDC8,#F0F4C3,#FFF9C4,#FFECB3,#FFE0B2']\n */\n colorScheme?: string[]\n /**\n * 颜色映射\n * @description 颜色映射用于将数据值映射到具体的颜色\n * @example\n * {\n * 'profit': 'red',\n * 'sales': 'blue',\n * }\n */\n colorMapping?: Record<string, string>\n}\n\nexport type LinearColor = {\n /**\n * 线性渐变颜色配色方案\n * @description 线性渐变颜色配色方案用于定义图表中不同元素的颜色\n * @example ['#FFCDD2,#F8BBD0,#E1BEE7,#D1C4E9,#C5CAE9,#BBDEFB,#B3E5FC,#B2EBF2,#B2DFDB,#C8E6C9,#DCEDC8,#F0F4C3,#FFF9C4,#FFECB3,#FFE0B2']\n */\n colorScheme?: string[]\n}\n","import { z } from 'zod'\n\nexport const zLabel = z.object({\n enable: z.boolean().default(true).nullish(),\n})\n\nexport type Label = {\n /**\n * 标签功能是否开启\n * @default true\n */\n enable: boolean\n}\n","import { z } from 'zod'\n\nexport type Legend = {\n /**\n * 图例功能是否开启\n * @default true\n * @example enable: true\n */\n enable?: boolean\n /**\n * 图例边框是否开启\n * @default true\n * @example border: true\n */\n border?: boolean\n /**\n * 图例字体大小\n * @default 12\n * @example labelFontSize: 10\n */\n labelFontSize?: number\n /**\n * 图例字体颜色\n * @default '#fff'\n * @example labelFontColor: '#212121'\n */\n labelFontColor?: string\n /**\n * 图例字体粗细\n * @default 400\n * @example labelFontWeight: 400\n */\n labelFontWeight?: number | string\n /**\n * 图例形状\n * @default 'rectRound'\n * @example shapeType: 'circle'\n */\n shapeType?:\n | 'circle'\n | 'cross'\n | 'diamond'\n | 'square'\n | 'arrow'\n | 'arrow2Left'\n | 'arrow2Right'\n | 'wedge'\n | 'thinTriangle'\n | 'triangle'\n | 'triangleUp'\n | 'triangleDown'\n | 'triangleRight'\n | 'triangleLeft'\n | 'stroke'\n | 'star'\n | 'wye'\n | 'rect'\n | 'arrowLeft'\n | 'arrowRight'\n | 'rectRound'\n | 'roundLine'\n /**\n * 图例位置\n * @default 'right'\n * @example position: 'rightTop'\n */\n position?:\n | 'left'\n | 'leftTop'\n | 'leftBottom'\n | 'lt'\n | 'lb'\n | 'top'\n | 'topLeft'\n | 'topRight'\n | 'tl'\n | 'tr'\n | 'right'\n | 'rightTop'\n | 'rightBottom'\n | 'rt'\n | 'rb'\n | 'bottom'\n | 'bottomLeft'\n | 'bottomRight'\n | 'bl'\n | 'br'\n\n /**\n * @description 存在大量图例时, 最大列数 或 图例最大行数\n * 如果position为水平方向(bottom, bottomLeft, bottomRight, bl, br, top, topLeft, topRight, tl, tr), maxSize控制显示的列数\n * 如果position为垂直方向(left, leftTop, leftBottom, lt, lb, right, rightTop, rightBottom, rt, rb), maxSize控制显示的行数\n * @example maxSize: 2\n * @default 1\n */\n maxSize?: number\n}\n\nexport const zLegend = z.object({\n enable: z.boolean().default(true).nullish(),\n border: z.boolean().default(true).nullish(),\n maxSize: z.number().default(1).nullish(),\n shapeType: z\n .enum([\n 'circle',\n 'cross',\n 'diamond',\n 'square',\n 'arrow',\n 'arrow2Left',\n 'arrow2Right',\n 'wedge',\n 'thinTriangle',\n 'triangle',\n 'triangleUp',\n 'triangleDown',\n 'triangleRight',\n 'triangleLeft',\n 'stroke',\n 'star',\n 'wye',\n 'rect',\n 'arrowLeft',\n 'arrowRight',\n 'rectRound',\n 'roundLine',\n ])\n .default('rectRound')\n .nullish(),\n position: z\n .enum([\n 'left',\n 'leftTop',\n 'leftBottom',\n 'lt',\n 'lb',\n 'top',\n 'topLeft',\n 'topRight',\n 'tl',\n 'tr',\n 'right',\n 'rightTop',\n 'rightBottom',\n 'rt',\n 'rb',\n 'bottom',\n 'bottomLeft',\n 'bottomRight',\n 'bl',\n 'br',\n ])\n .default('bottom')\n .nullish(),\n labelFontSize: z.number().default(12).nullish(),\n labelFontColor: z.string().default('#fff').nullish(),\n labelFontWeight: z.number().or(z.string()).default(400).nullish(),\n})\n\nexport type ColorLegend = Pick<Legend, 'position' | 'enable'>\nexport const zColorLegend = z.object({\n position: z\n .enum([\n 'left',\n 'leftTop',\n 'leftBottom',\n 'lt',\n 'lb',\n 'top',\n 'topLeft',\n 'topRight',\n 'tl',\n 'tr',\n 'right',\n 'rightTop',\n 'rightBottom',\n 'rt',\n 'rb',\n 'bottom',\n 'bottomLeft',\n 'bottomRight',\n 'bl',\n 'br',\n ])\n .default('bottom')\n .nullish(),\n enable: z.boolean().default(true).nullish(),\n})\n","import { z } from 'zod'\n\nexport const zTooltip = z.object({\n enable: z.boolean().default(true).nullish(),\n})\n\nexport type Tooltip = {\n /**\n * 提示信息功能是否开启\n * @default true\n */\n enable: boolean\n}\n","import { z } from 'zod'\nimport { zXBandAxis, zYBandAxis } from './axes/bandAxis'\nimport { zXLinearAxis, zYLinearAxis } from './axes/linearAxis'\nimport { zCrosshairLine, zCrosshairRect } from './crosshair/crosshair'\nimport { zStackCornerRadius } from './stackCornerRadius/stackCornerRadius'\nimport { zBackgroundColor } from './backgroundColor/backgroundColor'\nimport { zColor } from './color/color'\nimport { zLabel } from './label/label'\nimport { zLegend } from './legend/legend'\nimport { zTooltip } from './tooltip/tooltip'\nimport { zDualChartType } from '../chartType'\n\n/**\n * ---\n * zConfig by 图表类型\n */\nexport const zTableConfig = z.object({\n backgroundColor: zBackgroundColor.nullish(),\n\n // Border\n borderColor: z.string().nullish(),\n\n // Body\n bodyFontSize: z.number().nullish(),\n bodyFontColor: z.string().nullish(),\n bodyBackgroundColor: z.string().nullish(),\n // Body interaction\n hoverBodyBackgroundColor: z.string().nullish(),\n hoverBodyInlineBackgroundColor: z.string().nullish(),\n\n // Header\n headerFontSize: z.number().nullish(),\n headerFontColor: z.string().nullish(),\n headerBackgroundColor: z.string().nullish(),\n // Header interaction\n hoverHeaderBackgroundColor: z.string().nullish(),\n hoverHeaderInlineBackgroundColor: z.string().nullish(),\n\n // Interaction\n selectedBorderColor: z.string().nullish(),\n selectedBackgroundColor: z.string().nullish(),\n})\nexport const zPivotTableConfig = zTableConfig\n\nexport const zLineConfig = z.object({\n backgroundColor: zBackgroundColor.nullish(),\n label: zLabel.nullish(),\n color: zColor.nullish(),\n tooltip: zTooltip.nullish(),\n legend: zLegend.nullish(),\n\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairLine: zCrosshairLine.nullish(),\n})\nexport const zColumnConfig = z.object({\n backgroundColor: zBackgroundColor.nullish(),\n label: zLabel.nullish(),\n color: zColor.nullish(),\n tooltip: zTooltip.nullish(),\n legend: zLegend.nullish(),\n\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n stackCornerRadius: zStackCornerRadius.nullish(),\n})\nexport const zColumnParallelConfig = zColumnConfig\nexport const zColumnPercentConfig = zColumnConfig\nexport const zBarConfig = z.object({\n backgroundColor: zBackgroundColor.nullish(),\n label: zLabel.nullish(),\n color: zColor.nullish(),\n tooltip: zTooltip.nullish(),\n legend: zLegend.nullish(),\n\n xAxis: zXLinearAxis.nullish(),\n yAxis: zYBandAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n stackCornerRadius: zStackCornerRadius.nullish(),\n})\nexport const zBarParallelConfig = zBarConfig\nexport const zBarPercentConfig = zBarConfig\nexport const zAreaConfig = z.object({\n backgroundColor: zBackgroundColor.nullish(),\n label: zLabel.nullish(),\n color: zColor.nullish(),\n tooltip: zTooltip.nullish(),\n legend: zLegend.nullish(),\n\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairLine: zCrosshairLine.nullish(),\n})\nexport const zAreaPercentConfig = zAreaConfig\nexport const zAreaRangeConfig = zAreaConfig\nexport const zDualAxisConfig = z.object({\n backgroundColor: zBackgroundColor.nullish(),\n label: zLabel.nullish(),\n color: zColor.nullish(),\n tooltip: zTooltip.nullish(),\n legend: zLegend.nullish(),\n\n dualChartType: z.array(zDualChartType).or(zDualChartType).nullish(),\n primaryYAxis: z.array(zYLinearAxis).or(zYLinearAxis).nullish(),\n secondaryYAxis: z.array(zYLinearAxis).or(zYLinearAxis).nullish(),\n\n xAxis: zXBandAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n})\nexport const zScatterConfig = z.object({\n backgroundColor: zBackgroundColor.nullish(),\n label: zLabel.nullish(),\n color: zColor.nullish(),\n tooltip: zTooltip.nullish(),\n legend: zLegend.nullish(),\n\n xAxis: zXLinearAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairLine: zCrosshairLine.nullish(),\n})\n\n// polar\nexport const zRoseConfig = z.object({\n backgroundColor: zBackgroundColor.nullish(),\n label: zLabel.nullish(),\n color: zColor.nullish(),\n tooltip: zTooltip.nullish(),\n legend: zLegend.nullish(),\n})\nexport const zRoseParallelConfig = zRoseConfig\nexport const zPieConfig = z.object({\n backgroundColor: zBackgroundColor.nullish(),\n label: zLabel.nullish(),\n color: zColor.nullish(),\n tooltip: zTooltip.nullish(),\n legend: zLegend.nullish(),\n})\nexport const zDonutConfig = zPieConfig\nexport const zRadarConfig = zPieConfig\n// other\nexport const zFunnelConfig = zPieConfig\nexport const zHeatmapConfig = zPieConfig\n\n/**\n * ---\n * Type config by chart type\n */\nexport type TableConfig = z.infer<typeof zTableConfig>\nexport type PivotTableConfig = z.infer<typeof zPivotTableConfig>\n// cartesian\nexport type LineConfig = z.infer<typeof zLineConfig>\nexport type ColumnConfig = z.infer<typeof zColumnConfig>\nexport type ColumnParallelConfig = z.infer<typeof zColumnParallelConfig>\nexport type ColumnPercentConfig = z.infer<typeof zColumnPercentConfig>\nexport type BarConfig = z.infer<typeof zBarConfig>\nexport type BarParallelConfig = z.infer<typeof zBarParallelConfig>\nexport type BarPercentConfig = z.infer<typeof zBarPercentConfig>\nexport type AreaConfig = z.infer<typeof zAreaConfig>\nexport type AreaPercentConfig = z.infer<typeof zAreaPercentConfig>\nexport type AreaRangeConfig = z.infer<typeof zAreaRangeConfig>\nexport type ScatterConfig = z.infer<typeof zScatterConfig>\nexport type DualAxisConfig = z.infer<typeof zDualAxisConfig>\n// polar\nexport type RoseConfig = z.infer<typeof zRoseConfig>\nexport type RoseParallelConfig = z.infer<typeof zRoseParallelConfig>\nexport type PieConfig = z.infer<typeof zPieConfig>\nexport type DonutConfig = z.infer<typeof zDonutConfig>\nexport type RadarConfig = z.infer<typeof zRadarConfig>\n// other\nexport type FunnelConfig = z.infer<typeof zFunnelConfig>\nexport type HeatmapConfig = z.infer<typeof zHeatmapConfig>\n\n/**\n * config and type\n */\nexport type Config = z.infer<typeof zConfig>\nexport const zConfig = z.object({\n table: zTableConfig.nullish(),\n pivotTable: zPivotTableConfig.nullish(),\n\n // cartesian\n line: zLineConfig.nullish(),\n column: zColumnConfig.nullish(),\n columnParallel: zColumnParallelConfig.nullish(),\n columnPercent: zColumnPercentConfig.nullish(),\n bar: zBarConfig.nullish(),\n barParallel: zBarParallelConfig.nullish(),\n barPercent: zBarPercentConfig.nullish(),\n area: zAreaConfig.nullish(),\n areaPercent: zAreaPercentConfig.nullish(),\n areaRange: zAreaRangeConfig.nullish(),\n scatter: zScatterConfig.nullish(),\n dualAxis: zDualAxisConfig.nullish(),\n\n // polar\n rose: zRoseConfig.nullish(),\n roseParallel: zRoseParallelConfig.nullish(),\n pie: zPieConfig.nullish(),\n donut: zDonutConfig.nullish(),\n radar: zRadarConfig.nullish(),\n // other\n funnel: zFunnelConfig.nullish(),\n heatmap: zHeatmapConfig.nullish(),\n})\n","import { z } from 'zod'\n\nexport type Axis = {\n /**\n * 轴是否可见\n * @default true\n * @example true\n */\n visible?: boolean\n\n /**\n * 轴的最小值\n * @description 优先级高于 nice 与 zero\n * @default undefined\n * @example 100\n */\n min?: number\n\n /**\n * 轴的最大值\n * @description 优先级高于 nice 与 zero\n * @default undefined\n * @example 10000\n */\n max?: number\n\n /**\n * @description 是否使用对数轴, 仅对数值轴生效\n * @default false\n */\n log?: boolean\n\n /**\n * @description 对数轴的底数, 仅对数值轴生效\n * @default 10\n */\n logBase?: number\n\n /**\n * 是否自动调整轴的刻度间隔,使刻度标签更易读\n * @description 当配置了 min 和 max, 该配置项失效, 仅对数值轴生效\n * @default true\n * @example true\n */\n nice?: boolean\n\n /**\n * 轴是否反向展示\n * @description 仅对数值轴生效\n * @default false\n * @example false\n */\n inverse?: boolean\n\n /**\n * 是否在坐标轴上强制显示 0 值,\n * @description 当配置了 min 和 max, 该配置项失效, 仅对数值轴生效\n * @default true\n * @example true\n */\n zero?: boolean\n\n /**\n * 轴标签, 自动隐藏\n * @description 2个标签若重叠(间隔小于autoHideGap), 则自动隐藏导致重叠的标签. 仅对类目轴生效.\n * @default true\n */\n labelAutoHide?: boolean\n /**\n * 轴标签, 自动隐藏间隔\n * @description 若2个文本标签的间隔小于autoHideGap, 则自动隐藏导致重叠的标签. 仅对类目轴生效.\n * autoHide开启时, 使用autoHide, 设置在autoHideSeparation上\n * autoHide关闭时, 使用sampling采样, 设置在minGap上\n * @default 4\n */\n labelAutoHideGap?: number\n /**\n * 轴标签, 自动旋转\n * @description 当标签宽度超过轴长度时, 自动旋转标签. 仅对类目轴生效.\n * @default true\n */\n labelAutoRotate?: boolean\n /**\n * 轴标签, 自动旋转角度范围\n * @description 当自动旋转开启时, 标签旋转角度范围. 仅对类目轴生效.\n * @default [0, -45, -90]\n */\n labelAutoRotateAngleRange?: number[]\n /**\n * 轴标签, 自动限制长度,\n * @description 当标签宽度超过轴长度时, 超出部分省略号表示, 鼠标悬浮后可见标签, 自动限制标签宽度. 仅对类目轴生效.\n * @default true\n */\n labelAutoLimit?: boolean\n /**\n * 轴标签, 自动限制长度的最大长度\n * @description 当标签文本长度超过最大长度时, 超出部分省略号表示, 鼠标悬浮后可见标签. 仅对类目轴生效.\n * @default 80\n */\n labelAutoLimitLength?: number\n\n /**\n * X轴刻度标签\n * @default true\n */\n label?: {\n /**\n * 标签是否可见\n * @default true\n */\n visible?: boolean\n /**\n * 标签颜色\n * @default '#797B85'\n */\n labelColor?: string\n /**\n * 标签字体大小\n * @default 12\n */\n labelFontSize?: number\n /**\n * 标签字体粗细\n * @default 400\n */\n labelFontWeight?: number\n /**\n * 标签旋转角度\n * @default 0\n */\n labelAngle?: number\n }\n\n /**\n * X轴线\n * @example\n * {\n * visible: true,\n * lineColor: '#ffeecc',\n * lineWidth: 2,\n * }\n */\n line?: {\n /**\n * 轴线是否可见\n * @default true\n */\n visible?: boolean\n /**\n * 轴线颜色\n * @default 'rgba(54, 65, 89, 0.30)'\n */\n lineColor?: string\n /**\n * 轴线宽度\n * @default 1\n */\n lineWidth?: number\n }\n\n /**\n * X轴刻度\n * @default true\n */\n tick?: {\n /**\n * 刻度是否可见\n * @default true\n */\n visible?: boolean\n /**\n * 刻度是否朝内\n * @default false\n */\n tickInside?: boolean\n /**\n * 刻度颜色\n * @default 'rgba(54, 65, 89, 0.30)'\n */\n tickColor?: string\n /**\n * 刻度尺寸\n * @default 4\n */\n tickSize?: number\n }\n\n /**\n * X轴标题\n * @default false\n */\n title?: {\n /**\n * 标题是否可见\n * @default false\n */\n visible?: boolean\n /**\n * 标题文本, 默认跟随字段配置\n * @default ''\n */\n titleText?: string\n /**\n * 标题颜色\n * @default '#646A73'\n */\n titleColor?: string\n /**\n * 标题字体大小\n * @default 12\n */\n titleFontSize?: number\n /**\n * 标题字体粗细\n * @default 400\n */\n titleFontWeight?: number\n }\n\n /**\n * X轴网格线\n * @default false\n */\n grid?: {\n visible?: boolean\n /**\n * 网格线颜色\n * @default 'rgba(54, 65, 89, 0.15)'\n */\n gridColor?: string\n /**\n * 网格线宽度\n * @default 0.5\n */\n gridWidth?: number\n }\n}\n\nexport const zAxis = z.object({\n visible: z.boolean().default(true).nullish(),\n\n min: z.number().nullish(),\n max: z.number().nullish(),\n nice: z.boolean().default(true).nullish(),\n zero: z.boolean().default(true).nullish(),\n inverse: z.boolean().default(false).nullish(),\n log: z.boolean().default(false).nullish(),\n logBase: z.number().default(10).nullish(),\n\n labelAutoHide: z.boolean().default(true).nullish(),\n labelAutoHideGap: z.number().default(4).nullish(),\n labelAutoRotate: z.boolean().default(true).nullish(),\n labelAutoRotateAngleRange: z.array(z.number()).default([0, -45, -90]).nullish(),\n labelAutoLimit: z.boolean().default(true).nullish(),\n labelAutoLimitLength: z.number().default(100).nullish(),\n label: z\n .object({\n visible: z.boolean().default(true).nullish(),\n labelColor: z.string().default('#797B85').nullish(),\n labelFontSize: z.number().default(12).nullish(),\n labelFontWeight: z.number().default(400).nullish(),\n labelAngle: z.number().default(0).nullish(),\n })\n .nullish(),\n line: z\n .object({\n visible: z.boolean().default(true).nullish(),\n lineColor: z.string().default('rgba(54, 65, 89, 0.30)').nullish(),\n lineWidth: z.number().default(1).nullish(),\n })\n .nullish(),\n tick: z\n .object({\n visible: z.boolean().default(true).nullish(),\n tickInside: z.boolean().default(false).nullish(),\n tickColor: z.string().default('rgba(54, 65, 89, 0.30)').nullish(),\n tickSize: z.number().default(4).nullish(),\n })\n .nullish(),\n title: z\n .object({\n visible: z.boolean().default(false).nullish(),\n titleText: z.string().default('').nullish(),\n titleColor: z.string().default('#646A73').nullish(),\n titleFontSize: z.number().default(12).nullish(),\n titleFontWeight: z.number().default(400).nullish(),\n })\n .nullish(),\n grid: z\n .object({\n visible: z.boolean().default(false).nullish(),\n gridColor: z.string().default('rgba(54, 65, 89, 0.15)').nullish(),\n gridWidth: z.number().default(0.5).nullish(),\n })\n .nullish(),\n})\n","import { z } from 'zod'\nimport { zConfig } from '../config'\n\nexport const zCustomThemeConfig = z.object({\n config: zConfig.nullish(),\n})\n\nexport const zCustomTheme = z.record(z.string(), zCustomThemeConfig).nullish()\n\nexport type CustomTheme = z.infer<typeof zCustomTheme>\nexport type CustomThemeConfig = z.infer<typeof zCustomThemeConfig>\n","import { z } from 'zod'\n\nexport const zTheme = z.string()\n\ntype Light = 'light' & { readonly brand: unique symbol }\ntype Dark = 'dark' & { readonly brand: unique symbol }\n\n/**\n * 主题\n * @default light\n * @description 内置 light、dark 两种主题, 新的主题可以通过registerTheme自定义主题.\n */\nexport type Theme = Light | Dark | string\n","import { z } from 'zod'\nimport type { Datum } from '../properties'\n\nexport type ValueSelector = string | number\n\nexport type PartialDatumSelector = Datum\n\nexport type MeasureSelector = {\n field: string\n operator?: '=' | '==' | '!=' | '>' | '<' | '>=' | '<=' | 'between'\n op?: '=' | '==' | '!=' | '>' | '<' | '>=' | '<=' | 'between'\n value: string | number | Array<string | number>\n}\n\nexport type DimensionSelector = {\n field: string\n operator?: 'in' | 'not in'\n op?: 'in' | 'not in'\n value: string | number | Array<string | number>\n}\n\nexport type Selector = ValueSelector | PartialDatumSelector | MeasureSelector | DimensionSelector\n\nexport type Selectors = Array<Selector>\n\nexport const zSelector = z.union([\n z.string(),\n z.number(),\n z.object({\n field: z.string(),\n operator: z.enum(['=', '==', '!=', '>', '<', '>=', '<=', 'between']).nullish(),\n op: z.enum(['=', '==', '!=', '>', '<', '>=', '<=', 'between']).nullish(),\n value: z.union([z.string(), z.number(), z.array(z.union([z.string(), z.number()]))]),\n }),\n z.object({\n field: z.string(),\n operator: z.enum(['in', 'not in']).nullish(),\n op: z.enum(['in', 'not in']).nullish(),\n value: z.union([z.string(), z.number(), z.array(z.union([z.string(), z.number()]))]),\n }),\n])\n\nexport const zSelectors = z.array(zSelector)\n","import { z } from 'zod'\nimport { zSelector, zSelectors, type Selector, type Selectors } from '../../dataSelector'\n\nexport type BarStyle = {\n /**\n * 数据选择器\n * @description\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n * @type {Selector | Selectors}\n * @example 数值选择器\n * selector = \"tool\"\n * selector = [\"tool\", \"book\"]\n * selector = 100\n * selector = [100, 200]\n * @example 局部数据选择器\n * selector = { profit: 100 }\n * selector = [{ profit: 100 }, { profit: 200 }]\n * @example 条件维度选择器\n * selector = {\n * field: 'category',\n * operator: 'in',\n * value: 'tool'\n * }\n * selector = {\n * field: 'category',\n * operator: 'not in',\n * value: 'book'\n * }\n * @example 条件指标选择器\n * selector = {\n * field: 'profit',\n * operator: '>=',\n * value: 100\n * }\n * selector = {\n * field: 'profit',\n * operator: 'between'\n * value: [100, 300]\n * }\n */\n selector?: Selector | Selectors\n\n /**\n * 柱状图颜色\n * @description 柱状图颜色\n * @type {string}\n */\n barColor?: string\n /**\n * 柱状图颜色透明度\n * @description 柱状图颜色透明度\n * @type {number}\n */\n barColorOpacity?: number\n /**\n * 柱状图边框颜色\n * @description 柱状图边框颜色\n * @type {string}\n */\n barBorderColor?: string\n /**\n * 柱状图边框宽度\n * @description 柱状图边框宽度\n * @type {number}\n */\n barBorderWidth?: number\n /**\n * 柱状图边框样式\n * @description 柱状图边框样式\n * @type {number}\n * @example solid\n * @example dashed\n * @example dotted\n */\n barBorderStyle?: 'solid' | 'dashed' | 'dotted'\n /**\n * 柱状图圆角\n * @description 柱状图圆角\n * @type {number | number[]}\n * @example 4\n * @example [0, 0, 10, 10]\n */\n barRadius?: number | number[]\n}\n\nexport const zBarStyle = z.object({\n selector: z.union([zSelector, zSelectors]).nullish(),\n barColor: z.string().nullish(),\n barColorOpacity: z.number().nullish(),\n barBorderColor: z.string().nullish(),\n barBorderWidth: z.number().nullish(),\n barBorderStyle: z.union([z.literal('solid'), z.literal('dashed'), z.literal('dotted')]).nullish(),\n barRadius: z.union([z.number(), z.array(z.number())]).nullish(),\n})\n","import { z } from 'zod'\nimport { zSelector, zSelectors, type Selector, type Selectors } from '../../dataSelector'\n\nexport type PointStyle = {\n /**\n * 数据选择器\n * @description\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n * @type {Selector | Selectors}\n * @example 数值选择器\n * selector = \"tool\"\n * selector = [\"tool\", \"book\"]\n * selector = 100\n * selector = [100, 200]\n * @example 局部数据选择器\n * selector = { profit: 100 }\n * selector = [{ profit: 100 }, { profit: 200 }]\n * @example 条件维度选择器\n * selector = {\n * field: 'category',\n * operator: 'in',\n * value: 'tool'\n * }\n * selector = {\n * field: 'category',\n * operator: 'not in',\n * value: 'book'\n * }\n * @example 条件指标选择器\n * selector = {\n * field: 'profit',\n * operator: '>=',\n * value: 100\n * }\n * selector = {\n * field: 'profit',\n * operator: 'between'\n * value: [100, 300]\n * }\n */\n selector?: Selector | Selectors\n\n /**\n * 点大小\n * @description 点大小\n * @type {number}\n */\n pointSize?: number\n /**\n * 点图元颜色\n * @description 点图元颜色\n * @type {string}\n */\n pointColor?: string\n /**\n * 点图元颜色透明度\n * @description 点图元颜色透明度\n * @type {number}\n */\n pointColorOpacity?: number\n /**\n * 点图元边框颜色\n * @description 点图元边框颜色\n * @type {string}\n */\n pointBorderColor?: string\n /**\n * 点图元边框宽度\n * @description 点图元边框宽度\n * @type {number}\n */\n pointBorderWidth?: number\n /**\n * 点图元边框样式\n * @description 点图元边框样式\n * @type {number}\n * @example solid\n * @example dashed\n * @example dotted\n */\n pointBorderStyle?: 'solid' | 'dashed' | 'dotted'\n}\n\nexport const zPointStyle = z.object({\n selector: z.union([zSelector, zSelectors]).nullish(),\n pointSize: z.number().nullish(),\n pointColor: z.string().nullish(),\n pointColorOpacity: z.number().nullish(),\n pointBorderColor: z.string().nullish(),\n pointBorderWidth: z.number().nullish(),\n pointBorderStyle: z.union([z.enum(['solid', 'dashed', 'dotted'])]).nullish(),\n})\n","import { z } from 'zod'\nimport { zSelector, zSelectors, type Selector, type Selectors } from '../../dataSelector'\n\nexport type LineStyle = {\n /**\n * 数据选择器\n * @description\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n * @type {Selector | Selectors}\n * @example 数值选择器\n * selector = \"tool\"\n * selector = [\"tool\", \"book\"]\n * selector = 100\n * selector = [100, 200]\n * @example 局部数据选择器\n * selector = { profit: 100 }\n * selector = [{ profit: 100 }, { profit: 200 }]\n * @example 条件维度选择器\n * selector = {\n * field: 'category',\n * operator: 'in',\n * value: 'tool'\n * }\n * selector = {\n * field: 'category',\n * operator: 'not in',\n * value: 'book'\n * }\n * @example 条件指标选择器\n * selector = {\n * field: 'profit',\n * operator: '>=',\n * value: 100\n * }\n * selector = {\n * field: 'profit',\n * operator: 'between'\n * value: [100, 300]\n * }\n */\n selector?: Selector | Selectors\n\n /**\n * 折线图是否平滑\n * @description 折线图是否平滑\n * @type {boolean}\n */\n lineSmooth?: boolean\n\n /**\n * 柱状图颜色\n * @description 柱状图颜色\n * @type {string}\n */\n lineColor?: string\n /**\n * 柱状图颜色透明度\n * @description 柱状图颜色透明度\n * @type {number}\n */\n lineColorOpacity?: number\n /**\n * 柱状图边框宽度\n * @description 柱状图边框宽度\n * @type {number}\n */\n lineWidth?: number\n /**\n * 柱状图边框样式\n * @description 柱状图边框样式\n * @type {number}\n * @example solid\n * @example dashed\n * @example dotted\n */\n lineStyle?: 'solid' | 'dashed' | 'dotted'\n}\n\nexport const zLineStyle = z.object({\n selector: z.union([zSelector, zSelectors]).nullish(),\n lineSmooth: z.boolean().nullish(),\n lineColor: z.string().nullish(),\n lineColorOpacity: z.number().nullish(),\n lineWidth: z.number().nullish(),\n lineStyle: z.union([z.enum(['solid', 'dashed', 'dotted'])]).nullish(),\n})\n","import { z } from 'zod'\nimport { zSelector, zSelectors, type Selector, type Selectors } from '../../dataSelector'\n\nexport type AreaStyle = {\n /**\n * 数据选择器\n * @description\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n * @type {Selector | Selectors}\n * @example 数值选择器\n * selector = \"tool\"\n * selector = [\"tool\", \"book\"]\n * selector = 100\n * selector = [100, 200]\n * @example 局部数据选择器\n * selector = { profit: 100 }\n * selector = [{ profit: 100 }, { profit: 200 }]\n * @example 条件维度选择器\n * selector = {\n * field: 'category',\n * operator: 'in',\n * value: 'tool'\n * }\n * selector = {\n * field: 'category',\n * operator: 'not in',\n * value: 'book'\n * }\n * @example 条件指标选择器\n * selector = {\n * field: 'profit',\n * operator: '>=',\n * value: 100\n * }\n * selector = {\n * field: 'profit',\n * operator: 'between'\n * value: [100, 300]\n * }\n */\n selector?: Selector | Selectors\n\n /**\n * 面积图元的颜色\n * @description 面积图元的颜色\n * @type {string}\n */\n areaColor?: string\n /**\n * 面积图元的颜色透明度\n * @description 面积图元的颜色透明度\n * @type {number}\n */\n areaColorOpacity?: number\n}\n\nexport const zAreaStyle = z.object({\n selector: z.union([zSelector, zSelectors]).nullish(),\n areaColor: z.string().nullish(),\n areaColorOpacity: z.number().nullish(),\n})\n","import { z } from 'zod'\nimport { zBarStyle } from './barStyle'\nimport { zPointStyle } from './pointStyle'\nimport { zLineStyle } from './lineStyle'\nimport { zAreaStyle } from './areaStyle'\n\nexport const zMarkStyle = z.object({\n barStyle: zBarStyle.or(z.array(zBarStyle)).nullish(),\n pointStyle: zPointStyle.or(z.array(zPointStyle)).nullish(),\n lineStyle: zLineStyle.or(z.array(zLineStyle)).nullish(),\n areaStyle: zAreaStyle.or(z.array(zAreaStyle)).nullish(),\n})\n\nexport type MarkStyle = z.infer<typeof zMarkStyle>\n","import { zSelector, zSelectors } from '../../dataSelector'\nimport { z } from 'zod'\n\nexport const zAnnotationPoint = z.object({\n selector: z.union([zSelector, zSelectors]),\n text: z.string().or(z.array(z.string())).nullish(),\n textColor: z.string().default('#ffffff').nullish(),\n textFontSize: z.number().default(12).nullish(),\n textFontWeight: z.number().default(400).nullish(),\n textAlign: z.enum(['left', 'right', 'center']).default('center').nullish(),\n textBaseline: z.enum(['top', 'middle', 'bottom']).default('middle').nullish(),\n textBackgroundVisible: z.boolean().default(true).nullish(),\n textBackgroundColor: z.string().default('#212121').nullish(),\n textBackgroundBorderColor: z.string().nullish(),\n textBackgroundBorderWidth: z.number().default(1).nullish(),\n textBackgroundBorderRadius: z.number().default(4).nullish(),\n textBackgroundPadding: z.number().nullish(),\n\n offsetY: z.number().default(0).nullish(),\n offsetX: z.number().default(0).nullish(),\n})\n","import { zSelector, zSelectors } from '../../dataSelector'\nimport { z } from 'zod'\n\nexport const zAnnotationVerticalLine = z.object({\n selector: z.union([zSelector, zSelectors]).nullish(),\n xValue: z.union([z.number(), z.string(), z.array(z.union([z.number(), z.string()]))]).nullish(),\n text: z.string().or(z.array(z.string())).nullish(),\n textPosition: z\n .enum(['outsideStart', 'outsideEnd', 'outsideMiddle', 'insideStart', 'insideMiddle', 'insideEnd'])\n .default('insideEnd')\n .nullish(),\n textColor: z.string().default('#ffffff').nullish(),\n textFontSize: z.number().default(12).nullish(),\n textFontWeight: z.number().default(400).nullish(),\n textAlign: z.enum(['left', 'right', 'center']).default('right').nullish(),\n textBaseline: z.enum(['top', 'middle', 'bottom']).default('top').nullish(),\n\n textBackgroundVisible: z.boolean().default(true).nullish(),\n textBackgroundColor: z.string().default('#212121').nullish(),\n textBackgroundBorderColor: z.string().default('#212121').nullish(),\n textBackgroundBorderRadius: z.number().default(4).nullish(),\n textBackgroundBorderWidth: z.number().default(1).nullish(),\n textBackgroundPadding: z.number().default(2).nullish(),\n\n lineVisible: z.boolean().default(true).nullish(),\n lineColor: z.string().default('#212121').nullish(),\n lineWidth: z.number().default(1).nullish(),\n lineStyle: z\n .union([z.literal('solid'), z.literal('dashed'), z.literal('dotted')])\n .default('dashed')\n .nullish(),\n\n offsetX: z.number().default(0),\n offsetY: z.number().default(0),\n})\n","import { zSelector, zSelectors } from '../../dataSelector'\nimport { z } from 'zod'\n\nexport const zAnnotationHorizontalLine = z.object({\n selector: z.union([zSelector, zSelectors]).nullish(),\n yValue: z.union([z.number(), z.string(), z.array(z.union([z.number(), z.string()]))]).nullish(),\n text: z.string().or(z.array(z.string())).nullish(),\n textPosition: z\n .enum(['outsideStart', 'outsideEnd', 'outsideMiddle', 'insideStart', 'insideMiddle', 'insideEnd'])\n .default('insideEnd')\n .nullish(),\n textColor: z.string().default('#ffffff').nullish(),\n textFontSize: z.number().default(12).nullish(),\n textFontWeight: z.number().default(400).nullish(),\n textAlign: z.enum(['left', 'right', 'center']).default('right').nullish(),\n textBaseline: z.enum(['top', 'middle', 'bottom']).default('top').nullish(),\n\n lineVisible: z.boolean().default(true).nullish(),\n lineColor: z.string().default('#212121').nullish(),\n lineWidth: z.number().default(1).nullish(),\n lineStyle: z\n .union([z.literal('solid'), z.literal('dashed'), z.literal('dotted')])\n .default('dashed')\n .nullish(),\n\n textBackgroundVisible: z.boolean().default(true).nullish(),\n textBackgroundColor: z.string().default('#212121').nullish(),\n textBackgroundBorderColor: z.string().default('#212121').nullish(),\n textBackgroundBorderRadius: z.number().default(4).nullish(),\n textBackgroundBorderWidth: z.number().default(1).nullish(),\n textBackgroundPadding: z.number().default(2).nullish(),\n\n offsetX: z.number().default(0),\n offsetY: z.number().default(0),\n})\n","import { zSelector, zSelectors } from '../../dataSelector'\nimport { z } from 'zod'\n\nexport const zAnnotationArea = z.object({\n selector: z.union([zSelector, zSelectors]),\n textPosition: z\n .enum(['top', 'topRight', 'topLeft', 'bottom', 'bottomLeft', 'bottomRight', 'left', 'right'])\n .default('top')\n .nullish(),\n text: z.string().or(z.array(z.string())).nullish(),\n textColor: z.string().default('#ffffff').nullish(),\n textFontSize: z.number().default(12).nullish(),\n textFontWeight: z.number().default(400).nullish(),\n textAlign: z.enum(['left', 'right', 'center']).default('center').nullish(),\n textBaseline: z.enum(['top', 'middle', 'bottom']).default('top').nullish(),\n\n textBackgroundVisible: z.boolean().default(true).nullish(),\n textBackgroundColor: z.string().default('#191d24').nullish(),\n textBackgroundBorderColor: z.string().default('#191d24').nullish(),\n textBackgroundBorderWidth: z.number().default(1).nullish(),\n textBackgroundBorderRadius: z.number().default(4).nullish(),\n textBackgroundPadding: z.number().default(4).nullish(),\n\n areaColor: z.string().default('#888888').nullish(),\n areaColorOpacity: z.number().default(0.15).nullish(),\n areaBorderColor: z.string().default('#888888').nullish(),\n areaBorderWidth: z.number().default(1).nullish(),\n areaBorderRadius: z.number().default(4).nullish(),\n\n outerPadding: z.number().default(4).nullish(),\n offsetX: z.number().default(0).nullish(),\n offsetY: z.number().default(0).nullish(),\n})\n","import { z } from 'zod'\nimport { zAnnotationPoint } from './zAnnotationPoint'\nimport { zAnnotationVerticalLine } from './zAnnotationVerticalLine'\nimport { zAnnotationHorizontalLine } from './zAnnotationHorizontalLine'\nimport { zAnnotationArea } from './zAnnotationArea'\n\n\nexport const zAnnotation = z.object({\n annotationPoint: zAnnotationPoint.or(z.array(zAnnotationPoint)).nullish(),\n annotationVerticalLine: zAnnotationVerticalLine.or(z.array(zAnnotationVerticalLine)).nullish(),\n annotationHorizontalLine: zAnnotationHorizontalLine.or(z.array(zAnnotationHorizontalLine)).nullish(),\n annotationArea: zAnnotationArea.or(z.array(zAnnotationArea)).nullish(),\n})\n\nexport type Annotation = z.infer<typeof zAnnotation>\n","import { z } from 'zod'\n\nexport const zSort = z.object({\n order: z.enum(['asc', 'desc']).default('asc'),\n orderBy: z.string().nullish(),\n customOrder: z.array(z.any()).nullish(),\n})\n\n/**\n * @description 类目轴排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @default {}\n * @example \n * - order:'asc'\n * - orderBy:'date'\n * 或\n * - customOrder:['2019', '2020', '2021']\n */\nexport type Sort = {\n /**\n * @description 排序顺序, 可选值为 'asc' 或 'desc'\n * @enum ['asc', 'desc']\n * @example order:'asc'\n */\n order?: 'asc' | 'desc'\n\n /**\n * @description 排序依赖的字段, 可以是维度id或指标id\n * @example \n * - orderBy:'date'\n * - orderBy:'profit'\n */\n orderBy?: string\n\n /**\n * @description 自定义排序顺序, 该顺序将直接应用至类目轴\n */\n customOrder?: string[]\n}\n","import { z } from 'zod'\n\nexport const zSortLegend = z.object({\n order: z.enum(['asc', 'desc']).default('asc'),\n orderBy: z.string().nullish(),\n customOrder: z.array(z.any()).nullish(),\n})\n\n/**\n * @description 图例排序配置, 支持根据维度或指标排序, 以及自定义排序顺序; 排序数组遵循从左到右或从上到下的顺序\n * @default {}\n * @example \n * - order:'asc'\n * - orderBy:'date'\n * 或\n * - customOrder:['2019', '2020', '2021']\n */\nexport type SortLegend = {\n /**\n * @description 排序顺序, 可选值为 'asc' 或 'desc'\n * @default 'asc'\n * @enum ['asc', 'desc']\n * @example order:'asc'\n */\n order?: 'asc' | 'desc'\n /**\n * @description 排序依赖的字段, 可以是维度id或指标id\n * @example \n * - orderBy:'date'\n * - orderBy:'profit'\n */\n orderBy?: string\n /**\n * @description 自定义排序顺序, 该顺序将直接应用至图例, 升序从左到右或从上到下, 降序从右到左或从下到上\n */\n customOrder?: string[]\n}\n","import { z } from 'zod'\n\nexport const zAnalysis = z.object({\n orderMapping: z.record(z.string(), z.array(z.string())).nullish(),\n})\n","import { z } from 'zod'\n\nexport type Locale = 'zh-CN' | 'en-US'\n\nexport type TranslateRecordType = Record<string, { [local in Locale]: string }>\n\nexport const zLocale = z.enum(['zh-CN', 'en-US']).default('zh-CN')\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport { zBackgroundColor, zDataset, zDimensions, zMeasureTree, zTheme } from '../../properties'\n\nexport const zTable = z.object({\n chartType: z.literal('table'),\n dataset: zDataset.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n\n backgroundColor: zBackgroundColor.nullish(),\n borderColor: z.string().nullish(),\n bodyFontSize: z.number().nullish(),\n bodyFontColor: z.string().nullish(),\n bodyBackgroundColor: z.string().nullish(),\n hoverBodyBackgroundColor: z.string().nullish(),\n hoverBodyInlineBackgroundColor: z.string().nullish(),\n headerFontSize: z.number().nullish(),\n headerFontColor: z.string().nullish(),\n headerBackgroundColor: z.string().nullish(),\n hoverHeaderBackgroundColor: z.string().nullish(),\n hoverHeaderInlineBackgroundColor: z.string().nullish(),\n selectedBorderColor: z.string().nullish(),\n selectedBackgroundColor: z.string().nullish(),\n\n theme: zTheme.nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport { zBackgroundColor, zDataset, zDimensions, zTheme, zMeasures } from '../../properties'\n\nexport const zPivotTable = z.object({\n chartType: z.literal('pivotTable'),\n dataset: zDataset.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasures.nullish(),\n\n backgroundColor: zBackgroundColor.nullish(),\n borderColor: z.string().nullish(),\n bodyFontSize: z.number().nullish(),\n bodyFontColor: z.string().nullish(),\n bodyBackgroundColor: z.string().nullish(),\n hoverBodyBackgroundColor: z.string().nullish(),\n hoverBodyInlineBackgroundColor: z.string().nullish(),\n headerFontSize: z.number().nullish(),\n headerFontColor: z.string().nullish(),\n headerBackgroundColor: z.string().nullish(),\n hoverHeaderBackgroundColor: z.string().nullish(),\n hoverHeaderInlineBackgroundColor: z.string().nullish(),\n selectedBorderColor: z.string().nullish(),\n selectedBackgroundColor: z.string().nullish(),\n\n theme: zTheme.nullish(),\n locale: zLocale.nullish(),\n})\n","import { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zColor,\n zCrosshairLine,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zLineStyle,\n zMeasureTree,\n zPointStyle,\n zSort,\n zSortLegend,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\n\nimport { z } from 'zod'\n\nexport const zLine = z.object({\n chartType: z.literal('line'),\n dataset: zDataset.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairLine: zCrosshairLine.nullish(),\n sort: zSort.nullish(),\n sortLegend: zSortLegend.nullish(),\n theme: zTheme.nullish(),\n pointStyle: z.array(zPointStyle).or(zPointStyle).nullish(),\n lineStyle: z.array(zLineStyle).or(zLineStyle).nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n locale: zLocale.nullish(),\n})\n","import { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\nimport { z } from 'zod'\n\nexport const zColumn = z.object({\n chartType: z.literal('column'),\n dataset: zDataset.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n stackCornerRadius: zStackCornerRadius.nullish(),\n theme: zTheme.nullish(),\n barStyle: z.array(zBarStyle).or(zBarStyle).nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n locale: zLocale.nullish(),\n})\n","import { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\n\nimport { z } from 'zod'\n\nexport const zColumnParallel = z.object({\n chartType: z.literal('columnParallel'),\n dataset: zDataset.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n stackCornerRadius: zStackCornerRadius.nullish(),\n theme: zTheme.nullish(),\n barStyle: z.array(zBarStyle).or(zBarStyle).nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n locale: zLocale.nullish(),\n})\n","import { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\n\nimport { z } from 'zod'\n\nexport const zColumnPercent = z.object({\n chartType: z.literal('columnPercent'),\n dataset: zDataset.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n stackCornerRadius: zStackCornerRadius.nullish(),\n theme: zTheme.nullish(),\n barStyle: z.array(zBarStyle).or(zBarStyle).nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n locale: zLocale.nullish(),\n})\n","import { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXLinearAxis,\n zYBandAxis,\n} from '../../properties'\n\nimport { z } from 'zod'\n\nexport const zBar = z.object({\n chartType: z.literal('bar'),\n dataset: zDataset.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXLinearAxis.nullish(),\n yAxis: zYBandAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n stackCornerRadius: zStackCornerRadius.nullish(),\n theme: zTheme.nullish(),\n barStyle: z.array(zBarStyle).or(zBarStyle).nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXLinearAxis,\n zYBandAxis,\n} from '../../properties'\n\nexport const zBarParallel = z.object({\n chartType: z.literal('barParallel'),\n dataset: zDataset.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXLinearAxis.nullish(),\n yAxis: zYBandAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n stackCornerRadius: zStackCornerRadius.nullish(),\n theme: zTheme.nullish(),\n barStyle: z.array(zBarStyle).or(zBarStyle).nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXLinearAxis,\n zYBandAxis,\n} from '../../properties'\n\nexport const zBarPercent = z.object({\n chartType: z.literal('barPercent'),\n dataset: zDataset.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXLinearAxis.nullish(),\n yAxis: zYBandAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n stackCornerRadius: zStackCornerRadius.nullish(),\n theme: zTheme.nullish(),\n barStyle: z.array(zBarStyle).or(zBarStyle).nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zAreaStyle,\n zBackgroundColor,\n zColor,\n zCrosshairLine,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zLineStyle,\n zMeasureTree,\n zPointStyle,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\n\nexport const zArea = z.object({\n chartType: z.literal('area'),\n dataset: zDataset.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairLine: zCrosshairLine.nullish(),\n theme: zTheme.nullish(),\n pointStyle: z.array(zPointStyle).or(zPointStyle).nullish(),\n lineStyle: z.array(zLineStyle).or(zLineStyle).nullish(),\n areaStyle: z.array(zAreaStyle).or(zAreaStyle).nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n locale: zLocale.nullish(),\n})\n","import { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zAreaStyle,\n zBackgroundColor,\n zColor,\n zCrosshairLine,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zLineStyle,\n zMeasureTree,\n zPointStyle,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\n\nimport { z } from 'zod'\n\nexport const zAreaPercent = z.object({\n chartType: z.literal('areaPercent'),\n dataset: zDataset.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairLine: zCrosshairLine.nullish(),\n theme: zTheme.nullish(),\n pointStyle: z.array(zPointStyle).or(zPointStyle).nullish(),\n lineStyle: z.array(zLineStyle).or(zLineStyle).nullish(),\n areaStyle: z.array(zAreaStyle).or(zAreaStyle).nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\n\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zAreaStyle,\n zBackgroundColor,\n zCrosshairLine,\n zDataset,\n zDimensions,\n zLabel,\n zLineStyle,\n zMeasureTree,\n zPointStyle,\n zTheme,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\n\nexport const zAreaRange = z.object({\n chartType: z.literal('areaRange'),\n dataset: zDataset.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n label: zLabel.nullish(),\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairLine: zCrosshairLine.nullish(),\n theme: zTheme.nullish(),\n pointStyle: z.array(zPointStyle).or(zPointStyle).nullish(),\n lineStyle: z.array(zLineStyle).or(zLineStyle).nullish(),\n areaStyle: z.array(zAreaStyle).or(zAreaStyle).nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zColor,\n zCrosshairLine,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zPointStyle,\n zTheme,\n zTooltip,\n zXLinearAxis,\n zYLinearAxis,\n} from '../../properties'\n\nexport const zScatter = z.object({\n chartType: z.literal('scatter'),\n dataset: zDataset.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXLinearAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairLine: zCrosshairLine.nullish(),\n theme: zTheme.nullish(),\n pointStyle: z.array(zPointStyle).or(zPointStyle).nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from 'src/types/i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zAreaStyle,\n zBackgroundColor,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zDualChartType,\n zDualMeasures,\n zLabel,\n zLegend,\n zLineStyle,\n zMeasureTree,\n zPointStyle,\n zSort,\n zSortLegend,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from 'src/types/properties'\n\nexport const zDualAxis = z.object({\n chartType: z.literal('dualAxis'),\n\n dataset: zDataset.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n dualMeasures: zDualMeasures.nullish(),\n\n dualChartType: z.array(zDualChartType).or(zDualChartType).nullish(),\n\n primaryYAxis: z.array(zYLinearAxis).or(zYLinearAxis).nullish(),\n secondaryYAxis: z.array(zYLinearAxis).or(zYLinearAxis).nullish(),\n xAxis: zXBandAxis.nullish(),\n\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n\n crosshairRect: zCrosshairRect.nullish(),\n sort: zSort.nullish(),\n sortLegend: zSortLegend.nullish(),\n theme: zTheme.nullish(),\n\n barStyle: z.array(zBarStyle).or(zBarStyle).nullish(),\n pointStyle: z.array(zPointStyle).or(zPointStyle).nullish(),\n lineStyle: z.array(zLineStyle).or(zLineStyle).nullish(),\n areaStyle: z.array(zAreaStyle).or(zAreaStyle).nullish(),\n\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\n\nimport {\n zBackgroundColor,\n zColor,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zTheme,\n zTooltip,\n} from '../../properties'\n\nexport const zRose = z.object({\n chartType: z.literal('rose'),\n dataset: zDataset.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n theme: zTheme.nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zBackgroundColor,\n zColor,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zTheme,\n zTooltip,\n} from '../../properties'\n\nexport const zRoseParallel = z.object({\n chartType: z.literal('roseParallel'),\n dataset: zDataset.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n theme: zTheme.nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zBackgroundColor,\n zColor,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zTheme,\n zTooltip,\n} from '../../properties'\n\nexport const zPie = z.object({\n chartType: z.literal('pie'),\n dataset: zDataset.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n theme: zTheme.nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\n\nimport {\n zBackgroundColor,\n zColor,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zTheme,\n zTooltip,\n} from '../../properties'\n\nexport const zDonut = z.object({\n chartType: z.literal('donut'),\n dataset: zDataset.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n theme: zTheme.nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\n\nimport {\n zBackgroundColor,\n zColor,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zTheme,\n zTooltip,\n} from '../../properties'\n\nexport const zRadar = z.object({\n chartType: z.literal('radar'),\n dataset: zDataset.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n theme: zTheme.nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zBackgroundColor,\n zColorLegend,\n zDataset,\n zDimensions,\n zLabel,\n zLinearColor,\n zMeasureTree,\n zTheme,\n zTooltip,\n} from '../../properties'\n\nexport const zFunnel = z.object({\n chartType: z.literal('funnel'),\n dataset: zDataset.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zLinearColor.nullish(),\n label: zLabel.nullish(),\n legend: zColorLegend.nullish(),\n tooltip: zTooltip.nullish(),\n theme: zTheme.nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\n\nimport {\n zBackgroundColor,\n zColorLegend,\n zDataset,\n zDimensions,\n zLabel,\n zLinearColor,\n zMeasureTree,\n zTheme,\n zTooltip,\n} from '../../properties'\n\nexport const zHeatmap = z.object({\n chartType: z.literal('heatmap'),\n dataset: zDataset.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zLinearColor.nullish(),\n label: zLabel.nullish(),\n legend: zColorLegend.nullish(),\n tooltip: zTooltip.nullish(),\n theme: zTheme.nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\n\nimport { zBar, type Bar } from './chartType/bar'\nimport { zBarParallel, type BarParallel } from './chartType/barParallel'\nimport { zColumn, type Column } from './chartType/column'\nimport { zColumnParallel, type ColumnParallel } from './chartType/columnParallel'\nimport { zColumnPercent, type ColumnPercent } from './chartType/columnPercent'\nimport { zLine, type Line } from './chartType/line'\nimport type { Table } from './chartType/table'\nimport { zRose, type Rose } from './chartType/rose'\nimport { zBarPercent, type BarPercent } from './chartType/barPercent'\nimport type { PivotTable } from './chartType/pivotTable'\nimport { zPie, type Pie } from './chartType/pie'\nimport { zDonut, type Donut } from './chartType/donut'\nimport type { DualAxis } from './chartType/dualAxis'\nimport { zArea, type Area } from './chartType/area'\nimport { zAreaPercent, type AreaPercent } from './chartType/areaPercent'\nimport type { AreaRange, Heatmap, Radar } from './chartType'\nimport {\n zAreaRange,\n zDualAxis,\n zFunnel,\n zHeatmap,\n zPivotTable,\n zRadar,\n zRoseParallel,\n zScatter,\n zTable,\n type Funnel,\n type RoseParallel,\n type Scatter,\n} from './chartType'\n\nexport type VSeed =\n // table\n | Table\n | PivotTable\n\n // cartesian\n | Line\n | Column\n | ColumnParallel\n | ColumnPercent\n | Bar\n | BarParallel\n | BarPercent\n | Area\n | AreaPercent\n | AreaRange\n | Scatter\n | DualAxis\n\n // polar\n | Rose\n | RoseParallel\n | Pie\n | Donut\n | Radar\n\n // other\n | Funnel\n | Heatmap\n\nexport const zVSeed = z.discriminatedUnion('chartType', [\n zTable,\n zPivotTable,\n // cartesian\n zLine,\n zColumn,\n zColumnParallel,\n zColumnPercent,\n zBar,\n zBarParallel,\n zBarPercent,\n zArea,\n zAreaPercent,\n zAreaRange,\n zScatter,\n zDualAxis,\n // polar\n zPie,\n zDonut,\n zRose,\n zRoseParallel,\n zRadar,\n // other\n zFunnel,\n zHeatmap,\n])\n","import { z } from 'zod'\nimport { zChartType } from './properties/chartType'\nimport { zDataset } from './properties/dataset'\nimport { zDimensionTree } from './properties/dimensions'\nimport { zMeasureTree } from './properties/measures'\nimport { zEncoding } from './properties/encoding/encoding'\nimport { zDatasetReshapeInfo } from './properties/datasetReshapeInfo/datasetReshapeInfo'\nimport { zTheme, zCustomThemeConfig } from './properties/theme'\nimport { zConfig } from './properties/config'\nimport { zAnalysis, zAnnotation, zMarkStyle } from './properties'\nimport { zLocale } from './i18n'\n\nexport const zAdvancedVSeed = z.object({\n chartType: zChartType,\n dataset: zDataset,\n datasetReshapeInfo: zDatasetReshapeInfo,\n dimensions: zDimensionTree,\n measures: zMeasureTree,\n encoding: zEncoding,\n config: zConfig,\n analysis: zAnalysis,\n theme: zTheme,\n markStyle: zMarkStyle,\n customTheme: zCustomThemeConfig,\n annotation: zAnnotation,\n locale: zLocale,\n})\n\nexport type AdvancedVSeed = z.infer<typeof zAdvancedVSeed>\n"],"names":["execPipeline","pipeline","context","initialValue","result","prev","cur","buildAdvanced","builder","start","performance","Date","chartType","Error","Builder","e","console","end","buildSpec","advancedVSeed","build","spec","Intl","translateMap","value","segments","values","text","segment","index","translatedText","isNullish","locale","intl","i18n","getColorItems","datasetReshapeInfo","colorItems","unique","d","colorIdMap","getColorIdMap","vseed","advanced","customPipe","themeKey","initAdvancedVSeed","autoMeasures","measures","dataset","top100dataset","sample","Object","key","item","undefined","measure","preorderTraverse","tree","callback","stack","node","stop","children","i","child","findMeasureById","id","findFirstMeasure","findAllMeasures","autoDimensions","dimensions","dim","records","tableConfig","config","pick","theme","customTheme","chartConfigTheme","chartConfig","mergedConfig","mergeDeep","clone","_k","Array","mergeArray","chartCustomTheme","arr","themeItem","isString","isNumber","isObjectType","merge","tableAdvancedPipeline","initTable","backgroundColor","isMeasure","isMeasureGroup","isMeasures","dimensionTreeToColumns","eachNode","columns","treeTreeToColumns","groupNode","field","title","props","createNumFormatter","format","type","ratio","symbol","thousandSeparator","prefix","suffix","fractionDigits","significantDigits","roundingMode","roundingPriority","numFormatterOptions","numFormatter","num","Number","typeSymbol","String","numStr","parts","autoNumFormatter","createFormatter","autoFormatter","measureTreeToColumns","fieldFormat","datum","autoFormat","isEmpty","formatter","bodyStyle","themeConfig","borderColor","fontColor","fontSize","hoverCellBgColor","hoverInlineColor","headerStyle","themConfig","frameStyle","selectionStyle","tableSpecPipeline","registerTable","autoPivotMeasures","findDimensionById","findFirstDimension","findAllDimensions","autoPivotDimensions","newDimensions","pivotTableConfig","pivotTableAdvancedPipeline","initPivotTable","pivotColumns","pivotRows","rows","pivotIndicators","rowHeaderStyle","cornerHeaderStyle","hoverCellColor","AggregationType","SortType","dataConfig","aggregationRules","pivotTableSpecPipeline","registerPivotTable","measureDepth","depth","Math","isTable","isPivotTable","isVTable","isVChart","isPivotChart","hasRowOrColumnDimension","dimension","hasMeasureGroup","autoMeasureGroup","newMeasures","currentGroup","createEmptyMeasureGroup","measureGroups","pivotAdapter","pivotPipeline","usePivotChart","FoldMeasureName","FoldMeasureId","FoldMeasureValue","FoldPrimaryMeasureValue","FoldSecondaryMeasureValue","UnfoldDimensionGroup","UnfoldDimensionGroupId","Separator","ORIGINAL_DATA","foldMeasures","measureId","measureName","measureValue","foldInfo","ids","j","omit","alias","unfoldDimensions","unfoldStartIndex","unfoldGroupName","unfoldGroupId","foldMeasureId","dimensionsSeparator","dimensionsToBeUnfolded","unfoldInfo","colorMap","colorName","generateDimGroupName","colorId","dimensionsToBeGrouped","unfoldZeroDimensions","emptyReshapeResult","dataReshapeFor2D1M0Name","options","foldMeasureName","foldMeasureValue","unfoldDimensionGroup","unfoldDimensionGroupId","foldedDataset","finalDataset","onlyOneMeasure","onlyOneDimension","dims","reshapeTo2D1M0Name","newDatasets","pivotReshapeTo2D1M0Name","commonDimensions","measureGroup","groupId","newSubDataset","reshapeInfo","encodingXY","xDimension","isZeroDimension","encoding","x","y","group","color","sortXBandAxis","sortAxis","xField","axisOrderResult","calcOrder","sortYBandAxis","yField","sortLegend","groupField","nameMap","pre","orderRes","itemNameOrId","sortConfig","order","orderBy","res","sort","a","b","aValue","bValue","lineConfig","columnConfig","pieConfig","areaConfig","areaPercentConfig","scatterConfig","barConfig","barParallelConfig","barPercentConfig","columnParallelConfig","columnPercentConfig","donutConfig","roseConfig","roseParallelConfig","funnelConfig","heatmapConfig","radarConfig","markStyle","annotation","lineAdvancedPipeline","initLine","baseConfig","colorScheme","colorMapping","mappingList","idMap","_","v","datasetXY","analysis","orderMapping","angle","fields","progressive","size","xBand","visible","label","tick","grid","line","labelAutoHide","labelAutoHideGap","labelAutoLimit","labelAutoLimitLength","labelAutoRotate","labelAutoRotateAngleRange","sampling","bandAxis","ANNOTATION_Z_INDEX","LINEAR_AXIS_INNER_OFFSET_TOP","yLinear","zero","nice","inverse","max","min","log","logBase","linearAxis","enable","formatValue","tooltip","groupName","verticalCrosshairLine","lineColor","labelColor","labelVisible","labelBackgroundColor","crosshair","discreteLegend","legend","position","labelFontColor","labelFontSize","labelFontWeight","maxSize","border","shapeType","orient","legendPosition","items","selector","vchartDatum","selectorMode","vchartKeys","k","selectors","isValueSelector","isMeasureSelector","op","selectorValueArr","isDimensionSelector","isPartialDatumSelector","pointStyle","pointStyles","customMap","style","pointBorderColor","pointBorderStyle","pointBorderWidth","pointColor","pointColorOpacity","pointSize","lineDash","pointStateDimensionHover","point","pointStateHover","lineStyle","lineStyles","lineGroups","groupBy","lineColorOpacity","lineSmooth","lineWidth","dashSegment","dashGap","curveType","lineData","isSubset","sub","obj","annotationPoint","annotationPointList","markPoint","selectorPoint","textColor","textFontSize","textFontWeight","textAlign","textBaseline","textBackgroundBorderColor","textBackgroundBorderRadius","textBackgroundBorderWidth","textBackgroundColor","textBackgroundPadding","textBackgroundVisible","offsetX","offsetY","selectedData","data","targetDatum","annotationVerticalLine","annotationVerticalLineList","positionMap","markLine","xValue","textPosition","lineVisible","generateOneMarkLine","isArray","xValueArr","specMarkLine","newMarkLine","annotationHorizontalLine","yValue","yValueArr","annotationArea","annotationAreaList","markArea","areaColor","areaColorOpacity","areaBorderColor","areaBorderRadius","areaBorderWidth","outerPadding","labelPosition","isBottom","positionData","xyList","yAxisHelper","xAxisHelper","yScale","minX","maxX","minY","maxY","xScale","initPivot","pivotGridStyle","transparent","hoverBackgroundColor","chartPipeline","indicators","newEncoding","newDatasetReshapeInfo","newContext","chartSpec","pivotIndicatorsAsRow","pivotIndicatorsAsCol","datasetPivot","pivotRowDimensions","rowDimensions","pivotColumnDimensions","columnDimensions","pivotDiscreteLegend","legends","pivotLine","lineSpecPipeline","registerLine","dataReshapeFor2D1M","reshapeTo2D1M","pivotReshapeTo2D1M","columnAdvancedPipeline","initColumn","stackCornerRadius","stackInverse","verticalCrosshairRect","rectColor","barStyle","showStroke","barStyles","barBorderColor","barBorderStyle","barBorderWidth","barColor","barColorOpacity","barRadius","annotationAreaBand","xBandWidth","yBandWidth","column","pivotColumn","columnSpecPipeline","registerColumn","columnParallelAdvancedPipeline","initColumnParallel","columnParallel","pivotColumnParallel","columnParallelSpecPipeline","registerColumnParallel","columnPercentAdvancedPipeline","percent","columnPercent","pivotColumnPercent","columnPercentSpecPipeline","registerColumnPercent","encodingYX","yDimension","barAdvancedPipeline","initBar","datasetYX","xLinear","yBand","horizontalCrosshairRect","bar","pivotBar","barSpecPipeline","registerBar","barParallelAdvancedPipeline","initBarParallel","barParallel","pivotBarParallel","barParallelSpecPipeline","registerBarParallel","barPercentAdvancedPipeline","barPercent","pivotBarPercent","barPercentSpecPipeline","registerBarPercent","areaAdvancedPipeline","initArea","areaStyle","areaStyles","area","pivotArea","areaSpecPipeline","registerArea","areaPercentAdvancedPipeline","areaPercent","pivotAreaPercent","areaPercentSpecPipeline","registerAreaPercent","autoMeasuresBy2M1Group","auto2M1Group","allMeasures","groups","singleMeasures","dataReshapeFor1D","reshapeTo1D","pivotReshapeTo1D","encodingAreaRange","m1","m2","areaRangeAdvancedPipeline","series","args","seriesDualAxis","createDualContext","seriesContext","initAreaRange","initAreaRangeLine1","initAreaRangeLine2","tooltipDisable","tooltipAreaRange","areaRange","pivotAreaRange","areaRangeSpecPipeline","registerAreaRange","dataReshapeFor1D2M","reshapeTo1D2M","pivotReshapeTo1D2M","encodingYY","firstMeasure","scatterAdvancedPipeline","initScatter","horizontalCrosshairLine","scatter","pivotScatter","scatterSpecPipeline","registerScatter","reshapeTo2D2M","datasets","foldInfoList","unfoldInfoList","primaryMeasures","secondaryMeasures","pivotReshapeTo2D2M","datasetList","encodingXYY","dualAxisConfig","autoDualMeasures","dualMeasures","dualMeasuresToMeasureTree","measureTree","groupChildren","arrPrimaryMeasures","arrSecondaryMeasures","dualAxisAdvancedPipeline","initDualAxisPrimary","initDualAxisSecondary","dualChartTypePrimary","primary","columnSpec","dualChartTypeSecondary","secondary","datasetPrimary","datasetSecondary","labelPrimary","labelSecondary","tooltipPrimary","tooltipSecondary","yLinearPrimary","primaryYAxis","seriesId","yLinearSecondary","secondaryYAxis","dualAxis","pivotDualAxis","dualAxisSpecPipeline","registerDualAxis","dataReshapeFor1D1M","reshapeTo1D1M","pivotReshapeTo1D1M","encodingPie","radius","pieAdvancedPipeline","initPie","pie","pivotPie","pieSpecPipeline","registerPie","donutAdvancedPipeline","initDonut","donut","pivotDonut","donutSpecPipeline","registerDonut","encodingRose","angleDimension","is1D1M","roseAdvancedPipeline","initRose","hasNegativeValue","radiusAxis","is0D","is1M1D","showAxis","angleAxis","rose","pivotRose","roseSpecPipeline","registerRose","roseParallelAdvancedPipeline","initRoseParallel","roseParallel","pivotRoseParallel","roseParallelSpecPipeline","registerRoseParallel","encodingAR","radarAdvancedPipeline","initRadar","radarAngleAxis","radarRadiusAxis","radar","pivotRadar","radarSpecPipeline","registerRadar","encodingFunnel","funnelAdvancedPipeline","initFunnel","linearColor","colorLegend","funnel","pivotFunnel","funnelSpecPipeline","registerFunnel","encodingMatrix","heatmapAdvancedPipeline","labelColorInversion","initHeatmap","heatmap","pivotHeatmap","heatmapSpecPipeline","registerHeatmap","lightTheme","barBandAxis","crosshairLine","crosshairRect","darkTheme","registerCustomTheme","registerLightTheme","registerDarkTheme","registerAll","updateAdvanced","advancedPipe","updateSpec","specPipe","isDimension","isDimensionGroup","isDimensions","zChartType","z","zDualChartType","zDatum","zDataset","zDimension","zDimensionGroup","zDimensions","zDimensionTree","zNumFormat","zMeasure","zMeasureGroup","zMeasures","zMeasureTree","zDualMeasure","zDualMeasures","zFoldInfo","zUnfoldInfo","zDatasetReshapeInfo","zEncoding","zXBandAxis","zYBandAxis","zXLinearAxis","zYLinearAxis","zCrosshairLine","zCrosshairRect","zStackCornerRadius","zBackgroundColor","zColor","zLinearColor","zLabel","zLegend","zColorLegend","zTooltip","zTableConfig","zPivotTableConfig","zLineConfig","zColumnConfig","zColumnParallelConfig","zColumnPercentConfig","zBarConfig","zBarParallelConfig","zBarPercentConfig","zAreaConfig","zAreaPercentConfig","zAreaRangeConfig","zDualAxisConfig","zScatterConfig","zRoseConfig","zRoseParallelConfig","zPieConfig","zDonutConfig","zRadarConfig","zFunnelConfig","zHeatmapConfig","zConfig","zAxis","zCustomThemeConfig","zCustomTheme","zTheme","zSelector","zSelectors","zBarStyle","zPointStyle","zLineStyle","zAreaStyle","zMarkStyle","zAnnotationPoint","zAnnotationVerticalLine","zAnnotationHorizontalLine","zAnnotationArea","zAnnotation","zSort","zSortLegend","zAnalysis","zLocale","zTable","zPivotTable","zLine","zColumn","zColumnParallel","zColumnPercent","zBar","zBarParallel","zBarPercent","zArea","zAreaPercent","zAreaRange","zScatter","zDualAxis","zRose","zRoseParallel","zPie","zDonut","zRadar","zFunnel","zHeatmap","zVSeed","zAdvancedVSeed"],"mappings":"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6W,SAAS;YACd;QACF;IACF;AACF;ACpBA,MAAMwK,YAAqB;IACzBH;IACAvD;IACArO;IACA1J;IACA6M;IACAK;IACAE;IACAgB;IACAd;IACAyB;IACAE;IACAM;IACAwB;IACAW;IACAG;IACA0J;IACA5I;IACAoB;IACAY;IACAG;CACD;AAED,MAAM4G,YAA0B;IAC9BvF;IACAC;IACAS;IACAE;IACA7S,gCAAgB;QACdoX;QACA5R;QACA1J;QACA+X;QACAlL;QACAK;QACAE;QACAgB;QACAd;QACAyB;QACAE;QACA8B;QACAW;QACAG;QACA0J;QACA5I;QACAoB;QACAY;QACAG;KACD;IACDkC;IACAE;IACAE;CACD;AAEM,MAAMuE,mBAAmB;IAAC/V,0BAAa6V,WAAMC;CAAW;ACpFxD,MAAME,eAAe;IAC1B9gB,QAAQ,oBAAoB,CAA5BA,IAAoC,GAAGugB;IACvCvgB,QAAQ,gBAAgB,CAAxBA,IAAgC,GAAG6gB;AACrC;ACWO,MAAME,8BAAgD;IAC3D/e;IACAC;IACAuB;IACAsH,aAAa;QAAC+C;KAAmB,EAAE;QAACE;KAAwB;IAC5DM;IACAQ;IACAO;IACAmB;IACAxM;IACAqN;IACAC;CACD;ACID,MAAM2P,cAA4B;IAChCR;IACAvD;IACArO;IACA1J;IACAyZ;IACA5M;IACAK;IACAE;IACAgB;IACAd;IACAyB;IACAE;IACAM;IACAwB;IACAc;IACA0J;IACA5I;IACAoB;IACAY;IACAG;CACD;AAED,MAAMiH,mBAAiC;IACrC5F;IAEAC;IACAS;IACAE;IACA7S,gCAAgB;QACdoX;QACAvD;QACArO;QACA1J;QACAyZ;QACA5M;QACAK;QACAE;QACAgB;QACAd;QACAyB;QACAE;QACA8B;QACAc;QACA0J;QACA5I;QACAoB;QACAY;QACAG;KACD;IACDkC;IACAE;IACAE;CACD;AAEM,MAAM4E,0BAA0B;IAACpW,0BAAakW,aAAaC;CAAkB;ACrF7E,MAAME,sBAAsB;IACjCnhB,QAAQ,oBAAoB,CAA5BA,WAA2C,GAAG+gB;IAC9C/gB,QAAQ,gBAAgB,CAAxBA,WAAuC,GAAGkhB;A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"}
|