@visactor/vseed 0.1.7 → 0.1.8
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/dataReshape/constant.d.ts +2 -0
- package/dist/index.cjs +740 -288
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +733 -286
- package/dist/index.js.map +1 -1
- package/dist/pipeline/advanced/chart/pipes/encoding/bar.d.ts +1 -19
- package/dist/pipeline/advanced/chart/pipes/encoding/column.d.ts +1 -19
- package/dist/pipeline/advanced/chart/pipes/encoding/dualAxis.d.ts +1 -19
- package/dist/pipeline/advanced/chart/pipes/encoding/encodingAdapter.d.ts +2 -0
- package/dist/pipeline/advanced/chart/pipes/encoding/funnel.d.ts +1 -17
- package/dist/pipeline/advanced/chart/pipes/encoding/heatmap.d.ts +1 -19
- package/dist/pipeline/advanced/chart/pipes/encoding/index.d.ts +11 -9
- package/dist/pipeline/advanced/chart/pipes/encoding/line.d.ts +1 -18
- package/dist/pipeline/advanced/chart/pipes/encoding/pie.d.ts +1 -18
- package/dist/pipeline/advanced/chart/pipes/encoding/radar.d.ts +1 -19
- package/dist/pipeline/advanced/chart/pipes/encoding/rose.d.ts +1 -19
- package/dist/pipeline/advanced/chart/pipes/encoding/scatter.d.ts +1 -18
- package/dist/pipeline/advanced/chart/pipes/measures/utils.d.ts +7 -1
- package/dist/pipeline/spec/chart/pipes/tooltip/index.d.ts +2 -0
- package/dist/pipeline/spec/chart/pipes/tooltip/tooltip.d.ts +21 -1
- package/dist/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.d.ts +15 -0
- package/dist/pipeline/spec/chart/pipes/tooltip/tooltipScatter.d.ts +15 -0
- package/dist/types/chartType/area/area.d.ts +7 -27
- package/dist/types/chartType/areaPercent/areaPercent.d.ts +7 -27
- package/dist/types/chartType/bar/bar.d.ts +8 -29
- package/dist/types/chartType/barParallel/barParallel.d.ts +8 -29
- package/dist/types/chartType/barPercent/barPercent.d.ts +8 -29
- package/dist/types/chartType/column/column.d.ts +8 -29
- package/dist/types/chartType/columnParallel/columnParallel.d.ts +9 -30
- package/dist/types/chartType/columnPercent/columnPercent.d.ts +8 -29
- package/dist/types/chartType/donut/donut.d.ts +7 -27
- package/dist/types/chartType/dualAxis/dualAxis.d.ts +9 -29
- package/dist/types/chartType/funnel/funnel.d.ts +7 -26
- package/dist/types/chartType/heatmap/heatmap.d.ts +8 -29
- package/dist/types/chartType/line/line.d.ts +7 -27
- package/dist/types/chartType/pie/pie.d.ts +7 -27
- package/dist/types/chartType/pivotTable/pivotTable.d.ts +4 -7
- package/dist/types/chartType/radar/radar.d.ts +7 -29
- package/dist/types/chartType/rose/rose.d.ts +8 -29
- package/dist/types/chartType/roseParallel/roseParallel.d.ts +8 -29
- package/dist/types/chartType/scatter/scatter.d.ts +7 -28
- package/dist/umd/index.js +736 -288
- package/dist/umd/index.js.map +1 -1
- package/package.json +2 -2
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/default/defaultMeasures.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/default/defaultDimensions.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/records/records.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/config/tableConfig.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/theme/theme.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipeline/table.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/init/table.ts","webpack://@visactor/vseed/./src/pipeline/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/dataReshape/constant.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/default/defaultMeasureName.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/encoding/pivotTable.ts","webpack://@visactor/vseed/./src/dataReshape/foldMeasures.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/reshape/reshapePivotTable.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/config/pivotTableConfig.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipeline/pivotTable.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/init/pivotTable.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/columns/pivotColumns.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/rows/pivotRows.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/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.8/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/advanced/chart/pipes/default/defaultMeasures.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/default/defaultDimensions.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/default/defaultMeasureName.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/line.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/utils.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/measures/buildMeasures.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/pivot/pivotAdapter.ts","webpack://@visactor/vseed/./src/dataReshape/unfoldDimensions.ts","webpack://@visactor/vseed/./src/dataReshape/dataReshapeByEncoding.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/colorAdapter.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeWithEncoding.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithEncoding.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/analysis/sortXBand.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/analysis/sortLegend.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/color/linearColor.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/backgroundColor/background.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/datasetXY.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/progressive.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/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/crosshair/verticalCrosshairLine.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/legend/discreteLegend.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/legend/colorLegend.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/colorPointStyleFill.ts","webpack://@visactor/vseed/./src/dataSelector/selector.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/pointStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/pointState.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/colorLineStyleFill.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/lineStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/label/label.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltip.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/utils.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/annotationPoint.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/annotationVerticalLine.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/annotationHorizontalLine.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/annotationArea.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/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/legend/pivotColorLegend.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/pivotChart/pivotAdapter.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/line.ts","webpack://@visactor/vseed/./src/builder/register/chartType/line.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/column.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/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/color/colorBarStyleFill.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/barStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/annotationAreaBand.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/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/bar.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/analysis/sortYBand.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/bar.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/bar.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/datasetYX.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/xLinear.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/yBand.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/crosshair/horizontalCrosshairRect.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/bar.ts","webpack://@visactor/vseed/./src/builder/register/chartType/bar.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/barParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/barParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/barParallel.ts","webpack://@visactor/vseed/./src/builder/register/chartType/barParallel.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/barPercent.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/barPercent.ts","webpack://@visactor/vseed/./src/builder/register/chartType/barPercent.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/area.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/area.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/colorAreaStyleFill.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/areaStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/area.ts","webpack://@visactor/vseed/./src/builder/register/chartType/area.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/areaPercent.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/areaPercent.ts","webpack://@visactor/vseed/./src/builder/register/chartType/areaPercent.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/scatter.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/buildMeasuresForScatter.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeWithScatterEncoding.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithScatterEncoding.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/scatter.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/scatter.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/datasetScatter.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/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/encoding/dualAxis.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/buildMeasuresForDualAxis.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/config/dualAxis.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/dualAxis.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/series/series.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/dualAxis.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dual/dualChartType.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/datasetDualAxis.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/label/labelDualAxis.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/yLinearPrimary.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/yLinearSecondary.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/linearColorForDualAxis.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/dualAxis.ts","webpack://@visactor/vseed/./src/builder/register/chartType/dualAxis.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/pie.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/pie.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/pie.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/colorPieStyleFill.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/pieStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/pie.ts","webpack://@visactor/vseed/./src/builder/register/chartType/pie.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/donut.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/donut.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/donut.ts","webpack://@visactor/vseed/./src/builder/register/chartType/donut.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/rose.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/rose.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/rose.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/angle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/radius.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/colorRoseStyleFill.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/roseStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/rose.ts","webpack://@visactor/vseed/./src/builder/register/chartType/rose.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/roseParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/roseParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/roseParallel.ts","webpack://@visactor/vseed/./src/builder/register/chartType/roseParallel.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/radar.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/radar.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/radar.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/radarAngle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/radarRadius.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/radar.ts","webpack://@visactor/vseed/./src/builder/register/chartType/radar.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/funnel.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/funnel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/funnel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/colorFunnelStyleFill.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/funnelStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/funnel.ts","webpack://@visactor/vseed/./src/builder/register/chartType/funnel.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/heatmap.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/heatmap.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/label/labelColorInversion.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/colorCellStyleFill.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/cellStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/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/find.ts","webpack://@visactor/vseed/./src/types/properties/chartType/chartType.ts","webpack://@visactor/vseed/./src/types/properties/chartType/dualChartType.ts","webpack://@visactor/vseed/./src/types/properties/dataset/dataset.ts","webpack://@visactor/vseed/./src/types/properties/dimensions/zDimensions.ts","webpack://@visactor/vseed/./src/types/properties/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/measures/zScatterMeasures.ts","webpack://@visactor/vseed/./src/types/properties/datasetReshapeInfo/zDatasetReshapeInfo.ts","webpack://@visactor/vseed/./src/types/properties/encoding/zEncoding.ts","webpack://@visactor/vseed/./src/types/properties/config/axes/bandAxis.ts","webpack://@visactor/vseed/./src/types/properties/config/axes/linearAxis.ts","webpack://@visactor/vseed/./src/types/properties/config/crosshair/zCrosshair.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/zAreaStyle.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/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/zVseed.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 } from 'src/types'\n\n/**\n * @description 如果用户没有配置 measures, 则基于 dataset 构建默认的 measures\n */\nexport const defaultMeasures: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { measures, dataset } = vseed\n\n if (measures && measures.length > 0) {\n return {\n ...advancedVSeed,\n measures,\n }\n }\n\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return {\n ...advancedVSeed,\n measures: [],\n }\n }\n\n const top100dataset = dataset.slice(0, 100)\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n const defaultMeasures = Object.keys(sample)\n .filter((key) => {\n return top100dataset.some((item) => typeof item[key] === 'number') && !['', null, undefined].includes(key)\n })\n .map((measure) => ({\n id: measure,\n alias: measure,\n }))\n\n return {\n ...advancedVSeed,\n measures: defaultMeasures,\n }\n}\n","/**\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, Dimensions, DimensionTree } from 'src/types'\n\nexport const defaultDimensions: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dimensions, dataset } = vseed\n\n if (dimensions && dimensions.length > 0) {\n return {\n ...result,\n dimensions,\n }\n }\n\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return result\n }\n\n const measures = findAllMeasures(advancedVSeed.measures as DimensionTree)\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n const newDimensions = Object.keys(sample)\n .filter(\n (key) =>\n top100dataset.some((item) => typeof item[key] === 'string') &&\n !['', null, undefined].includes(key) &&\n !measures.some((measure) => measure.id === key),\n )\n .map((dim) => ({\n id: dim,\n alias: dim,\n })) as Dimensions\n\n return {\n ...result,\n dimensions: newDimensions,\n }\n}\n","import type { AdvancedPipe } from 'src/types'\n\nexport const records: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { dataset } = vseed\n return {\n ...advancedVSeed,\n dataset,\n }\n}\n","import { pick } from 'remeda'\nimport type { AdvancedPipe, Config } from 'src/types'\n\nexport const tableConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const config = pick(vseed, [\n 'backgroundColor',\n 'bodyFontSize',\n 'bodyFontColor',\n 'bodyBackgroundColor',\n 'headerFontSize',\n 'headerFontColor',\n 'headerBackgroundColor',\n 'hoverHeaderBackgroundColor',\n 'hoverHeaderInlineBackgroundColor',\n 'selectedBorderColor',\n 'selectedBackgroundColor',\n ]) as Config['pivotTable']\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result\n}\n","import { clone, isNullish, isNumber, isObjectType, isString, merge, mergeDeep } from 'remeda'\nimport type { AdvancedPipe, AdvancedVSeed } from 'src/types'\n\nexport const theme: AdvancedPipe = (advancedVSeed, context) => {\n const { customTheme, vseed } = context\n const { theme = 'light', chartType } = vseed\n const result = {\n ...advancedVSeed,\n } as AdvancedVSeed\n\n if (!customTheme || !customTheme[theme]) {\n return result\n }\n\n const chartConfigTheme = customTheme?.[theme].config?.[chartType]\n if (chartConfigTheme) {\n const chartConfig = result.config?.[chartType] || {}\n const mergedConfig = mergeDeep(chartConfigTheme, clone(chartConfig))\n\n // 数组项不会被Merge, 需要将1个主题配置, 合并到数组的每一项\n for (const _k in mergedConfig) {\n const key = _k as keyof typeof mergedConfig\n // 配置的第一层, 如果是数组, 则数组的每一项目和主题配置合并\n if (Array.isArray(mergedConfig[key])) {\n mergedConfig[key] = mergeArray(mergedConfig[key], chartConfigTheme[key])\n }\n }\n\n result.config = {\n [chartType]: mergedConfig,\n }\n }\n\n const chartCustomTheme = customTheme?.[theme]?.config?.[chartType]\n\n result.customTheme = {\n config: {\n [chartType]: chartCustomTheme,\n },\n }\n\n return result\n}\n\nconst mergeArray = <Destination extends Array<object>, Source extends object | number | string | undefined | null>(\n arr: Destination,\n themeItem: Source,\n): Destination => {\n if (isNullish(themeItem) || isString(themeItem) || isNumber(themeItem)) {\n return arr\n }\n\n if (!Array.isArray(arr)) {\n return arr\n }\n\n if (arr.some((d) => !isObjectType(d))) {\n return arr\n }\n\n return arr.map((item) => {\n return merge(themeItem, item)\n }) as Destination\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport { initAdvancedVSeed, records, tableConfig, defaultMeasures, defaultDimensions } from '../pipes'\nimport { theme } from '../../chart/pipes'\n\nexport const tableAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n\n records,\n tableConfig,\n theme,\n]\n","import type { ListTableConstructorOptions } from '@visactor/vtable'\nimport type { SpecPipe } from 'src/types'\n\nexport const initTable: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { dataset } = advancedVSeed\n const { config } = advancedVSeed\n const { backgroundColor = 'transparent' } = config.table || {}\n\n return {\n ...spec,\n records: dataset,\n widthMode: 'standard',\n 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, 12, 8, 12],\n textAlign: 'right',\n hover: {\n cellBgColor: hoverCellBgColor,\n inlineRowBgColor: hoverInlineColor,\n inlineColumnBgColor: hoverInlineColor,\n },\n color: fontColor,\n fontSize: fontSize,\n fontStyle: 'normal',\n fontWeight: 'normal',\n fontVariant: 'normal',\n bgColor: backgroundColor,\n lineHeight: fontSize * 1.5,\n }\n\n return result\n}\n","import type { 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}","// Reshape\nexport const ORIGINAL_DATA = '__OriginalData__'\nexport const Separator = '-'\n\n// Measures\nexport const FoldMeasureName = '__MeaName__'\nexport const FoldMeasureId = '__MeaId__'\nexport const FoldMeasureValue = '__MeaValue__'\nexport const MeasureName = FoldMeasureName\n\n// Measures For DualAxis\nexport const FoldPrimaryMeasureValue = '__MeaPrimaryValue__'\nexport const FoldSecondaryMeasureValue = '__MeaSecondaryValue__'\n\n// Measures For Scatter\nexport const FoldXMeasureValue = '__MeaXValue__'\nexport const FoldYMeasureValue = '__MeaYValue__'\n\n// Encoding\nexport const XEncoding = '__Dim_X__'\nexport const YEncoding = '__Dim_Y__'\nexport const AngleEncoding = '__Dim_Angle__'\nexport const DetailEncoding = '__Dim_Detail__'\nexport const ColorEncoding = '__Dim_Color__'\nexport const ColorIdEncoding = '__Dim_ColorId__'\n","import { MeasureName } from 'src/dataReshape'\nimport { intl } from 'src/i18n'\nimport type { AdvancedPipe, Dimension } from 'src/types'\n\nexport const defaultMeasureName: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n\n const MeaName: Dimension = {\n id: MeasureName,\n alias: intl.i18n`指标名称`,\n }\n\n // 如果没有指标名称维度,则默认添加指标名称维度\n if (!result.dimensions?.some((dim) => dim.id === MeasureName)) {\n result.dimensions?.push(MeaName)\n }\n\n return result\n}\n","import { unique } from 'remeda'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\n\nexport const encodingForPivotTable: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\n }\n\n if (hasMeasureEncoding) {\n generateMeasureEncoding(measures, encoding)\n } else {\n generateDefaultMeasureEncoding(measures, encoding)\n }\n\n return { ...advancedVSeed, encoding }\n}\n\n/**\n * --------------------维度--------------------\n */\nconst generateDefaultDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.tooltip = uniqueDimIds\n encoding.row = []\n encoding.column = []\n\n uniqueDimIds.forEach((item, index) => {\n if (index % 2 === 0) {\n encoding.column!.push(item)\n } else {\n encoding.row!.push(item)\n }\n })\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.tooltip = uniqueDimIds\n encoding.row = []\n encoding.column = []\n\n dimensions.forEach((dim, index) => {\n const id = dim.id\n if (dim.encoding === 'row') {\n encoding.row!.push(id)\n } else if (dim.encoding === 'column') {\n encoding.column!.push(id)\n } else {\n if (index % 2 === 0) {\n encoding.column!.push(id)\n } else {\n encoding.row!.push(id)\n }\n }\n })\n}\n\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.tooltip = unique(measures.map((item) => item.id))\n encoding.detail = unique(\n measures.filter((item) => item.encoding === 'detail' || !item.encoding).map((item) => item.id),\n )\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.tooltip = measures.map((item) => item.id)\n encoding.detail = unique(\n measures.filter((item) => item.encoding === 'detail' || !item.encoding).map((item) => item.id),\n )\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Dataset, FoldInfo, Measures } from 'src/types'\nimport { ColorEncoding, ColorIdEncoding, ORIGINAL_DATA } from './constant'\nimport { omit } from 'remeda'\n\n/**\n * 折叠指定的指标\n * @description 合并指定的指标为1个, 无论多少个, 都能转换为1个, 取名为fold, 意为折叠后混合在一起.\n */\nexport const foldMeasures = (\n dataset: Dataset,\n measures: Measures,\n options: {\n measureId: string\n measureName: string\n measureValue: string\n colorMeasureId?: string\n },\n): {\n dataset: Dataset\n foldInfo: FoldInfo\n} => {\n const { measureId, measureName, measureValue, colorMeasureId } = options || {}\n\n const foldInfo: FoldInfo = {\n measureId,\n measureName,\n measureValue,\n colorRange: [0, 1],\n measureRange: [0, 1],\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 if (colorMeasureId) {\n const value = (datum[ORIGINAL_DATA] as Record<string, string | number>)[colorMeasureId]\n datum[ColorEncoding] = value\n datum[ColorIdEncoding] = colorMeasureId\n\n foldInfo.colorRange = [\n Math.min(foldInfo.colorRange[0] || Infinity, Number(value)),\n Math.max(foldInfo.colorRange[1] || -Infinity, Number(value)),\n ]\n }\n\n foldInfo.measureRange = [\n Math.min(foldInfo.measureRange[0] || Infinity, Number(datum[id])),\n Math.max(foldInfo.measureRange[1] || -Infinity, Number(datum[id])),\n ]\n\n foldInfo.foldMap[id] = alias\n result[index++] = datum\n }\n }\n\n return {\n dataset: result,\n foldInfo,\n }\n}\n","import { FoldMeasureId, FoldMeasureName, foldMeasures, FoldMeasureValue } from 'src/dataReshape'\nimport {} from 'src/pipeline/spec/chart/pipes'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, DatasetReshapeInfo, PivotTable } from 'src/types'\n\nexport const reshapePivotTable: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset, chartType } = vseed as PivotTable\n const { dimensions, measures } = advancedVSeed\n const { dataset: newDatasets, foldInfo } = foldMeasures(dataset, findAllMeasures(measures), {\n measureId: FoldMeasureId,\n measureName: FoldMeasureName,\n measureValue: FoldMeasureValue,\n })\n\n const datasetReshapeInfo = [\n {\n id: String(chartType),\n index: 0,\n foldInfo,\n },\n ] as unknown as DatasetReshapeInfo\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: datasetReshapeInfo,\n dimensions,\n measures,\n }\n}\n","import { pick } from 'remeda'\nimport type { AdvancedPipe, Config } from 'src/types'\n\nexport const pivotTableConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const config = pick(vseed, [\n 'backgroundColor',\n 'bodyFontSize',\n 'bodyFontColor',\n 'bodyBackgroundColor',\n 'headerFontSize',\n 'headerFontColor',\n 'headerBackgroundColor',\n 'hoverHeaderBackgroundColor',\n 'hoverHeaderInlineBackgroundColor',\n 'selectedBorderColor',\n 'selectedBackgroundColor',\n ]) as Config['table']\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport { theme } from '../../chart/pipes'\nimport {\n defaultDimensions,\n defaultMeasureName,\n defaultMeasures,\n encodingForPivotTable,\n initAdvancedVSeed,\n pivotTableConfig,\n reshapePivotTable,\n} from '../pipes'\n\nexport const pivotTableAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingForPivotTable,\n reshapePivotTable,\n pivotTableConfig,\n theme,\n]\n","import type { PivotTableConstructorOptions } from '@visactor/vtable'\nimport type { SpecPipe } from 'src/types'\n\nexport const initPivotTable: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { dataset } = advancedVSeed\n const { config } = advancedVSeed\n const { backgroundColor = 'transparent' } = config.pivotTable || {}\n return {\n ...spec,\n records: dataset,\n widthMode: 'standard',\n heightMode: 'autoHeight',\n autoWrapText: true,\n columnResizeMode: 'all',\n columnResizeType: 'column',\n showColumnHeader: true,\n showRowHeader: true,\n select: {\n highlightMode: 'cell',\n headerSelectMode: 'inline',\n },\n hover: {\n highlightMode: 'cross',\n },\n tooltip: {\n isShowOverflowTextTooltip: true,\n },\n corner: {\n titleOnDimension: 'all',\n },\n widthAdaptiveMode: 'all',\n animationAppear: {\n duration: 300,\n delay: 250,\n type: 'one-by-one',\n direction: 'row',\n },\n theme: {\n underlayBackgroundColor: backgroundColor,\n },\n } as PivotTableConstructorOptions\n}\n","import type { PivotTableConstructorOptions } from '@visactor/vtable'\nimport type { Dimensions, SpecPipe } from 'src/types'\n\nexport const pivotColumns: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n const dimensions = advancedVSeed.dimensions as Dimensions\n const columns = dimensions.filter((item) => encoding.column?.includes(item.id))\n\n return {\n ...spec,\n columns: columns.map((item) => {\n return {\n dimensionKey: item.id,\n title: item.alias || item.id,\n width: 'auto',\n }\n }),\n } as PivotTableConstructorOptions\n}\n","import type { Dimensions, SpecPipe } from 'src/types'\n\nexport const pivotRows: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const dimensions = advancedVSeed.dimensions as Dimensions\n const { encoding } = advancedVSeed\n const rows = dimensions.filter((item) => encoding.row?.includes(item.id))\n 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 { BaseTableAPI, FieldFormat } from '@visactor/vtable/es/ts-types'\nimport { isEmpty, isNumber } from 'remeda'\nimport { intl } from 'src/i18n'\nimport { autoFormatter, createFormatter, findMeasureById } from 'src/pipeline/utils'\nimport type { Datum, FoldInfo, Locale, MeasureTree, SpecPipe } from 'src/types'\n\nexport const pivotIndicators: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { locale, measures, datasetReshapeInfo } = advancedVSeed\n const { foldInfo } = datasetReshapeInfo[0]\n\n return {\n ...spec,\n indicatorsAsCol: true,\n indicatorTitle: intl.i18n`指标名称`,\n hideIndicatorName: true,\n indicators: [\n {\n cellType: 'text',\n indicatorKey: foldInfo.measureValue,\n title: 'indicator',\n width: 'auto',\n format: fieldFormat(measures, foldInfo as FoldInfo, locale),\n },\n ] as unknown as PivotChartConstructorOptions['indicators'],\n }\n}\n\nconst fieldFormat =\n (measures: MeasureTree, foldInfo: FoldInfo, locale: Locale): FieldFormat =>\n (value: number | string, col?: number, row?: number, table?: BaseTableAPI) => {\n if (!isNumber(col) || !isNumber(row) || !table) {\n return value\n }\n\n const datum = table.getCellOriginRecord(col, row) as Datum[]\n if (!datum[0]) {\n return value\n }\n const { measureId: foldMeasureId } = foldInfo\n const measureId = datum[0][foldMeasureId] as string\n const node = findMeasureById(measures, measureId)\n if (!node) {\n return value\n }\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, 12, 8, 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 { AdvancedPipe, Datum } from 'src/types'\n\n/**\n * @description 如果用户没有配置 measures, 则基于 dataset 构建默认的 measures\n */\nexport const defaultMeasures: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { measures, dataset } = vseed\n\n if (measures && measures.length > 0) {\n return {\n ...advancedVSeed,\n measures,\n }\n }\n\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return {\n ...advancedVSeed,\n measures: [],\n }\n }\n\n const top100dataset = dataset.slice(0, 100)\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n const defaultMeasures = Object.keys(sample)\n .filter((key) => {\n return top100dataset.some((item) => typeof item[key] === 'number') && !['', null, undefined].includes(key)\n })\n .map((measure) => ({\n id: measure,\n alias: measure,\n }))\n\n return {\n ...advancedVSeed,\n measures: defaultMeasures,\n }\n}\n","import { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Datum, Dimensions, DimensionTree } from 'src/types'\n\nexport const defaultDimensions: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dimensions, dataset } = vseed\n\n if (dimensions && dimensions.length > 0) {\n return {\n ...result,\n dimensions,\n }\n }\n\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return result\n }\n\n const measures = findAllMeasures(advancedVSeed.measures as DimensionTree)\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n const newDimensions = Object.keys(sample)\n .filter(\n (key) =>\n top100dataset.some((item) => typeof item[key] === 'string') &&\n !['', null, undefined].includes(key) &&\n !measures.some((measure) => measure.id === key),\n )\n .map((dim) => ({\n id: dim,\n alias: dim,\n })) as Dimensions\n\n return {\n ...result,\n dimensions: newDimensions,\n }\n}\n","import { MeasureName } from 'src/dataReshape'\nimport { intl } from 'src/i18n'\nimport type { AdvancedPipe, Dimension } from 'src/types'\n\nexport const defaultMeasureName: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n\n const MeaName: Dimension = {\n id: MeasureName,\n alias: intl.i18n`指标名称`,\n }\n\n // 如果没有指标名称维度,则默认添加指标名称维度\n if (!result.dimensions?.some((dim) => dim.id === MeasureName)) {\n result.dimensions?.push(MeaName)\n }\n\n return result\n}\n","import { unique } from 'remeda'\nimport { MeasureName } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\n\n/**\n * @description 折线图、堆叠面积图、百分比面积图\n * 维度未包含任何encoding, 则使用默认映射规则:\n * 1. x: 第一个维度映射至X轴\n * 2. color: 其余所有维度与指标名称, 合并映射至颜色通道, 作为图例展示\n * 指标未包含任何encoding, 则使用默认映射规则:\n * 1. y: 全部指标映射至Y轴\n * 2. tooltip: 全部指标映射至Tooltip\n * \n * 维度映射规则:\n * 1. 用户指定的xAxis维度映射至X轴, 支持多个维度; 若未指定, 则默认将第一个维度映射至X轴\n * 2. 用户指定的color维度映射至颜色通道, 支持多个维度; 若未指定, 则默认将指标名称映射至颜色通道, 作为图例展示\n * 3. 用户指定的`detail`维度映射至Detail通道, 支持多个维度; 若未指定, 则默认将指标名称映射至Detail通道\n * 指标映射规则:\n * 1. 指标未配置encoding, 则默认映射至Y轴;\n * 2. 用户指定的yAxis指标映射至Y轴, 支持多个指标;\n * 3. 所有指标均映射到Tooltip\n */\nexport const encodingForLine: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\n }\n\n if (hasMeasureEncoding) {\n generateMeasureEncoding(measures, encoding)\n } else {\n generateDefaultMeasureEncoding(measures, encoding)\n }\n\n return { ...advancedVSeed, encoding }\n}\n\n/**\n * --------------------维度--------------------\n */\nconst generateDefaultDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.x = uniqueDimIds.slice(0, 1)\n encoding.color = uniqueDimIds.slice(1)\n encoding.tooltip = uniqueDimIds // 展示所有维度\n encoding.detail = [] // 折线图暂不支持细分\n encoding.label = []\n encoding.row = []\n encoding.column = []\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n encoding.x = unique(dimensions.filter((item) => item.encoding === 'xAxis').map((item) => item.id))\n encoding.color = unique(dimensions.filter((item) => item.encoding === 'color').map((item) => item.id))\n encoding.detail = unique(dimensions.filter((item) => item.encoding === 'detail').map((item) => item.id))\n\n if (encoding.x.length === 0) {\n encoding.x = [dimensions[0].id]\n }\n if (encoding.color.length === 0) {\n encoding.color = [MeasureName]\n }\n if (encoding.detail.length === 0) {\n encoding.detail = [MeasureName]\n }\n}\n\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.tooltip = unique(measures.map((item) => item.id))\n encoding.y = unique(measures.filter((item) => item.encoding === 'yAxis' || !item.encoding).map((item) => item.id))\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.tooltip = measures.map((item) => item.id)\n encoding.y = unique(measures.filter((item) => item.encoding === 'yAxis' || !item.encoding).map((item) => item.id))\n const color = unique(measures.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (color.length > 0) {\n encoding.color = color\n }\n}\n","import type { AdvancedVSeed, VSeed } from 'src/types'\n\n/**\n * @description 检查是否为指标树, 指标树深度大于1. 如果存在一个指标为组, 即有children配置, 则认为是指标树.\n * @param vseed vseed\n * @returns\n */\nexport const isMeasureTreeWithChildren = (vseed: VSeed | AdvancedVSeed) => {\n const { measures } = vseed\n\n if (!measures) {\n return false\n }\n\n return measures.some((measure) => 'children' in measure)\n}\n\n/**\n * @description 检查是否为指标树, 指标树存在parentId. 如果存在一个指标有parentId, 则认为是指标树.\n * @param vseed vseed\n * @returns\n */\nexport const isMeasureTreeWithParentId = (vseed: VSeed | AdvancedVSeed) => {\n const { measures } = vseed\n\n if (!measures) {\n return false\n }\n\n return measures.some((measure) => 'parentId' in measure)\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, Measure } from 'src/types'\nimport { measureDepth } from './measures'\nimport { isMeasureTreeWithChildren, isMeasureTreeWithParentId } from '../advanced/chart/pipes/measures/utils'\nimport { unique } from 'remeda'\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 (isMeasureTreeWithParentId(vseed)) {\n const parentIds = vseed.measures?.map((measure: Measure) => measure.parentId)\n return parentIds && unique(parentIds).length > 1\n }\n\n if (vseed.chartType === 'dualAxis' || vseed.chartType === 'scatter') {\n const { dimensions = [] } = vseed as {\n dimensions: Dimensions\n }\n const hasRowOrColumnDimension =\n dimensions && dimensions.some((dimension) => dimension.encoding === 'row' || dimension.encoding === 'column')\n\n if (hasRowOrColumnDimension) {\n return true\n }\n\n if (vseed.chartType === 'scatter') {\n if (isMeasureTreeWithChildren(vseed)) {\n const depth = measureDepth(vseed.measures)\n return depth === 3\n }\n\n if (vseed.scatterMeasures && vseed.scatterMeasures.length > 1) {\n return true\n }\n return false\n }\n if (vseed.chartType === 'dualAxis') {\n if (isMeasureTreeWithChildren(vseed)) {\n const depth = measureDepth(vseed.measures)\n return depth === 3\n }\n\n if (vseed.dualMeasures && vseed.dualMeasures.length > 1) {\n return true\n }\n }\n\n return false\n }\n\n const { measures = [], dimensions = [] } = vseed as {\n measures: DimensionTree\n dimensions: Dimensions\n }\n\n const hasRowOrColumnDimension =\n dimensions && dimensions.some((dimension) => dimension.encoding === 'row' || dimension.encoding === 'column')\n\n const hasMeasureGroup = measures && measures.some((measure: DimensionGroup) => measure && measure.children)\n\n return hasRowOrColumnDimension || hasMeasureGroup\n}\n","import type { AdvancedPipe, Column, MeasureGroup, Measures, MeasureTree } from 'src/types'\nimport { isMeasureTreeWithChildren, isMeasureTreeWithParentId } from './utils'\nimport { isPivotChart } from 'src/pipeline/utils'\n\nexport const buildMeasures: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context as {\n vseed: Column\n }\n // 带Children的指标树, 不进行任何处理\n if (isMeasureTreeWithChildren(vseed)) {\n advancedVSeed.measures = vseed.measures\n return advancedVSeed\n }\n // 带parentId的指标树, 转换为带children的指标树\n if (isMeasureTreeWithParentId(vseed)) {\n advancedVSeed.measures = generateMeasuresByParentId(vseed.measures as Measures)\n return advancedVSeed\n }\n\n /**\n * 透视图表, 自动生成指标树\n */\n if (isPivotChart(vseed)) {\n advancedVSeed.measures = basicMeasuresToMeasureTree(advancedVSeed.measures as Measures)\n }\n\n return advancedVSeed\n}\n\nconst generateMeasuresByParentId = (measures: Measures): MeasureTree => {\n const measureTree: MeasureGroup[] = []\n\n measures.forEach((measure) => {\n if (!measure.parentId) {\n return\n }\n\n const parent = measureTree.find((item) => item.id === measure.parentId)\n\n if (parent && 'children' in parent) {\n parent.children = parent.children || []\n parent.children.push(measure)\n } else {\n measureTree.push({\n id: measure.parentId,\n children: [measure],\n })\n }\n })\n\n return measureTree\n}\n\nconst basicMeasuresToMeasureTree = (measures: Measures): MeasureTree => {\n const id = measures.map((item) => item.id).join('-')\n const alias = measures.map((item) => item.alias || item.id).join('-')\n return [\n {\n id,\n alias,\n children: measures,\n },\n ]\n}\n","import type { AdvancedPipe, AdvancedPipeline, AdvancedPipelineContext, AdvancedVSeed } from 'src/types'\nimport { execPipeline, isPivotChart } from 'src/pipeline/utils'\n\nexport const pivotAdapter = (pipeline: AdvancedPipeline, pivotPipeline: AdvancedPipeline): AdvancedPipe => {\n return (advancedVSeed, context) => {\n const { vseed } = context\n const usePivotChart = isPivotChart(vseed)\n\n if (usePivotChart) {\n return execPipeline<AdvancedVSeed, AdvancedPipelineContext>(pivotPipeline, context, advancedVSeed)\n }\n\n return execPipeline<AdvancedVSeed, AdvancedPipelineContext>(pipeline, context, advancedVSeed)\n }\n}\n","import type { Dataset, Datum, Dimension, Encoding, UnfoldInfo } from 'src/types'\nimport { AngleEncoding, XEncoding, YEncoding, ColorEncoding, DetailEncoding, ColorIdEncoding } from './constant'\n\n/**\n * @description 展开并合并视觉通道的维度, 在foldMeasures后合并维度, 所以不需要进行笛卡尔积\n * @param dataset 原始数据集\n * @param dimensions 维度\n * @param encoding 编码\n * @param options\n * @returns\n */\nexport const unfoldDimensions = (\n dataset: Dataset,\n dimensions: Dimension[],\n encoding: Encoding,\n options: {\n foldMeasureId: string\n separator: string\n colorItemAsId: boolean\n },\n): {\n dataset: Dataset\n unfoldInfo: UnfoldInfo\n} => {\n const { foldMeasureId, separator, colorItemAsId } = options\n\n const unfoldInfo: UnfoldInfo = {\n encodingAngle: AngleEncoding,\n encodingX: XEncoding,\n encodingY: YEncoding,\n encodingDetail: DetailEncoding,\n encodingColor: ColorEncoding,\n encodingColorId: ColorIdEncoding,\n\n colorItems: [],\n colorIdMap: {},\n }\n\n // 每个通道对应的维度\n const { color, x, y, detail, angle } = encoding\n const angleDimensions = angle ? dimensions.filter((dim) => angle.includes(dim.id)) : []\n const xDimensions = x ? dimensions.filter((dim) => x.includes(dim.id)) : []\n const yDimensions = y ? dimensions.filter((dim) => y.includes(dim.id)) : []\n const colorDimensions = color ? dimensions.filter((dim) => color.includes(dim.id)) : []\n const detailDimensions = detail ? dimensions.filter((dim) => detail.includes(dim.id)) : []\n\n // 离散图例项\n const colorItems = new Set<string>()\n const colorIdMap: Record<string, string> = {}\n\n // 遍历数据集, 按通道合并维度\n for (let i = 0; i < dataset.length; i++) {\n // 应用编码至Datum上\n const datum = dataset[i]\n\n /**\n * !important 这是全仓库, 最最最重要的五行代码, 贯穿VSeed整个生命周期, 是化繁为简的绝对核心\n * 1. 点睛之笔: 呼应foldMeasures, 此时此刻的datum一定是单点数据, 维度合并不可能造成任何冲突.\n * 2. 数据即通道\n * 3. 利用需要合并的维度, 直接进行join, 即可生成新的维度, 与指标彻底解耦;\n * 4. 以下通道均在一次遍历中完成, 不存在性能问题\n * 5. 以下通道均可放入多个维度\n */\n applyEncoding(AngleEncoding, angleDimensions, datum, separator)\n applyEncoding(XEncoding, xDimensions, datum, separator)\n applyEncoding(YEncoding, yDimensions, datum, separator)\n applyEncoding(ColorEncoding, colorDimensions, datum, separator)\n applyEncoding(DetailEncoding, detailDimensions, datum, separator)\n\n // 处理离散的颜色图例\n if (!colorDimensions.length || !datum[ColorEncoding]) {\n // 无颜色通道, 则跳过\n continue\n }\n const measureId = String(datum[foldMeasureId])\n const colorItem = String(datum[ColorEncoding])\n const colorId = colorItemAsId ? colorItem : measureId ? [colorItem, measureId].join(separator) : colorItem\n datum[ColorIdEncoding] = colorId\n colorIdMap[colorId] = colorItem\n colorItems.add(colorId)\n }\n\n unfoldInfo.colorItems = Array.from(colorItems)\n unfoldInfo.colorIdMap = colorIdMap\n\n return {\n dataset,\n unfoldInfo,\n }\n}\n\n/**\n * @description 应用编码至数据中, 此方法会原地修改数据\n * @param encoding 编码\n * @param dimensions 维度\n * @param datum 数据\n * @param separator 分隔符\n * @returns undefined\n */\nconst applyEncoding = (encoding: string, dimensions: Dimension[], datum: Datum, separator: string) => {\n if (encoding && dimensions.length) {\n datum[encoding] = dimensions.map((dim) => String(datum[dim.id])).join(separator)\n }\n}\n","import type { Dataset, Dimension, Encoding, FoldInfo, Measure, Measures, UnfoldInfo } from 'src/types'\nimport { foldMeasures } from './foldMeasures'\nimport { FoldMeasureId, FoldMeasureName, FoldMeasureValue, Separator } from './constant'\nimport { unfoldDimensions } from './unfoldDimensions'\n\nexport const dataReshapeByEncoding = (\n dataset: Dataset,\n dimensions: Dimension[],\n measures: Measure[],\n encoding: Encoding,\n options?: {\n foldMeasureId?: string\n foldMeasureName?: string\n foldMeasureValue?: string\n colorItemAsId?: boolean\n colorMeasureId?: string\n },\n): {\n dataset: Dataset\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n} => {\n const {\n foldMeasureId = FoldMeasureId,\n foldMeasureName = FoldMeasureName,\n foldMeasureValue = FoldMeasureValue,\n colorItemAsId = false,\n colorMeasureId,\n } = options || {}\n\n // 合并所有指标为1个指标\n const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures as Measures, {\n measureId: foldMeasureId,\n measureName: foldMeasureName,\n measureValue: foldMeasureValue,\n colorMeasureId,\n })\n\n // 展开指定的维度为指标\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dimensions, encoding, {\n foldMeasureId,\n separator: Separator,\n colorItemAsId,\n })\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n}\n","import { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedVSeed, SpecPipe } from 'src/types'\n\nexport const colorAdapter = (ordinalPipe: SpecPipe, linearPipe: SpecPipe): SpecPipe => {\n return (spec, context) => {\n const { advancedVSeed } = context\n if (isLinearColor(advancedVSeed)) {\n return linearPipe(spec, context)\n }\n return ordinalPipe(spec, context)\n }\n}\n\nexport const isLinearColor = <T extends AdvancedVSeed>(advancedVSeed: T) => {\n const { encoding, measures } = advancedVSeed\n const measureIdList = findAllMeasures(measures).map((measure) => measure.id)\n const { color } = encoding\n return color?.length === 1 && measureIdList.includes(color[0])\n}\n\nexport const getColorMeasureId = <T extends AdvancedVSeed>(advancedVSeed: T): string | undefined => {\n if (isLinearColor(advancedVSeed)) {\n const { encoding } = advancedVSeed\n const { color } = encoding\n return color?.[0]\n }\n return undefined\n}\n","import { uniqueBy } from 'remeda'\nimport { dataReshapeByEncoding } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed, ColumnParallel, Dimension, Encoding } from 'src/types'\n\nexport const reshapeWithEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset, chartType } = vseed as ColumnParallel\n const { dimensions, measures, encoding } = advancedVSeed\n\n if (!measures || !dimensions || !dataset || !encoding) {\n return result\n }\n\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n\n const hasEncoding = (vseed.dimensions || []).some((item: Dimension) => item.encoding)\n\n const {\n dataset: newDatasets,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(findAllMeasures(measures), (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: hasEncoding,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\n },\n )\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: [\n {\n id: String(chartType),\n index: 0,\n foldInfo,\n unfoldInfo,\n },\n ],\n dimensions,\n measures,\n }\n}\n","import { uniqueBy } from 'remeda'\nimport { dataReshapeByEncoding, FoldMeasureValue } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Dimension,\n Encoding,\n MeasureGroup,\n} from 'src/types'\n\nexport const pivotReshapeWithEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed as ColumnParallel\n const { dimensions, measures, encoding } = advancedVSeed\n if (!measures || !dimensions || !dataset || !encoding) {\n return result\n }\n\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\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 hasEncoding = (vseed.dimensions || []).some((item: Dimension) => item.encoding)\n\n const datasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n measureGroups.forEach((measureGroup, index) => {\n const measures = measureGroup.children\n if (!measures) {\n return\n }\n const groupId = measureGroup.id\n const {\n dataset: newSubDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(measures, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: hasEncoding,\n foldMeasureValue: `${FoldMeasureValue}${groupId}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\n },\n )\n\n const reshapeInfo = {\n id: groupId,\n index,\n foldInfo,\n unfoldInfo,\n }\n datasets.push(newSubDataset)\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n return {\n ...result,\n dataset: datasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n","import { sort, unique } from 'remeda'\nimport type { AdvancedPipe, Dataset, DatasetReshapeInfo, Datum, Line, Sort } from 'src/types'\n\nexport const sortXBandAxis: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { sort: sortAxis } = vseed as Line\n const { datasetReshapeInfo, dataset } = advancedVSeed as { datasetReshapeInfo: DatasetReshapeInfo; dataset: Dataset }\n const { unfoldInfo } = datasetReshapeInfo[0]\n const xField = unfoldInfo.encodingX\n if (!sortAxis || !xField) {\n return advancedVSeed\n }\n if (!result.analysis) result.analysis = {}\n if (!result.analysis.orderMapping) result.analysis.orderMapping = {}\n\n const axisOrderResult = calcOrder(sortAxis, xField, dataset.flat(2))\n\n result.analysis.orderMapping[xField] = axisOrderResult\n\n return result\n}\n\nexport const calcOrder = (sortConfig: Sort, id: string, dataset: Dataset): string[] => {\n if (sortConfig.customOrder) {\n return sortConfig.customOrder\n }\n\n const order = sortConfig.order || 'asc'\n const orderBy = sortConfig.orderBy\n\n const res = sort(dataset, (a, b) => {\n const aValue = a[orderBy || id] as string | number\n const bValue = b[orderBy || id] as string | number\n\n if (order === 'asc') {\n if (aValue < bValue) {\n return -1\n }\n if (aValue > bValue) {\n return 1\n }\n return 0\n }\n if (aValue > bValue) {\n return -1\n }\n if (aValue < bValue) {\n return 1\n }\n return 0\n })\n\n return unique(res.map((item: Datum) => item[id] as string))\n}\n","import { sort, unique } from 'remeda'\nimport type { AdvancedPipe, Dataset, Datum, Line, SortLegend } from 'src/types'\n\nexport const sortLegend: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { sortLegend } = vseed as Line\n const { datasetReshapeInfo, dataset } = advancedVSeed\n const colorId = datasetReshapeInfo?.[0]?.unfoldInfo?.encodingColorId\n const colorIdMap = datasetReshapeInfo?.[0]?.unfoldInfo?.colorIdMap\n const colorItems = datasetReshapeInfo?.[0]?.unfoldInfo?.colorItems\n if (!sortLegend || !colorId || !colorIdMap || !colorItems) {\n return advancedVSeed\n }\n\n if (!result.analysis) result.analysis = {}\n if (!result.analysis.orderMapping) result.analysis.orderMapping = {}\n\n if (sortLegend.customOrder) {\n const nameMap = Object.keys(colorIdMap).reduce<Record<string, string>>((pre, cur) => {\n pre[colorIdMap[cur]] = cur\n return pre\n }, {})\n\n // 先根据名称匹配, 若名称不存在, 则根据id匹配, 从而兼容名称和id的两种情况\n const orderRes = sortLegend.customOrder.map((itemNameOrId) =>\n nameMap[itemNameOrId] ? nameMap[itemNameOrId] : itemNameOrId,\n )\n result.analysis.orderMapping[colorId] = orderRes\n return result\n }\n\n const orderRes = calcOrder(sortLegend, colorId, dataset?.flat(2) || [])\n result.analysis.orderMapping[colorId] = orderRes\n\n return result\n}\n\nconst calcOrder = (sortConfig: 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 initAdvancedVSeed,\n theme,\n pivotAdapter,\n lineConfig,\n annotation,\n markStyle,\n sortXBandAxis,\n sortLegend,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n encodingForLine,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n} from '../pipes'\n\nexport const lineAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingForLine,\n buildMeasures,\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n sortXBandAxis,\n sortLegend,\n lineConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from '../color/colorAdapter'\n\nexport const initLine: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { foldInfo, unfoldInfo } = datasetReshapeInfo[0]\n\n result.type = 'line'\n result.direction = 'vertical'\n result.xField = unfoldInfo.encodingX\n result.yField = foldInfo.measureValue\n result.seriesField = isLinearColor(advancedVSeed) ? unfoldInfo.encodingDetail : unfoldInfo.encodingColorId\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport type { Color, SpecPipe } from 'src/types'\n\nexport const color: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo, chartType } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n const baseConfig = advancedVSeed.config[chartType] as { color: Color }\n\n if (!baseConfig || !baseConfig.color) {\n return result\n }\n\n const colorItems = unfoldInfo.colorItems\n const colorIdMap = unfoldInfo.colorIdMap\n\n const { color } = baseConfig\n const { colorScheme, colorMapping } = color\n\n result.color = {\n type: 'ordinal',\n domain: colorItems,\n range: colorScheme,\n specified: createSpecifiedForColorMapping(colorMapping, colorIdMap, colorItems),\n } as ILineChartSpec['color']\n return result\n}\n\nexport const createSpecifiedForColorMapping = (\n colorMapping?: Record<string, string>,\n colorIdMap?: Record<string, string>,\n colorItems?: string[],\n) => {\n if (!colorMapping || !colorIdMap || !colorItems) {\n return undefined\n }\n\n const matchedList: string[] = []\n\n // 名称越长优先级越高: 按名称长度降, 优先匹配名称长的, 避免一个短的名称匹配到了超多个长的\n const colors = Object.entries(colorMapping).sort((a, b) => b[0].length - a[0].length)\n // 准确匹配\n const accurateMap = colors.reduce(\n (prev, cur) => {\n const name = cur[0]\n const colorValue = cur[1]\n\n const accurateMatchedList = Object.entries(colorIdMap).filter(([colorKey, colorAlias]) => {\n return colorKey === name || colorAlias === name\n })\n accurateMatchedList.forEach((item) => {\n prev[item[0]] = colorValue\n matchedList.push(name)\n })\n\n return prev\n },\n {} as Record<string, string>,\n )\n\n // 模糊匹配\n const fuzzyMap = colors.reduce(\n (prev, cur) => {\n const name = cur[0]\n const colorValue = cur[1]\n if (matchedList.includes(name)) {\n return prev\n }\n\n const fuzzyMatchedList = Object.entries(colorIdMap).filter(([colorKey, colorAlias]) => {\n return colorKey.includes(name) || colorAlias.includes(name)\n })\n fuzzyMatchedList.forEach((item) => {\n // 已经匹配有值, 则不重复匹配\n if (prev[item[0]]) {\n return\n }\n prev[item[0]] = colorValue\n })\n\n return prev\n },\n {} as Record<string, string>,\n )\n\n // 合并, 准确匹配的优先级高\n return {\n ...fuzzyMap,\n ...accurateMap,\n }\n}\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport type { Color, SpecPipe } from 'src/types'\n\nexport const linearColor: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo, chartType } = advancedVSeed\n const { unfoldInfo, id } = datasetReshapeInfo[0]\n const baseConfig = advancedVSeed.config[chartType] as { color: Color }\n\n if (!baseConfig || !baseConfig.color) {\n return result\n }\n\n const { color } = baseConfig\n const { colorScheme, linearColorScheme } = color\n\n result.color = {\n type: 'linear',\n range: linearColorScheme || colorScheme || [],\n domain: [\n {\n dataId: id,\n fields: [unfoldInfo.encodingColor],\n },\n ],\n }\n\n return result\n}\n","import type { ISpec } from '@visactor/vchart'\nimport type { BackgroundColor, SpecPipe } from 'src/types'\n\nexport const backgroundColor: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed } = context\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { backgroundColor: BackgroundColor }\n\n const { backgroundColor } = baseConfig\n\n return {\n ...result,\n background: backgroundColor,\n }\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { isPivotChart } from 'src/pipeline/utils'\nimport type { SpecPipe } from 'src/types'\n\nexport const datasetXY: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { analysis, datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n const orderMapping = analysis?.orderMapping || {}\n const angle = unfoldInfo.encodingAngle\n const x = unfoldInfo.encodingX\n const colorId = unfoldInfo.encodingColorId\n const id = datasetReshapeInfo[0].id\n\n const fields: Record<string, object> = {}\n if (angle) {\n fields[angle] = {\n sortIndex: 0,\n }\n }\n if (x) {\n const order = orderMapping[x]\n if (order) {\n fields[x] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[x] = {\n sortIndex: 0,\n }\n }\n }\n\n if (colorId) {\n const order = orderMapping[colorId]\n if (order) {\n fields[colorId] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[colorId] = {\n sortIndex: 0,\n }\n }\n }\n\n return {\n ...spec,\n data: {\n id,\n // 透视表不使用 dataValues\n values: isPivotChart(vseed) ? undefined : advancedVSeed.dataset,\n fields: fields,\n },\n } as ISpec\n}\n","import type { ILineSeriesSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const progressive: SpecPipe = (spec, 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\n// 双轴图 柱图 ZIndex\nexport const DUAL_AXIS_CHART_COLUMN_Z_INDEX = 1000\n// 双轴图 非柱图 ZIndex\nexport const DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX = 1001\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 { 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 { 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) => {\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 { Legend, SpecPipe } from 'src/types'\n\nexport const colorLegend: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { datasetReshapeInfo, chartType } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n const baseConfig = advancedVSeed.config[chartType] as { legend: Legend }\n if (!baseConfig || !baseConfig.legend) {\n return result\n }\n\n const { legend } = baseConfig\n const { enable, position = 'bottom', labelFontColor, labelFontSize = 12, labelFontWeight } = legend || {}\n\n const orient = ['bottom', 'bottomLeft', 'bottomRight', 'bl', 'br'].includes(position)\n ? 'bottom'\n : ['top', 'topLeft', 'topRight', 'tl', 'tr'].includes(position)\n ? 'top'\n : ['left', 'leftTop', 'leftBottom', 'lt', 'lb'].includes(position)\n ? 'left'\n : 'right'\n\n const legendPosition = ['topLeft', 'bottomLeft', 'leftTop', 'rightTop', 'lt', 'rt', 'tl', 'bl'].includes(position)\n ? 'start'\n : ['topRight', 'bottomRight', 'leftBottom', 'rightBottom', 'lb', 'rb', 'rt', 'br'].includes(position)\n ? 'end'\n : 'middle'\n\n result.legends = {\n type: 'color',\n visible: enable,\n orient,\n position: legendPosition,\n padding: 0,\n field: unfoldInfo.encodingColor,\n maxWidth: '30%',\n startText: {\n visible: true,\n style: {\n fill: labelFontColor,\n fontSize: labelFontSize,\n fontWeight: labelFontWeight,\n },\n },\n endText: {\n visible: true,\n style: {\n fill: labelFontColor,\n fontSize: labelFontSize,\n fontWeight: labelFontWeight,\n },\n },\n }\n return result\n}\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from './colorAdapter'\n\nexport const colorPointStyleFill = (stylePipe: SpecPipe): SpecPipe => {\n return (spec, context) => {\n const result = stylePipe(spec, context) as ILineChartSpec\n\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed)) {\n if (result?.point?.style) {\n result.point.style.fill = {\n field: unfoldInfo.encodingColor,\n scale: 'color',\n }\n }\n }\n\n return result\n }\n}\n","import type { Datum } from 'src/types'\nimport type {\n DimensionSelector,\n MeasureSelector,\n PartialDatumSelector,\n Selector,\n Selectors,\n ValueSelector,\n} from '../types/dataSelector'\nimport { omit } from 'remeda'\n\nexport const selector = (vchartDatum: Datum, selector: Selector | Selectors | undefined | null) => {\n // 无有效选择器, 则认为全部匹配成功\n if (!selector) {\n return true\n }\n\n const selectorMode = 'And'\n\n // 过滤掉 vchart 相关字段\n const vchartKeys = Object.keys(vchartDatum).filter((k) => k.toLocaleLowerCase().startsWith('__vchart'))\n const datum = omit(vchartDatum, vchartKeys) as Datum\n\n // 统一处理选择器为数组\n const selectors = (Array.isArray(selector) ? selector : [selector]) as Selectors\n\n return selectors[selectorMode === 'And' ? 'every' : 'some']((selector) => {\n // 1. 字符串或数字\n if (isValueSelector(selector)) {\n if (Object.values(datum).find((v) => v === selector)) {\n return true\n }\n }\n\n // 2. 指标选择器\n else if (isMeasureSelector(selector)) {\n const op = selector.operator || selector.op\n const selectorValueArr = Array.isArray(selector.value) ? selector.value : [selector.value]\n\n switch (op) {\n case '=':\n 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 point: {\n style: {},\n },\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 {\n pointBorderColor,\n pointBorderStyle,\n pointBorderWidth = 1,\n pointColor,\n pointColorOpacity,\n pointSize,\n pointVisible = true,\n } = style\n\n const lineDash = pointBorderStyle === 'dashed' ? [5, 2] : pointBorderStyle === 'dotted' ? [2, 5] : [0, 0]\n return {\n ...result,\n [`custom${index + 1}`]: {\n // 优先级: 后者覆盖前者\n level: index + 1,\n filter: (datum: Datum) => {\n if (selector(datum, style.selector)) {\n return true\n }\n return false\n },\n style: {\n visible: pointVisible,\n size: pointSize,\n fill: pointColor,\n fillOpacity: pointColorOpacity,\n innerBorder: {\n stroke: pointBorderColor,\n lineWidth: pointBorderWidth,\n distance: (pointBorderWidth || 0) / 2,\n lineDash: lineDash,\n },\n },\n },\n }\n }, {})\n\n return {\n ...result,\n point: {\n ...result.point,\n state: {\n ...customMap,\n },\n },\n }\n}\n","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 outerBorder: {\n lineWidth: 4,\n strokeOpacity: 0.25,\n distance: 2,\n },\n },\n },\n },\n } as IScatterChartSpec\n return result\n}\n\nexport const pointStateHover: SpecPipe = (spec, context) => {\n const point = (spec as IScatterChartSpec).point || {}\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n const result = {\n ...spec,\n point: {\n ...point,\n state: {\n ...(point.state || {}),\n hover: {\n scaleX: 1.4,\n scaleY: 1.4,\n stroke: (datum, context: ISeriesMarkAttributeContext) => {\n const field = unfoldInfo.encodingColorId\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 { ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from './colorAdapter'\n\nexport const colorLineStyleFill = (stylePipe: SpecPipe): SpecPipe => {\n return (spec, context) => {\n const result = stylePipe(spec, context) as ILineChartSpec\n\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed)) {\n if (result?.line?.style) {\n result.line.style.stroke = {\n field: unfoldInfo.encodingColor,\n scale: 'color',\n }\n }\n }\n\n return result\n }\n}\n","import 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, datasetReshapeInfo, dataset } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n const { lineStyle } = markStyle\n const result = {\n ...spec,\n line: {\n style: {},\n },\n } as IAreaChartSpec\n if (!lineStyle) {\n return result\n }\n\n const lineStyles = (Array.isArray(lineStyle) ? lineStyle : [lineStyle]) as LineStyle[]\n\n const colorId = unfoldInfo.encodingColorId\n const lineGroups = groupBy(dataset, (d) => d[colorId ?? ''] as string)\n\n const customMap = lineStyles.reduce<object>((result, style, index) => {\n const { lineColor, lineColorOpacity, lineSmooth, lineStyle, lineWidth = 2, lineVisible = true } = style\n\n const dashSegment = lineWidth * 2\n const dashGap = lineWidth\n\n const lineDash =\n lineStyle === 'dashed' ? [dashSegment, dashSegment] : lineStyle === 'dotted' ? [dashGap / 2, dashGap * 2] : [0, 0]\n\n const curveType = 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[colorId ?? ''] 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 visible: lineVisible,\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 ...result.line,\n state: {\n ...customMap,\n },\n },\n }\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 { 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 { encodingColor: colorName } = 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 || colorName] 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[colorName] 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 { 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, datasetReshapeInfo } = advancedVSeed\n\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\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 } = annotationVerticalLine\n\n const dataset = advancedVSeed.dataset.flat()\n\n const generateOneMarkLine = (x: number | string) => ({\n x: x as string,\n zIndex: ANNOTATION_Z_INDEX,\n line: {\n style: {\n visible: lineVisible,\n stroke: lineColor,\n lineStyle: lineStyle,\n lineWidth: lineWidth,\n lineDash: lineStyle === 'dashed' ? [5, 2] : lineStyle === 'dotted' ? [2, 5] : [0],\n },\n },\n label: {\n text: text,\n position: positionMap[textPosition || 'insideEnd'],\n style: {\n 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 if (datum[unfoldInfo.encodingX]) {\n return generateOneMarkLine(datum[unfoldInfo.encodingX] as string)\n }\n if (datum[foldInfo.measureValue]) {\n return generateOneMarkLine(datum[foldInfo.measureValue] as string)\n }\n return {}\n })\n }) as IMarkLineSpec[]\n\n const specMarkLine = ((spec as ILineChartSpec).markLine as IMarkLineSpec[]) || []\n const newMarkLine = [...specMarkLine, ...(markLine || [])]\n\n return {\n ...spec,\n markLine: newMarkLine,\n }\n}\n","import type { ILineChartSpec, IMarkLineSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { SpecPipe } from 'src/types'\nimport { isArray, isNumber, isString } from 'remeda'\nimport { ANNOTATION_Z_INDEX } from '../../../../utils/constant'\n\nexport const annotationHorizontalLine: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { annotation, datasetReshapeInfo } = advancedVSeed\n const { foldInfo, unfoldInfo } = datasetReshapeInfo[0]\n\n if (!annotation || !annotation.annotationHorizontalLine) {\n return spec\n }\n\n const { annotationHorizontalLine } = annotation\n const annotationHorizontalLineList = Array.isArray(annotationHorizontalLine)\n ? annotationHorizontalLine\n : [annotationHorizontalLine]\n\n const positionMap = {\n outsideStart: 'start',\n outsideEnd: 'end',\n outsideMiddle: 'middle',\n insideStart: 'insideStartTop',\n insideMiddle: 'insideMiddleTop',\n insideEnd: 'insideEndTop',\n }\n\n const markLine = annotationHorizontalLineList.flatMap((annotationHorizontalLine) => {\n const {\n selector: selectorPoint,\n yValue,\n text = '',\n textPosition = 'insideEnd',\n textColor = '#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 } = annotationHorizontalLine\n\n const dataset = advancedVSeed.dataset.flat()\n\n const generateOneMarkLine = (y: string | number) => {\n return {\n y,\n zIndex: ANNOTATION_Z_INDEX,\n line: {\n style: {\n visible: lineVisible,\n stroke: lineColor,\n 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 if ((!selectorPoint && isArray(yValue)) || isString(yValue) || isNumber(yValue)) {\n const yValueArr = Array.isArray(yValue) ? yValue : [yValue]\n return yValueArr.map(generateOneMarkLine)\n }\n\n const selectedData = selectorPoint ? dataset.filter((datum) => selector(datum, selectorPoint)) : []\n\n return selectedData.map((datum) => {\n if (datum[unfoldInfo.encodingY]) {\n return generateOneMarkLine(datum[unfoldInfo.encodingY] as string)\n }\n if (datum[foldInfo.measureValue]) {\n return generateOneMarkLine(datum[foldInfo.measureValue] as string)\n }\n return {}\n })\n }) as IMarkLineSpec[]\n const specMarkLine = ((spec as ILineChartSpec).markLine as IMarkLineSpec[]) || []\n const newMarkLine = [...specMarkLine, ...(markLine || [])]\n return {\n ...spec,\n markLine: newMarkLine,\n }\n}\n","import type { ICartesianSeries, ILineChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, SpecPipe } from 'src/types'\nimport { isSubset } from './utils'\nimport { ANNOTATION_Z_INDEX } from '../../../../utils/constant'\n\nexport const annotationArea: SpecPipe = (spec, context) => {\n const { advancedVSeed } = 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 } = annotationArea\n\n const dataset = advancedVSeed.dataset.flat()\n const selectedData = selectorPoint ? dataset.filter((datum) => selector(datum, selectorPoint)) : []\n\n const labelPosition = positionMap[textPosition || 'top']\n const isBottom = labelPosition.toLocaleLowerCase().includes('bottom')\n\n return {\n zIndex: ANNOTATION_Z_INDEX,\n regionRelative: true,\n positions: (data: Datum[], context: ICartesianSeries) => {\n const positionData = data.filter((item) => selectedData.some((datum) => isSubset(datum, item)))\n const xyList = positionData.map((datum) => context.dataToPosition(datum) as { x: number; y: number })\n\n const yAxisHelper = context.getYAxisHelper() as unknown as {\n getBandwidth: (depth?: number) => number\n getScale: () => {\n range: () => number[]\n }\n }\n const xAxisHelper = context.getXAxisHelper() as unknown as {\n getBandwidth: (depth?: number) => number\n getScale: () => {\n range: () => number[]\n }\n }\n\n if (typeof xAxisHelper?.getBandwidth === 'function') {\n const yScale = yAxisHelper.getScale()\n\n const minX = Math.min(...xyList.map((item) => item.x)) - (outerPadding || 4)\n const maxX = Math.max(...xyList.map((item) => item.x)) + (outerPadding || 4)\n const minY = Math.min(...yScale.range())\n const maxY = Math.max(...yScale.range())\n return [\n // 左上\n {\n x: minX,\n y: minY,\n },\n // 右上\n {\n x: maxX,\n y: minY,\n },\n // 右下\n {\n x: maxX,\n y: maxY,\n },\n // 左下\n {\n x: minX,\n y: maxY,\n },\n ]\n }\n\n if (typeof yAxisHelper?.getBandwidth === 'function') {\n const xScale = xAxisHelper.getScale()\n\n const minY = Math.min(...xyList.map((item) => item.y)) - (outerPadding || 4)\n const maxY = Math.max(...xyList.map((item) => item.y)) + (outerPadding || 4)\n const minX = Math.min(...xScale.range())\n const maxX = Math.max(...xScale.range())\n\n return [\n // 左上\n {\n x: minX,\n y: minY,\n },\n // 右上\n {\n x: maxX,\n y: minY,\n },\n // 右下\n {\n x: maxX,\n y: maxY,\n },\n // 左下\n {\n x: minX,\n y: maxY,\n },\n ]\n }\n\n return []\n },\n label: {\n position: labelPosition,\n visible: true,\n text: text,\n style: {\n dy: isBottom ? -(textFontSize || 12) * 2 : 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 { Dataset, 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, dataset } = advancedVSeed\n\n const colorItems = unique(datasetReshapeInfo.flatMap((d) => d.unfoldInfo.colorItems))\n\n const indicators = datasetReshapeInfo.map((reshapeInfo, index) => {\n const measure = measures?.find((d) => d.id === reshapeInfo.id)\n const newDataset = dataset[index] as Dataset\n const newDatasetReshapeInfo = [\n {\n ...reshapeInfo,\n unfoldInfo: { ...reshapeInfo.unfoldInfo, colorItems },\n },\n ]\n const newContext: SpecPipelineContext = {\n ...context,\n advancedVSeed: {\n ...advancedVSeed,\n datasetReshapeInfo: newDatasetReshapeInfo,\n dataset: newDataset,\n },\n }\n\n const chartSpec = execPipeline(chartPipeline, newContext, {})\n return {\n indicatorKey: reshapeInfo.id,\n title: measure?.alias,\n cellType: 'chart',\n chartModule: 'vchart',\n chartSpec: chartSpec,\n style: {\n padding: [1, 1, 0, 1],\n },\n }\n })\n\n return {\n ...result,\n indicators: indicators,\n } as 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.encoding === 'row')\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.encoding === 'column')\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 { 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'\nimport { createSpecifiedForColorMapping } from '../color/color'\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, colorMapping } = color\n\n const colorSpecified = createSpecifiedForColorMapping(colorMapping, colorIdMap, colorItems)\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 const color = colorSpecified?.[d] ?? colorScheme?.[index % colorScheme.length]\n return {\n label: d,\n shape: {\n outerBorder: border\n ? {\n stroke: color,\n distance: 3,\n lineWidth: 1,\n }\n : undefined,\n fill: color,\n },\n }\n }),\n\n item: {\n focus: true,\n maxWidth: '30%',\n focusIconStyle: {\n size: labelFontSize + 2,\n fill: labelFontColor,\n fontWeight: labelFontWeight,\n },\n shape: {\n space: border ? 6 : 4,\n style: {\n symbolType: shapeType,\n size: border ? 8 : 10,\n },\n },\n label: {\n formatMethod: (value: string) => {\n return colorIdMap[value] ?? value\n },\n style: {\n fontSize: labelFontSize,\n fill: 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 { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { IColorTableLegendOption } from '@visactor/vtable/es/ts-types/component/legend'\nimport type { Color, Legend, SpecPipe } from 'src/types'\n\nexport const pivotColorLegend: 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 const max = Math.max(...datasetReshapeInfo.map((d) => d.foldInfo.colorRange[1]))\n const min = Math.min(...datasetReshapeInfo.map((d) => d.foldInfo.colorRange[0]))\n const { legend, color } = baseConfig\n const { colorScheme, linearColorScheme } = color\n\n const { enable, position = 'bottom', labelFontColor, labelFontSize = 12, labelFontWeight = 400 } = 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: IColorTableLegendOption = {\n visible: enable,\n type: 'color',\n orient,\n position: legendPosition,\n\n colors: linearColorScheme || colorScheme || [],\n value: [min, max],\n min: min,\n max: max,\n\n maxWidth: '30%',\n startText: {\n visible: true,\n style: {\n fill: labelFontColor,\n fontSize: labelFontSize,\n fontWeight: labelFontWeight,\n },\n },\n endText: {\n visible: true,\n style: {\n fill: labelFontColor,\n fontSize: labelFontSize,\n fontWeight: labelFontWeight,\n },\n },\n }\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 colorAdapter,\n linearColor,\n colorLegend,\n colorLineStyleFill,\n colorPointStyleFill,\n pivotColorLegend,\n} from '../pipes'\n\nconst line: SpecPipeline = [\n initLine,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n verticalCrosshairLine,\n colorAdapter(discreteLegend, colorLegend),\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n label,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotLine: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initLine,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n verticalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n label,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const lineSpecPipeline: SpecPipeline = [pivotAdapter(line, pivotLine)]\n","import { lineAdvancedPipeline, lineSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerLine = () => {\n Builder._advancedPipelineMap['line'] = lineAdvancedPipeline\n Builder._specPipelineMap['line'] = lineSpecPipeline\n}","import { unique } from 'remeda'\nimport { MeasureName } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\n\n/**\n * @description 堆叠柱状图、并列柱状图、百分比柱状图\n * 维度未包含任何`encoding`, 则使用默认映射规则:\n * 1. x: 第一个维度映射至X轴\n * 2. color: 非`X`轴所有维度与指标名称, 合并映射至颜色通道, 作为图例展示\n * 3. detail: 非`X`轴所有维度与指标名称, 映射至Detail通道\n * 指标未包含任何`encoding`, 则使用默认映射规则:\n * 1. y: 全部指标映射至Y轴\n * 2. tooltip: 全部指标映射至Tooltip\n *\n * 维度映射规则:\n * 1. 用户指定的`xAxis`维度映射至X轴, 支持多个维度; 若未指定, 则默认将第一个维度映射至X轴\n * 2. 用户指定的`color`维度映射至颜色通道, 支持多个维度; 若未指定, 则默认将指标名称映射至颜色通道, 作为图例展示\n * 3. 用户指定的`detail`维度映射至Detail通道, 支持多个维度; 若未指定, 则默认将指标名称映射至Detail通道\n * 指标映射规则:\n * 1. 指标未配置`encoding`, 则默认映射至Y轴;\n * 2. 用户指定的`yAxis`指标映射至Y轴, 支持多个指标;\n * 3. 所有指标均映射到Tooltip\n */\nexport const encodingForColumn: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\n }\n\n if (hasMeasureEncoding) {\n generateMeasureEncoding(measures, encoding)\n } else {\n generateDefaultMeasureEncoding(measures, encoding)\n }\n\n return { ...advancedVSeed, encoding }\n}\n\n/**\n * --------------------维度--------------------\n */\nconst generateDefaultDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n const onlyMeasureName = dimensions.length === 1 && dimensions.find((item) => item.id === MeasureName)\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.x = uniqueDimIds.slice(0, 1) // 第一个维度放置于X轴\n encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1) // 第二个之后的维度用于颜色\n encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1) // 第二个之后的维度用于详情\n encoding.tooltip = uniqueDimIds // 展示所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n encoding.x = unique(dimensions.filter((item) => item.encoding === 'xAxis').map((item) => item.id))\n encoding.color = unique(dimensions.filter((item) => item.encoding === 'color').map((item) => item.id))\n encoding.detail = unique(dimensions.filter((item) => item.encoding === 'detail').map((item) => item.id))\n if (encoding.x.length === 0) {\n encoding.x = [dimensions[0].id]\n }\n if (encoding.color.length === 0) {\n encoding.color = [MeasureName]\n }\n if (encoding.detail.length === 0) {\n encoding.detail = [MeasureName]\n }\n}\n\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.tooltip = unique(measures.map((item) => item.id))\n encoding.y = unique(measures.filter((item) => item.encoding === 'yAxis' || !item.encoding).map((item) => item.id))\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.tooltip = measures.map((item) => item.id)\n encoding.y = unique(measures.filter((item) => item.encoding === 'yAxis' || !item.encoding).map((item) => item.id))\n const color = unique(measures.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (color.length > 0) {\n encoding.color = color\n }\n return encoding\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n columnConfig,\n markStyle,\n annotation,\n sortXBandAxis,\n sortLegend,\n encodingForColumn,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n} from '../pipes'\n\nexport const columnAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingForColumn,\n buildMeasures,\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\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 { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n result.type = 'bar'\n result.direction = 'vertical'\n result.xField = unfoldInfo.encodingX\n result.yField = foldInfo.measureValue\n result.seriesField = unfoldInfo.encodingColorId\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { SpecPipe, StackCornerRadius } from 'src/types'\n\nexport const stackCornerRadius: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const stackCornerRadius = advancedVSeed.config?.[chartType as 'column']?.stackCornerRadius as StackCornerRadius\n const { datasetReshapeInfo } = advancedVSeed\n const { foldInfo } = datasetReshapeInfo[0]\n return {\n ...spec,\n stackCornerRadius: (_, datum) => {\n if (datum[foldInfo.measureValue] > 0) {\n return stackCornerRadius\n }\n\n return 0\n },\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 type { SpecPipe } from 'src/types'\nimport { isLinearColor } from './colorAdapter'\n\nexport const colorBarStyleFill = (stylePipe: SpecPipe): SpecPipe => {\n return (spec, context) => {\n const result = stylePipe(spec, context) as IBarChartSpec\n\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed)) {\n if (result?.bar?.style) {\n result.bar.style.fill = {\n field: unfoldInfo.encodingColor,\n scale: 'color',\n }\n }\n }\n\n return result\n }\n}\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { BarStyle, Datum, SpecPipe } from 'src/types'\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 {\n barBorderColor,\n barBorderStyle,\n barBorderWidth = 1,\n barColor,\n barColorOpacity,\n barRadius,\n barVisible = true,\n } = style\n\n const lineDash = barBorderStyle === 'dashed' ? [5, 2] : barBorderStyle === 'dotted' ? [2, 5] : [0, 0]\n return {\n ...result,\n [`custom${index + 1}`]: {\n // 优先级: 后者覆盖前者\n level: index + 1,\n filter: (datum: Datum) => {\n if (selector(datum, style.selector)) {\n return true\n }\n return false\n },\n style: {\n visible: barVisible,\n fill: barColor,\n fillOpacity: barColorOpacity,\n cornerRadius: barRadius,\n innerBorder: {\n stroke: barBorderColor,\n lineWidth: barBorderWidth,\n distance: (barBorderWidth || 0) / 2,\n lineDash: lineDash,\n },\n },\n },\n }\n }, {})\n\n 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 } = 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 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 colorAdapter,\n linearColor,\n colorLegend,\n colorBarStyleFill,\n pivotColorLegend,\n} from '../pipes'\n\nconst column: SpecPipeline = [\n initColumn,\n stackCornerRadius,\n stackInverse,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairRect,\n colorAdapter(discreteLegend, colorLegend),\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotColumn: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initColumn,\n stackCornerRadius,\n stackInverse,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairRect,\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const columnSpecPipeline = [pivotAdapter(column, pivotColumn)]\n","import { columnAdvancedPipeline, columnSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerColumn = () => {\n Builder._advancedPipelineMap['column'] = columnAdvancedPipeline\n Builder._specPipelineMap['column'] = columnSpecPipeline\n}","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n columnParallelConfig,\n markStyle,\n annotation,\n sortXBandAxis,\n sortLegend,\n encodingForColumn,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n} from '../pipes'\n\nexport const columnParallelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingForColumn,\n buildMeasures,\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n sortXBandAxis,\n sortLegend,\n columnParallelConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initColumnParallel: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo, dimensions } = advancedVSeed\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n const sameDimensionsMode = dimensions.length > 1 && dimensions.every((dim) => dim.id === dimensions[0].id)\n\n result.type = 'bar'\n result.direction = 'vertical'\n result.xField = sameDimensionsMode ? [unfoldInfo.encodingX] : [unfoldInfo.encodingX, unfoldInfo.encodingDetail]\n result.yField = foldInfo.measureValue\n result.seriesField = unfoldInfo.encodingColorId\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n xBand,\n yLinear,\n initColumnParallel,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n pivotIndicators,\n initPivot,\n datasetPivot,\n pivotAdapter,\n pivotDiscreteLegend,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n verticalCrosshairRect,\n stackCornerRadius,\n progressive,\n linearColor,\n colorAdapter,\n colorLegend,\n colorBarStyleFill,\n pivotColorLegend,\n} from '../pipes'\n\nconst columnParallel: SpecPipeline = [\n initColumnParallel,\n stackCornerRadius,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n colorAdapter(discreteLegend, colorLegend),\n verticalCrosshairRect,\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotColumnParallel: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initColumnParallel,\n stackCornerRadius,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairRect,\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const columnParallelSpecPipeline: SpecPipeline = [pivotAdapter(columnParallel, pivotColumnParallel)]\n","import { columnParallelAdvancedPipeline, columnParallelSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerColumnParallel = () => {\n Builder._advancedPipelineMap['columnParallel'] = columnParallelAdvancedPipeline\n Builder._specPipelineMap['columnParallel'] = columnParallelSpecPipeline\n}","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n columnPercentConfig,\n markStyle,\n annotation,\n sortXBandAxis,\n sortLegend,\n encodingForColumn,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n} from '../pipes'\n\nexport const columnPercentAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingForColumn,\n buildMeasures,\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\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 colorAdapter,\n linearColor,\n colorLegend,\n colorBarStyleFill,\n pivotColorLegend,\n} from '../pipes'\n\nconst columnPercent: SpecPipeline = [\n initColumn,\n stackCornerRadius,\n stackInverse,\n colorAdapter(color, linearColor),\n backgroundColor,\n percent,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n colorAdapter(discreteLegend, colorLegend),\n verticalCrosshairRect,\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotColumnPercent: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initColumn,\n stackCornerRadius,\n stackInverse,\n colorAdapter(color, linearColor),\n percent,\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairRect,\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const columnPercentSpecPipeline: SpecPipeline = [pivotAdapter(columnPercent, pivotColumnPercent)]\n","import { columnPercentAdvancedPipeline, columnPercentSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerColumnPercent = () => {\n Builder._advancedPipelineMap['columnPercent'] = columnPercentAdvancedPipeline\n Builder._specPipelineMap['columnPercent'] = columnPercentSpecPipeline\n}","import { unique } from 'remeda'\nimport { MeasureName } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\n\n/**\n * @description 条形图、堆叠条形图、并列条形图、百分比条形图\n * 维度未包含任何`encoding`, 则使用默认映射规则:\n * 1. y: 第一个维度映射至Y轴\n * 2. color: 非`Y`轴所有维度与指标名称, 合并映射至颜色通道, 作为图例展示\n * 3. detail: 非`Y`轴所有维度与指标名称, 映射至Detail通道\n * 指标未包含任何`encoding`, 则使用默认映射规则:\n * 1. x: 全部指标映射至`X`轴\n * 2. tooltip: 全部指标映射至`Tooltip`\n *\n * 维度映射规则:\n * 1. 用户指定的`yAxis`维度映射至Y轴, 支持多个维度; 若未指定, 则默认将第一个维度映射至Y轴\n * 2. 用户指定的`color`维度映射至颜色通道, 支持多个维度; 若未指定, 则默认将指标名称映射至颜色通道, 作为图例展示\n * 3. 用户指定的`detail`维度映射至Detail通道, 支持多个维度; 若未指定, 则默认将指标名称映射至Detail通道\n * 指标映射规则:\n * 1. 指标未配置`encoding`, 则默认映射至Y轴;\n * 2. 用户指定的`xAxis`指标映射至`X`轴, 支持多个指标;\n * 3. 所有指标均映射到`Tooltip`\n */\nexport const encodingForBar: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\n }\n\n if (hasMeasureEncoding) {\n generateMeasureEncoding(measures, encoding)\n } else {\n generateDefaultMeasureEncoding(measures, encoding)\n }\n\n return { ...advancedVSeed, encoding }\n}\n\n/**\n * --------------------维度--------------------\n */\nconst generateDefaultDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n const onlyMeasureName = dimensions.length === 1 && dimensions.find((item) => item.id === MeasureName)\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.y = uniqueDimIds.slice(0, 1) // 第一个维度放置于X轴\n encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1) // 第二个之后的维度用于颜色\n encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1) // 第二个之后的维度用于详情\n encoding.tooltip = uniqueDimIds // 展示所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n encoding.y = unique(dimensions.filter((item) => item.encoding === 'yAxis').map((item) => item.id))\n encoding.color = unique(dimensions.filter((item) => item.encoding === 'color').map((item) => item.id))\n encoding.detail = unique(dimensions.filter((item) => item.encoding === 'detail').map((item) => item.id))\n if (encoding.y.length === 0) {\n encoding.y = [dimensions[0].id]\n }\n if (encoding.color.length === 0) {\n encoding.color = [MeasureName]\n }\n if (encoding.detail.length === 0) {\n encoding.detail = [MeasureName]\n }\n}\n\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.tooltip = unique(measures.map((item) => item.id))\n encoding.x = unique(measures.filter((item) => item.encoding === 'xAxis' || !item.encoding).map((item) => item.id))\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.tooltip = measures.map((item) => item.id)\n encoding.x = unique(measures.filter((item) => item.encoding === 'xAxis' || !item.encoding).map((item) => item.id))\n const color = unique(measures.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (color.length > 0) {\n encoding.color = color\n }\n return encoding\n}\n","import type { AdvancedPipe, Dataset, DatasetReshapeInfo, Line } from 'src/types'\nimport { calcOrder } from './sortXBand'\n\nexport const sortYBandAxis: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { sort: sortAxis } = vseed as Line\n const { datasetReshapeInfo, dataset } = advancedVSeed as { datasetReshapeInfo: DatasetReshapeInfo; dataset: Dataset }\n const { unfoldInfo } = datasetReshapeInfo[0]\n const yField = unfoldInfo?.encodingY\n if (!sortAxis || !yField) {\n return advancedVSeed\n }\n if (!result.analysis) result.analysis = {}\n if (!result.analysis.orderMapping) result.analysis.orderMapping = {}\n\n const axisOrderResult = calcOrder(sortAxis, yField, dataset.flat(2))\n\n result.analysis.orderMapping[yField] = axisOrderResult\n\n return result\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n buildMeasures,\n pivotAdapter,\n barConfig,\n markStyle,\n annotation,\n sortYBandAxis,\n sortLegend,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n encodingForBar,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n} from '../pipes'\n\nexport const barAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingForBar,\n buildMeasures,\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n sortYBandAxis,\n sortLegend,\n barConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initBar: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n result.type = 'bar'\n result.direction = 'horizontal'\n result.yField = unfoldInfo.encodingY\n result.xField = foldInfo.measureValue\n result.seriesField = unfoldInfo.encodingColorId\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { isPivotChart } from 'src/pipeline/utils'\nimport type { SpecPipe } from 'src/types'\n\nexport const datasetYX: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { analysis, datasetReshapeInfo } = advancedVSeed\n\n const { unfoldInfo } = datasetReshapeInfo[0]\n const orderMapping = analysis?.orderMapping || {}\n\n const angle = unfoldInfo.encodingAngle\n const y = unfoldInfo.encodingY\n const colorId = unfoldInfo.encodingColorId\n const id = datasetReshapeInfo[0].id\n\n const fields: Record<string, object> = {}\n if (angle) {\n fields[angle] = {\n sortIndex: 0,\n }\n }\n if (y) {\n const order = orderMapping[y]\n if (order) {\n fields[y] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[y] = {\n sortIndex: 0,\n }\n }\n }\n if (colorId) {\n const order = orderMapping[colorId]\n if (order) {\n fields[colorId] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[colorId] = {\n sortIndex: 0,\n }\n }\n }\n\n return {\n ...spec,\n data: {\n id,\n // 透视表不使用 dataValues\n values: isPivotChart(vseed) ? undefined : advancedVSeed.dataset,\n fields: fields,\n },\n } as ISpec\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { 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 colorAdapter,\n linearColor,\n colorLegend,\n colorBarStyleFill,\n pivotColorLegend,\n} from '../pipes'\n\nconst bar: SpecPipeline = [\n initBar,\n stackCornerRadius,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetYX,\n progressive,\n xLinear,\n yBand,\n label,\n tooltip,\n colorAdapter(discreteLegend, colorLegend),\n horizontalCrosshairRect,\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotBar: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsCol,\n datasetPivot,\n pivotIndicators([\n initBar,\n stackCornerRadius,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetYX,\n progressive,\n xLinear,\n yBand,\n label,\n label,\n tooltip,\n colorBarStyleFill(barStyle),\n horizontalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const barSpecPipeline: SpecPipeline = [pivotAdapter(bar, pivotBar)]\n","import { barAdvancedPipeline, barSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerBar = () => {\n Builder._advancedPipelineMap['bar'] = barAdvancedPipeline\n Builder._specPipelineMap['bar'] = barSpecPipeline\n}","import type { AdvancedPipeline } from 'src/types'\nimport {\n buildMeasures,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n barParallelConfig,\n markStyle,\n annotation,\n sortYBandAxis,\n sortLegend,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n encodingForBar,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n} from '../pipes'\n\nexport const barParallelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingForBar,\n buildMeasures,\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n sortYBandAxis,\n sortLegend,\n barParallelConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initBarParallel: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo, dimensions } = advancedVSeed\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n const sameDimensionsMode = dimensions.length > 1 && dimensions.every((dim) => dim.id === dimensions[0].id)\n\n result.type = 'bar'\n result.direction = 'horizontal'\n\n result.yField = sameDimensionsMode\n ? [unfoldInfo.encodingY]\n : ([unfoldInfo.encodingY, unfoldInfo.encodingDetail] as string[])\n result.xField = foldInfo.measureValue\n result.seriesField = unfoldInfo.encodingColorId\n\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetYX,\n xLinear,\n yBand,\n initBarParallel,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n initPivot,\n datasetPivot,\n pivotDiscreteLegend,\n pivotIndicators,\n pivotAdapter,\n pivotIndicatorsAsCol,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n horizontalCrosshairRect,\n stackCornerRadius,\n progressive,\n linearColor,\n colorAdapter,\n colorLegend,\n colorBarStyleFill,\n pivotColorLegend,\n} from '../pipes'\n\nconst barParallel: SpecPipeline = [\n initBarParallel,\n stackCornerRadius,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetYX,\n progressive,\n xLinear,\n yBand,\n label,\n tooltip,\n colorAdapter(discreteLegend, colorLegend),\n horizontalCrosshairRect,\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotBarParallel: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsCol,\n datasetPivot,\n pivotIndicators([\n initBarParallel,\n stackCornerRadius,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetYX,\n xLinear,\n yBand,\n label,\n tooltip,\n colorBarStyleFill(barStyle),\n horizontalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const barParallelSpecPipeline: SpecPipeline = [pivotAdapter(barParallel, pivotBarParallel)]\n","import { barParallelAdvancedPipeline, barParallelSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerBarParallel = () => {\n Builder._advancedPipelineMap['barParallel'] = barParallelAdvancedPipeline\n Builder._specPipelineMap['barParallel'] = barParallelSpecPipeline\n}","import type { AdvancedPipeline } from 'src/types'\nimport {\n buildMeasures,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n barPercentConfig,\n markStyle,\n annotation,\n sortYBandAxis,\n sortLegend,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n encodingForBar,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n} from '../pipes'\n\nexport const barPercentAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingForBar,\n buildMeasures,\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n sortYBandAxis,\n sortLegend,\n barPercentConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { SpecPipeline } from 'src/types'\nimport {\n initBar,\n datasetYX,\n xLinear,\n yBand,\n percent,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n pivotAdapter,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotIndicatorsAsCol,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n horizontalCrosshairRect,\n stackCornerRadius,\n progressive,\n colorAdapter,\n linearColor,\n colorLegend,\n colorBarStyleFill,\n pivotColorLegend,\n} from '../pipes'\n\nconst barPercent: SpecPipeline = [\n initBar,\n stackCornerRadius,\n colorAdapter(color, linearColor),\n backgroundColor,\n percent,\n datasetYX,\n progressive,\n xLinear,\n yBand,\n label,\n tooltip,\n colorAdapter(discreteLegend, colorLegend),\n horizontalCrosshairRect,\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotBarPercent: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsCol,\n datasetPivot,\n pivotIndicators([\n initBar,\n stackCornerRadius,\n colorAdapter(color, linearColor),\n backgroundColor,\n percent,\n datasetYX,\n yBand,\n xLinear,\n label,\n tooltip,\n colorBarStyleFill(barStyle),\n horizontalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const barPercentSpecPipeline: SpecPipeline = [pivotAdapter(barPercent, pivotBarPercent)]\n","import { barPercentAdvancedPipeline, barPercentSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerBarPercent = () => {\n Builder._advancedPipelineMap['barPercent'] = barPercentAdvancedPipeline\n Builder._specPipelineMap['barPercent'] = barPercentSpecPipeline\n}","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n areaConfig,\n annotation,\n markStyle,\n sortXBandAxis,\n sortLegend,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n buildMeasures,\n encodingForLine,\n defaultMeasures,\n defaultMeasureName,\n defaultDimensions,\n} from '../pipes'\n\nexport const areaAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingForLine,\n buildMeasures,\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n sortXBandAxis,\n sortLegend,\n areaConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IAreaChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from '../color/colorAdapter'\n\nexport const initArea: SpecPipe = (spec, context) => {\n const result = { ...spec } as IAreaChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n result.type = 'area'\n result.direction = 'vertical'\n result.yField = foldInfo.measureValue\n \n result.xField = unfoldInfo.encodingX\n result.seriesField = isLinearColor(advancedVSeed) ? unfoldInfo.encodingDetail : unfoldInfo.encodingColorId\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { IAreaChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from './colorAdapter'\n\nexport const colorAreaStyleFill = (stylePipe: SpecPipe): SpecPipe => {\n return (spec, context) => {\n const result = stylePipe(spec, context) as IAreaChartSpec\n\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed)) {\n if (result?.area?.style) {\n result.area.style.fill = {\n field: unfoldInfo.encodingColor,\n scale: 'color',\n }\n }\n }\n\n return result\n }\n}\n","import type { IAreaChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { AreaStyle, Datum, SpecPipe } from 'src/types'\nimport { groupBy } from 'remeda'\n\nexport const areaStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle, datasetReshapeInfo, dataset } = advancedVSeed\n const { areaStyle } = markStyle\n const { unfoldInfo } = datasetReshapeInfo[0]\n const result = {\n ...spec,\n area: {\n visible: true,\n style: {},\n },\n } as IAreaChartSpec\n\n if (!areaStyle) {\n return result\n }\n\n const areaStyles = (Array.isArray(areaStyle) ? areaStyle : [areaStyle]) as AreaStyle[]\n\n const group = unfoldInfo.encodingColorId\n\n const areaGroups = groupBy(dataset, (d) => d[group ?? ''] as string)\n\n const customMap = areaStyles.reduce<object>((result, style, index) => {\n const { areaColor, areaColorOpacity, areaVisible = true } = style\n\n return {\n ...result,\n [`custom${index + 1}`]: {\n // 优先级: 后者覆盖前者\n level: index + 1,\n filter: (datum: Datum) => {\n const lineData = areaGroups[datum[group ?? ''] as string]\n for (const d of lineData) {\n if (selector(d, style.selector)) {\n return true\n }\n }\n return false\n },\n style: {\n visible: areaVisible,\n fill: areaColor,\n fillOpacity: areaColorOpacity,\n },\n },\n }\n }, {})\n\n return {\n ...result,\n area: {\n ...result.area,\n visible: true,\n state: {\n ...customMap,\n },\n },\n }\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n xBand,\n yLinear,\n initArea,\n stackInverse,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotAdapter,\n initPivot,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n pointStyle,\n lineStyle,\n areaStyle,\n verticalCrosshairLine,\n pointStateDimensionHover,\n datasetXY,\n progressive,\n colorAdapter,\n linearColor,\n colorLegend,\n colorPointStyleFill,\n colorLineStyleFill,\n colorAreaStyleFill,\n pivotColorLegend,\n} from '../pipes'\n\nconst area: SpecPipeline = [\n initArea,\n stackInverse,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n colorAdapter(discreteLegend, colorLegend),\n verticalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotArea: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initArea,\n colorAdapter(color, linearColor),\n backgroundColor,\n stackInverse,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const areaSpecPipeline = [pivotAdapter(area, pivotArea)]\n","import { areaAdvancedPipeline, areaSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerArea = () => {\n Builder._advancedPipelineMap['area'] = areaAdvancedPipeline\n Builder._specPipelineMap['area'] = areaSpecPipeline\n}","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n areaPercentConfig,\n annotation,\n markStyle,\n sortXBandAxis,\n sortLegend,\n encodingForLine,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n} from '../pipes'\n\nexport const areaPercentAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingForLine,\n buildMeasures,\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n sortXBandAxis,\n sortLegend,\n areaPercentConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { SpecPipeline } from 'src/types'\nimport {\n percent,\n datasetXY,\n xBand,\n yLinear,\n initArea,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotAdapter,\n initPivot,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n stackInverse,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n pointStyle,\n lineStyle,\n areaStyle,\n verticalCrosshairLine,\n progressive,\n colorLegend,\n colorAdapter,\n linearColor,\n pivotColorLegend,\n pointStateDimensionHover,\n colorPointStyleFill,\n colorLineStyleFill,\n colorAreaStyleFill,\n} from '../pipes'\n\nconst areaPercent: SpecPipeline = [\n initArea,\n stackInverse,\n colorAdapter(color, linearColor),\n backgroundColor,\n percent,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n colorAdapter(discreteLegend, colorLegend),\n verticalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotAreaPercent: SpecPipeline = [\n initPivot,\n\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initArea,\n stackInverse,\n colorAdapter(color, linearColor),\n backgroundColor,\n percent,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const areaPercentSpecPipeline = [pivotAdapter(areaPercent, pivotAreaPercent)]\n","import { areaPercentAdvancedPipeline, areaPercentSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerAreaPercent = () => {\n Builder._advancedPipelineMap['areaPercent'] = areaPercentAdvancedPipeline\n Builder._specPipelineMap['areaPercent'] = areaPercentSpecPipeline\n}","import { unique } from 'remeda'\nimport { MeasureName } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\n\n/**\n * @description 散点图\n * 维度未包含任何`encoding`, 则使用默认映射规则:\n * 1. color: 所有维度与指标名称, 合并映射至颜色通道, 作为图例展示\n * 2. detail: 所有维度与指标名称, 映射至Detail通道\n * 指标未包含任何`encoding`, 则使用默认映射规则:\n * 1. x: 第一个指标映射至X轴\n * 2. y: 第二个及其之后的指标映射至Y轴\n * 3. tooltip: 全部指标映射至Tooltip\n *\n * 维度映射规则:\n * 2. 用户指定的`color`维度映射至颜色通道, 支持多个维度; 若未指定, 则默认将指标名称映射至颜色通道, 作为图例展示\n * 3. 用户指定的`detail`维度映射至Detail通道, 支持多个维度; 若未指定, 则默认将指标名称映射至Detail通道\n * 指标映射规则:\n * 1. 指标未配置encoding, 则第一个指标默认映射至X轴, 第二个指标默认映射至Y轴\n * 2. 用户指定的yAxis指标映射至Y轴X轴, 支持多个指标;\n * 3. 所有指标均映射到Tooltip\n */\nexport const encodingForScatter: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n // prepare measures and dimensions\n const measures = findAllMeasures(vseedMeasures)\n\n // exist encoding condition\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n\n // encoding for modify in place\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\n }\n\n if (hasMeasureEncoding) {\n generateMeasureEncoding(measures, encoding)\n } else {\n generateDefaultMeasureEncoding(measures, encoding)\n }\n\n return { ...advancedVSeed, encoding }\n}\n/**\n * --------------------维度--------------------\n */\nconst generateDefaultDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n const dimensionsWithoutMeasureName = dimensions.filter((item) => item.id !== MeasureName)\n const uniqueDimIds = unique(dimensionsWithoutMeasureName.map((d) => d.id))\n encoding.color = uniqueDimIds.slice(0)\n encoding.detail = uniqueDimIds.slice(0)\n encoding.tooltip = uniqueDimIds // 展示所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n encoding.color = unique(dimensions.filter((item) => item.encoding === 'color').map((item) => item.id))\n encoding.detail = unique(dimensions.filter((item) => item.encoding === 'detail').map((item) => item.id))\n if (encoding.color.length === 0) {\n encoding.color = [MeasureName]\n }\n if (encoding.detail.length === 0) {\n encoding.detail = [MeasureName]\n }\n}\n\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.tooltip = unique(measures.map((item) => item.id))\n encoding.y = unique(\n measures\n .filter((item) => item.encoding === 'xAxis' || item.encoding === 'yAxis' || !item.encoding)\n .map((item) => item.id),\n )\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.tooltip = measures.map((item) => item.id)\n encoding.y = unique(\n measures\n .filter((item) => item.encoding === 'xAxis' || item.encoding === 'yAxis' || !item.encoding)\n .map((item) => item.id),\n )\n const color = unique(measures.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (color.length > 0) {\n encoding.color = [color[0]]\n }\n}\n","import type { AdvancedPipe, MeasureGroup, Measures, MeasureTree, Scatter, ScatterMeasures } from 'src/types'\nimport { isMeasureTreeWithParentId, isMeasureTreeWithChildren } from './utils'\n\nexport const buildMeasuresForScatter: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context as {\n vseed: Scatter\n }\n\n // 带Children的指标树, 不进行任何处理\n if (isMeasureTreeWithChildren(vseed)) {\n advancedVSeed.measures = vseed.measures\n return advancedVSeed\n }\n // 带parentId的指标树, 转换为带children的指标树\n if (isMeasureTreeWithParentId(vseed)) {\n advancedVSeed.measures = generateMeasuresByParentId(vseed.measures as Measures)\n return advancedVSeed\n }\n\n /**\n * 既不是带Children的指标树, 也不是带parentId的指标树, 则自动生成指标\n */\n\n const scatterMeasures = vseed.scatterMeasures\n ? vseed.scatterMeasures\n : basicMeasuresToScatterMeasures(advancedVSeed.measures || [])\n advancedVSeed.measures = scatterMeasuresToMeasureTree(scatterMeasures)\n\n return advancedVSeed\n}\n\nconst basicMeasuresToScatterMeasures = (basicMeasures: Measures): ScatterMeasures => {\n const yMeasures: Measures = []\n const xMeasures: Measures = []\n\n for (let index = 0; index < basicMeasures.length; index++) {\n const item = basicMeasures[index]\n const encoding = Array.isArray(item.encoding) ? item.encoding : [item.encoding]\n const isYAxis = encoding.includes('yAxis')\n const isXAxis = encoding.includes('xAxis')\n\n if (isYAxis) {\n yMeasures.push(item)\n } else if (isXAxis) {\n xMeasures.push(item)\n } else {\n if (index !== 0) {\n yMeasures.push(item)\n } else {\n xMeasures.push(item)\n }\n }\n }\n\n return [{ id: 'scatterMeasures', xMeasures, yMeasures }]\n}\n\nconst scatterMeasuresToMeasureTree = (scatterMeasures: ScatterMeasures): MeasureTree => {\n const measureTree = scatterMeasures.map((item, index): MeasureGroup => {\n const { id, xMeasures, yMeasures } = item\n const groupChildren: MeasureGroup[] = []\n\n let groupId: string = `${id}-`\n if (xMeasures) {\n const arrPrimaryMeasures = Array.isArray(xMeasures) ? xMeasures : [xMeasures]\n const alias = arrPrimaryMeasures.map((item) => item.alias || item.id).toString()\n groupId += alias\n groupChildren.push({\n id: `${index}-x`,\n alias: arrPrimaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrPrimaryMeasures,\n })\n }\n if (yMeasures) {\n const arrSecondaryMeasures = Array.isArray(yMeasures) ? yMeasures : [yMeasures]\n const alias = arrSecondaryMeasures.map((item) => item.alias || item.id).toString()\n groupId += alias\n groupChildren.push({\n id: `${index}-y`,\n alias: arrSecondaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrSecondaryMeasures,\n })\n }\n\n return {\n id: groupId,\n alias: groupId,\n children: groupChildren,\n }\n })\n\n // 只有1个散点图, 仅返回2层, vchart 绘制散点图\n if (scatterMeasures.length === 1) {\n return measureTree[0].children || []\n }\n\n // 有多个散点图, 返回3层, pivot chart 绘制组合散点图\n return measureTree\n}\n\nconst generateMeasuresByParentId = (measures: Measures) => {\n const scatterMeasures: ScatterMeasures = []\n\n measures.forEach((item) => {\n if (!item.parentId) {\n return\n }\n\n if (!scatterMeasures.find((d) => d.id === item.parentId)) {\n scatterMeasures.push({\n id: item.parentId,\n yMeasures: [],\n xMeasures: [],\n })\n }\n\n const scatterChart = scatterMeasures.find((d) => d.id === item.parentId)\n if (!scatterChart || !Array.isArray(scatterChart.yMeasures) || !Array.isArray(scatterChart.xMeasures)) {\n return\n }\n\n const encoding = Array.isArray(item.encoding) ? item.encoding : [item.encoding]\n const isX = encoding.includes('xAxis')\n const isY = encoding.includes('yAxis')\n const isEmpty = !encoding.length\n if (isY) {\n scatterChart.yMeasures.push(item)\n } else if (isX) {\n scatterChart.xMeasures.push(item)\n } else if (isEmpty) {\n if (scatterChart.yMeasures.length !== 0) {\n scatterChart.yMeasures.push(item)\n } else {\n scatterChart.xMeasures.push(item)\n }\n }\n })\n\n return scatterMeasuresToMeasureTree(scatterMeasures)\n}\n","import { uniqueBy } from 'remeda'\nimport { dataReshapeByEncoding, FoldXMeasureValue, FoldYMeasureValue } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n Encoding,\n FoldInfo,\n MeasureGroup,\n UnfoldInfo,\n} from 'src/types'\n\nexport const reshapeWithScatterEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed as ColumnParallel\n const { dimensions, measures, encoding, chartType } = advancedVSeed\n\n if (!measures || !dimensions || !dataset || !encoding) {\n return result\n }\n\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n\n if (measures.length > 2) {\n throw new Error('measures can not be more than 2')\n }\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const datasets: Dataset[] = []\n const xMeasures = measures[0] as MeasureGroup\n const yMeasures = (measures[1] || xMeasures) as MeasureGroup\n\n if (xMeasures && xMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (d) => d.id),\n uniqueBy(xMeasures.children, (d) => d.id),\n encoding as Encoding,\n {\n foldMeasureValue: FoldXMeasureValue,\n colorItemAsId: true,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\n },\n )\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n if (yMeasures && yMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n datasets[0],\n uniqueBy(dimensions, (d) => d.id),\n uniqueBy(yMeasures.children, (d) => d.id),\n encoding as Encoding,\n {\n foldMeasureValue: FoldYMeasureValue,\n colorItemAsId: true,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\n },\n )\n\n datasets[0] = newDataset\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n const unfoldInfo: UnfoldInfo = {\n ...unfoldInfoList[0],\n colorItems: unfoldInfoList.flatMap((d) => d.colorItems),\n colorIdMap: unfoldInfoList.reduce((prev, cur) => ({ ...prev, ...cur.colorIdMap }), {}),\n }\n\n return {\n ...result,\n dataset: datasets[0],\n\n datasetReshapeInfo: [\n {\n id: String(chartType),\n index: 0,\n foldInfo: foldInfoList[0],\n foldInfoList: foldInfoList,\n unfoldInfo: unfoldInfo,\n },\n ],\n }\n}\n","import { dataReshapeByEncoding, FoldXMeasureValue, FoldYMeasureValue } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport { measureDepth } from 'src/pipeline/utils'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Encoding,\n FoldInfo,\n MeasureGroup,\n UnfoldInfo,\n} from 'src/types'\n\nexport const pivotReshapeWithScatterEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed as ColumnParallel\n const { dimensions, measures, encoding, chartType } = advancedVSeed\n\n if (!measures || !dimensions || !dataset || !encoding) {\n return result\n }\n\n const measureGroups: Array<MeasureGroup[]> = []\n\n const depth = measureDepth(measures)\n if (depth === 3) {\n measures.forEach((measure: MeasureGroup) => {\n measureGroups.push(measure.children as unknown as MeasureGroup[])\n })\n } else if (depth === 2) {\n measureGroups.push(measures)\n }\n\n const datasetList: Dataset[] = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n measureGroups.forEach((measures: MeasureGroup[], index) => {\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n\n if (measures.length > 2) {\n throw new Error('measures can not be more than 2')\n }\n\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const datasets: Dataset[] = []\n const xMeasures = measures[0]\n const yMeasures = measures[1] || xMeasures\n\n if (xMeasures && xMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(dataset, dimensions, xMeasures.children, encoding as Encoding, {\n foldMeasureValue: `${FoldXMeasureValue}${index}`,\n colorItemAsId: true,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\n })\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n if (yMeasures && yMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(dataset, dimensions, yMeasures.children, encoding as Encoding, {\n foldMeasureValue: `${FoldYMeasureValue}${index}`,\n colorItemAsId: true,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\n })\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n const unfoldInfo: UnfoldInfo = {\n ...unfoldInfoList[0],\n colorItems: unfoldInfoList.flatMap((d) => d.colorItems),\n colorIdMap: unfoldInfoList.reduce((prev, cur) => ({ ...prev, ...cur.colorIdMap }), {}),\n }\n\n const reshapeInfo = {\n id: `${chartType}-${index}`,\n index,\n foldInfo: foldInfoList[0],\n foldInfoList: foldInfoList,\n unfoldInfo: unfoldInfo,\n }\n\n datasetReshapeInfo.push(reshapeInfo)\n datasetList.push(datasets[0].map((d, index) => ({ ...d, ...(datasets[1]?.[index] || {}) })))\n })\n\n return {\n ...result,\n dataset: datasetList,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n annotation,\n markStyle,\n scatterConfig,\n encodingForScatter,\n buildMeasuresForScatter,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n} from '../pipes'\nimport { reshapeWithScatterEncoding } from '../pipes/reshape/reshapeWithScatterEncoding'\nimport { pivotReshapeWithScatterEncoding } from '../pipes/reshape/pivotReshapeWithScatterEncoding'\n\nexport const scatterAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingForScatter,\n buildMeasuresForScatter,\n pivotAdapter([reshapeWithScatterEncoding], [pivotReshapeWithScatterEncoding]),\n\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 { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo, foldInfoList } = datasetReshapeInfo[0]\n\n result.type = 'scatter'\n result.direction = 'vertical'\n result.xField = foldInfoList?.[0].measureValue\n if (foldInfoList?.[1]) {\n result.yField = foldInfoList[1].measureValue\n }\n\n result.seriesField = unfoldInfo.encodingColorId\n\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { isPivotChart } from 'src/pipeline/utils'\nimport type { SpecPipe } from 'src/types'\n\nexport const datasetScatter: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const id = datasetReshapeInfo[0].id\n\n const fields: Record<string, object> = {}\n\n return {\n ...spec,\n data: {\n id,\n // 透视表不使用 dataValues\n values: isPivotChart(vseed) ? undefined : advancedVSeed.dataset.flat(),\n fields: fields,\n },\n } as ISpec\n}\n","import type { 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 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 datasetScatter,\n linearColor,\n colorAdapter,\n colorPointStyleFill,\n colorLegend,\n pivotColorLegend,\n} from '../pipes'\n\nconst scatter: SpecPipeline = [\n initScatter,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetScatter,\n progressive,\n xLinear,\n yLinear,\n label,\n tooltip,\n colorAdapter(discreteLegend, colorLegend),\n verticalCrosshairLine,\n horizontalCrosshairLine,\n colorPointStyleFill(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 colorAdapter(color, linearColor),\n backgroundColor,\n datasetScatter,\n progressive,\n xLinear,\n yLinear,\n label,\n tooltip,\n verticalCrosshairLine,\n horizontalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateHover,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const scatterSpecPipeline: SpecPipeline = [pivotAdapter(scatter, pivotScatter)]\n","import { scatterAdvancedPipeline, scatterSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerScatter = () => {\n Builder._advancedPipelineMap['scatter'] = scatterAdvancedPipeline\n Builder._specPipelineMap['scatter'] = scatterSpecPipeline\n}","import { unique } from 'remeda'\nimport { MeasureName } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\n\n/**\n * @description 双轴图\n * 维度未包含任何`encoding`, 则使用默认映射规则:\n * 1. x: 第一个维度映射至X轴\n * 2. color: 非`X`轴所有维度与指标名称, 合并映射至颜色通道, 作为图例展示\n * 3. detail: 非`X`轴所有维度与指标名称, 映射至Detail通道\n * 指标未包含任何`encoding`, 则使用默认映射规则:\n * 1. y: 第一个指标映射至主Y轴, 其余指标映射至次Y轴\n * 2. tooltip: 全部指标映射至Tooltip\n *\n * 维度映射规则:\n * 1. 用户指定的`xAxis`维度映射至X轴, 支持多个维度; 若未指定, 则默认将第一个维度映射至X轴\n * 2. 用户指定的`color`维度映射至颜色通道, 支持多个维度; 若未指定, 则默认将指标名称映射至颜色通道, 作为图例展示\n * 3. 用户指定的`detail`维度映射至Detail通道, 支持多个维度; 若未指定, 则默认将指标名称映射至Detail通道\n * 指标映射规则:\n * 1. 指标未配置encoding, 则第一个指标默认映射至Y轴, 其余指标默认映射至次Y轴\n * 2. 用户指定的yAxis指标映射至主Y轴或次Y轴, 支持多个指标;\n * 3. 所有指标均映射到Tooltip\n */\nexport const encodingForDualAxis: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\n }\n\n if (hasMeasureEncoding) {\n generateMeasureEncoding(measures, encoding)\n } else {\n generateDefaultMeasureEncoding(measures, encoding)\n }\n\n return { ...advancedVSeed, encoding }\n}\n\n/**\n * --------------------维度--------------------\n */\nconst generateDefaultDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n const onlyMeasureName = dimensions.length === 1 && dimensions.find((item) => item.id === MeasureName)\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.x = uniqueDimIds.slice(0, 1) // 第一个维度放置于X轴\n encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1) // 第二个之后的维度用于颜色\n encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1) // 第二个之后的维度用于详情\n encoding.tooltip = uniqueDimIds // 展示所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n encoding.x = unique(dimensions.filter((item) => item.encoding === 'xAxis').map((item) => item.id))\n encoding.color = unique(dimensions.filter((item) => item.encoding === 'color').map((item) => item.id))\n encoding.detail = unique(dimensions.filter((item) => item.encoding === 'detail').map((item) => item.id))\n if (encoding.x.length === 0) {\n encoding.x = [dimensions[0].id]\n }\n if (encoding.color.length === 0) {\n encoding.color = [MeasureName]\n }\n if (encoding.detail.length === 0) {\n encoding.detail = [MeasureName]\n }\n}\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.tooltip = unique(measures.map((item) => item.id))\n encoding.y = unique(\n measures\n .filter((item) => item.encoding === 'primaryYAxis' || item.encoding === 'secondaryYAxis' || !item.encoding)\n .map((item) => item.id),\n )\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.tooltip = measures.map((item) => item.id)\n encoding.y = unique(\n measures\n .filter((item) => item.encoding === 'primaryYAxis' || item.encoding === 'secondaryYAxis' || !item.encoding)\n .map((item) => item.id),\n )\n const color = unique(measures.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (color.length > 0) {\n encoding.color = color\n }\n return encoding\n}\n","import type { AdvancedPipe, DualAxis, DualMeasures, MeasureGroup, Measures, MeasureTree } from 'src/types'\nimport { isMeasureTreeWithParentId, isMeasureTreeWithChildren } from './utils'\n\nexport const buildMeasuresForDualAxis: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context as {\n vseed: DualAxis\n }\n\n // 带Children的指标树, 不进行任何处理\n if (isMeasureTreeWithChildren(vseed)) {\n advancedVSeed.measures = vseed.measures\n return advancedVSeed\n }\n // 带parentId的指标树, 转换为带children的指标树\n if (isMeasureTreeWithParentId(vseed)) {\n advancedVSeed.measures = generateMeasuresByParentId(vseed.measures as Measures)\n return advancedVSeed\n }\n\n /**\n * 既不是带Children的指标树, 也不是带parentId的指标树, 则自动生成指标\n */\n const dualMeasures = vseed.dualMeasures\n ? vseed.dualMeasures\n : basicMeasuresToDualMeasures(advancedVSeed.measures || [])\n advancedVSeed.measures = dualMeasuresToMeasureTree(dualMeasures)\n\n return advancedVSeed\n}\n\nconst basicMeasuresToDualMeasures = (basicMeasures: Measures): DualMeasures => {\n const primaryMeasures: Measures = []\n const secondaryMeasures: Measures = []\n\n for (let index = 0; index < basicMeasures.length; index++) {\n const item = basicMeasures[index]\n const encoding = Array.isArray(item.encoding) ? item.encoding : [item.encoding]\n const isPrimaryYAxis = encoding.includes('primaryYAxis')\n const isSecondaryYAxis = encoding.includes('secondaryYAxis')\n\n if (isPrimaryYAxis) {\n primaryMeasures.push(item)\n } else if (isSecondaryYAxis) {\n secondaryMeasures.push(item)\n } else {\n if (index === 0) {\n primaryMeasures.push(item)\n } else {\n secondaryMeasures.push(item)\n }\n }\n }\n\n return [{ id: 'dualMeasures', primaryMeasures, secondaryMeasures }]\n}\n\nconst dualMeasuresToMeasureTree = (dualMeasures: DualMeasures): MeasureTree => {\n const measureTree = dualMeasures.map((item, index): MeasureGroup => {\n const { id, primaryMeasures, secondaryMeasures } = item\n const groupChildren: MeasureGroup[] = []\n\n let groupId: string = `${id}-`\n if (primaryMeasures) {\n const arrPrimaryMeasures = Array.isArray(primaryMeasures) ? primaryMeasures : [primaryMeasures]\n const alias = arrPrimaryMeasures.map((item) => item.alias || item.id).toString()\n groupId += alias\n groupChildren.push({\n id: `${index}-primary`,\n alias: arrPrimaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrPrimaryMeasures,\n })\n }\n if (secondaryMeasures) {\n const arrSecondaryMeasures = Array.isArray(secondaryMeasures) ? secondaryMeasures : [secondaryMeasures]\n const alias = arrSecondaryMeasures.map((item) => item.alias || item.id).toString()\n groupId += alias\n groupChildren.push({\n id: `${index}-secondary`,\n alias: arrSecondaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrSecondaryMeasures,\n })\n }\n\n return {\n id: groupId,\n alias: groupId,\n children: groupChildren,\n }\n })\n\n // 只有1个双轴图, 仅返回2层, vchart 绘制双轴图\n if (dualMeasures.length === 1) {\n return measureTree[0].children || []\n }\n\n // 有多个双轴图, 返回3层, pivot chart 绘制组合双轴图\n return measureTree\n}\n\nconst generateMeasuresByParentId = (measures: Measures) => {\n const dualMeasures: DualMeasures = []\n\n measures.forEach((item) => {\n if (!item.parentId) {\n return\n }\n\n if (!dualMeasures.find((d) => d.id === item.parentId)) {\n dualMeasures.push({\n id: item.parentId,\n primaryMeasures: [],\n secondaryMeasures: [],\n })\n }\n\n const dualChart = dualMeasures.find((d) => d.id === item.parentId)\n if (!dualChart || !Array.isArray(dualChart.primaryMeasures) || !Array.isArray(dualChart.secondaryMeasures)) {\n return\n }\n\n const encoding = Array.isArray(item.encoding) ? item.encoding : [item.encoding]\n const isPrimary = encoding.includes('primaryYAxis')\n const isSecondary = encoding.includes('secondaryYAxis')\n const isEmpty = !item.encoding\n\n if (isPrimary) {\n dualChart.primaryMeasures.push(item)\n } else if (isSecondary) {\n dualChart.secondaryMeasures.push(item)\n } else if (isEmpty) {\n if (dualChart.primaryMeasures.length === 0) {\n dualChart.primaryMeasures.push(item)\n } else {\n dualChart.secondaryMeasures.push(item)\n }\n }\n })\n\n return dualMeasuresToMeasureTree(dualMeasures)\n}\n","import { dataReshapeByEncoding, FoldPrimaryMeasureValue, FoldSecondaryMeasureValue } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n Dimension,\n Encoding,\n FoldInfo,\n MeasureGroup,\n UnfoldInfo,\n} from 'src/types'\n\nexport const reshapeWithDualEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed as ColumnParallel\n const { dimensions, measures, encoding, chartType } = advancedVSeed\n\n if (!measures || !dimensions || !dataset || !encoding) {\n return result\n }\n\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n\n if (measures.length > 2) {\n throw new Error('measures can not be more than 2')\n }\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const datasets: Dataset[] = []\n const primaryMeasures = measures[0] as MeasureGroup\n const secondaryMeasures = (measures[1] || []) as MeasureGroup\n const hasEncoding = (vseed.dimensions || []).some((item: Dimension) => item.encoding)\n\n if (primaryMeasures && primaryMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding as Encoding, {\n colorItemAsId: hasEncoding,\n foldMeasureValue: FoldPrimaryMeasureValue,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\n })\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n if (secondaryMeasures && secondaryMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(dataset, dimensions, secondaryMeasures.children, encoding as Encoding, {\n foldMeasureValue: FoldSecondaryMeasureValue,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\n })\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n const unfoldInfo: UnfoldInfo = {\n ...unfoldInfoList[0],\n colorItems: unfoldInfoList.flatMap((d) => d.colorItems),\n colorIdMap: unfoldInfoList.reduce((prev, cur) => ({ ...prev, ...cur.colorIdMap }), {}),\n }\n\n return {\n ...result,\n dataset: datasets,\n datasetReshapeInfo: [\n {\n id: String(chartType),\n index: 0,\n foldInfo: foldInfoList[0],\n foldInfoList: foldInfoList,\n unfoldInfo: unfoldInfo,\n },\n ],\n }\n}\n","import { dataReshapeByEncoding, FoldPrimaryMeasureValue, FoldSecondaryMeasureValue } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport { measureDepth } from 'src/pipeline/utils'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Dimension,\n Encoding,\n FoldInfo,\n MeasureGroup,\n UnfoldInfo,\n} from 'src/types'\n\nexport const pivotReshapeWithDualEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed as ColumnParallel\n const { dimensions, measures, encoding, chartType } = advancedVSeed\n\n if (!measures || !dimensions || !dataset || !encoding) {\n return result\n }\n const hasEncoding = (vseed.dimensions || []).some((item: Dimension) => item.encoding)\n\n const datasetList: Dataset[] = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n const measureGroups: Array<MeasureGroup[]> = []\n\n const depth = measureDepth(measures)\n if (depth === 3) {\n measures.forEach((measure: MeasureGroup) => {\n measureGroups.push(measure.children as unknown as MeasureGroup[])\n })\n } else if (depth === 2) {\n measureGroups.push(measures as unknown as MeasureGroup[])\n }\n\n measureGroups.forEach((measures: MeasureGroup[], index) => {\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n\n if (measures.length > 2) {\n throw new Error('measures can not be more than 2')\n }\n\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const datasets: Dataset[] = []\n const primaryMeasures = measures[0]\n const secondaryMeasures = measures[1] || []\n\n if (primaryMeasures && primaryMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding as Encoding, {\n colorItemAsId: hasEncoding,\n foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\n })\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n if (secondaryMeasures && secondaryMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(dataset, dimensions, secondaryMeasures.children, encoding as Encoding, {\n foldMeasureValue: `${FoldSecondaryMeasureValue}${index}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\n })\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n const unfoldInfo: UnfoldInfo = {\n ...unfoldInfoList[0],\n colorItems: unfoldInfoList.flatMap((d) => d.colorItems),\n colorIdMap: unfoldInfoList.reduce((prev, cur) => ({ ...prev, ...cur.colorIdMap }), {}),\n }\n\n const reshapeInfo = {\n id: `${chartType}-${index}`,\n index,\n foldInfo: foldInfoList[0],\n foldInfoList: foldInfoList,\n unfoldInfo: unfoldInfo,\n }\n\n datasetReshapeInfo.push(reshapeInfo)\n datasetList.push(datasets.flat(2))\n })\n\n return {\n ...result,\n dataset: datasetList,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n","import { pick } from 'remeda'\nimport 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 'alignTicks',\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 type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n annotation,\n markStyle,\n sortXBandAxis,\n sortLegend,\n dualAxisConfig,\n encodingForDualAxis,\n reshapeWithDualEncoding,\n pivotReshapeWithDualEncoding,\n buildMeasuresForDualAxis,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n} from '../pipes'\n\nexport const dualAxisAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingForDualAxis,\n buildMeasuresForDualAxis,\n pivotAdapter([reshapeWithDualEncoding], [pivotReshapeWithDualEncoding]),\n\n sortXBandAxis,\n sortLegend,\n dualAxisConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { Spec, SpecPipe, SpecPipeline, SpecPipelineContext } from 'src/types'\nimport { execPipeline } from '../../../../utils'\nimport type { ICommonChartSpec, ILineSeriesSpec } from '@visactor/vchart'\n\nexport const series = (...args: SpecPipeline[]): SpecPipe => {\n const result = {\n type: 'common',\n padding: 0,\n region: [\n {\n clip: true,\n },\n ],\n } as ICommonChartSpec\n\n return (_, context) => {\n result.series = args.map((pipeline) => {\n return execPipeline<Spec, SpecPipelineContext>(pipeline, context, {})\n }) as ILineSeriesSpec[]\n\n return result\n }\n}\n\n/**\n * @description 双轴图的透视场景, 不能使用此pipe, 请使用series\n * 因为VTable.PivotVChart会自行解析数据, 而非VChart解析.\n */\nexport const seriesDualAxis = (...args: SpecPipeline[]): SpecPipe => {\n const result = {\n type: 'common',\n padding: 0,\n region: [\n {\n clip: true,\n },\n ],\n } as ICommonChartSpec\n\n const createDualContext = <T extends SpecPipelineContext>(context: T, index: number): T => {\n const { advancedVSeed } = context\n const dataset = advancedVSeed.dataset[index]\n return {\n ...context,\n advancedVSeed: {\n ...advancedVSeed,\n dataset: dataset,\n },\n }\n }\n\n return (_, context) => {\n result.series = args.map((pipeline, index) => {\n const seriesContext = createDualContext(context, index)\n return execPipeline<Spec, SpecPipelineContext>(pipeline, seriesContext, {})\n }) as ILineSeriesSpec[]\n\n return result\n }\n}\n","import type { IBarSeriesSpec, ILineSeriesSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from '../color/colorAdapter'\n\nexport const initDualAxisPrimary: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarSeriesSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo, foldInfoList, id } = datasetReshapeInfo[0]\n\n result.id = `${id}-primary-series`\n result.type = 'bar'\n result.direction = 'vertical'\n result.xField = unfoldInfo.encodingX\n result.seriesField = unfoldInfo.encodingColorId\n\n result.yField = foldInfoList?.[0].measureValue\n result.animation = true\n\n return result\n}\n\nexport const initDualAxisSecondary: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineSeriesSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo, foldInfoList, id } = datasetReshapeInfo[0]\n\n result.id = `${id}-secondary-series`\n result.type = 'line'\n result.direction = 'vertical'\n result.xField = unfoldInfo.encodingX\n if (foldInfoList?.[1]) {\n result.yField = foldInfoList[1].measureValue\n }\n\n result.seriesField = isLinearColor(advancedVSeed) ? unfoldInfo.encodingDetail : unfoldInfo.encodingColorId\n\n result.animation = true\n\n return result\n}\n","import type { IBarSeriesSpec, ISeriesSpec } from '@visactor/vchart'\nimport { DUAL_AXIS_CHART_COLUMN_Z_INDEX, DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX } from 'src/pipeline/utils/constant'\nimport type { DualChartType, SpecPipe } from 'src/types'\n\nexport const dualChartTypePrimary: SpecPipe = (spec, context) => {\n const result = { ...spec, zIndex: DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX } as ISeriesSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { datasetReshapeInfo } = advancedVSeed\n const index = datasetReshapeInfo[0].index\n\n const config =\n advancedVSeed.config?.[chartType as 'dualAxis']?.dualChartType ||\n ({\n primary: 'column',\n secondary: 'line',\n } as DualChartType)\n\n const primary = Array.isArray(config) ? config[index].primary || config[0].primary : config.primary\n const secondary = Array.isArray(config) ? config[index].secondary || config[0].secondary : config.secondary\n const bothColumn = primary === 'column' && secondary === 'column'\n const type = bothColumn ? 'columnParallel' : primary\n switch (type) {\n case 'line': {\n result.type = 'line'\n break\n }\n case 'column': {\n result.type = 'bar'\n result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX\n break\n }\n case 'columnParallel': {\n const columnSpec = result as IBarSeriesSpec\n if (Array.isArray(columnSpec.xField)) {\n columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.encodingDetail)\n } else if (columnSpec.xField) {\n columnSpec.xField = [columnSpec.xField, datasetReshapeInfo[0].unfoldInfo.encodingDetail]\n }\n columnSpec.type = 'bar'\n result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX\n break\n }\n // @ts-expect-error 'columnPercent' 和 'areaPercent' 会改变轴值域为[0,1], VTable不支持.\n case 'columnPercent': {\n result.type = 'bar'\n result.percent = true\n break\n }\n case 'area': {\n result.type = 'area'\n break\n }\n // @ts-expect-error 'columnPercent' 和 'areaPercent' 会改变轴值域为[0,1], VTable不支持.\n case 'areaPercent': {\n result.type = 'area'\n result.percent = true\n break\n }\n case 'scatter': {\n result.type = 'scatter'\n break\n }\n default:\n result.type = primary\n }\n\n return result\n}\n\nexport const dualChartTypeSecondary: SpecPipe = (spec, context) => {\n const result = { ...spec, zIndex: DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX } as ISeriesSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { datasetReshapeInfo } = advancedVSeed\n const config =\n advancedVSeed.config?.[chartType as 'dualAxis']?.dualChartType ||\n ({\n primary: 'column',\n secondary: 'line',\n } as DualChartType)\n\n const index = datasetReshapeInfo[0].index\n const primary = Array.isArray(config) ? config[index].primary || config[0].primary : config.primary\n const secondary = Array.isArray(config) ? config[index].secondary || config[0].secondary : config.secondary\n const bothColumn = primary === 'column' && secondary === 'column'\n const type = bothColumn ? 'columnParallel' : secondary\n\n switch (type) {\n case 'line': {\n result.type = 'line'\n break\n }\n case 'column': {\n result.type = 'bar'\n result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX\n break\n }\n case 'columnParallel': {\n const columnSpec = result as IBarSeriesSpec\n if (Array.isArray(columnSpec.xField)) {\n columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.encodingDetail)\n } else if (columnSpec.xField) {\n columnSpec.xField = [columnSpec.xField, datasetReshapeInfo[0].unfoldInfo.encodingDetail]\n }\n columnSpec.type = 'bar'\n result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX\n break\n }\n // @ts-expect-error 'columnPercent' 和 'areaPercent' 会改变轴值域为[0,1], VTable不支持.\n case 'columnPercent': {\n result.type = 'bar'\n result.percent = true\n break\n }\n case 'area': {\n result.type = 'area'\n break\n }\n // @ts-expect-error 'columnPercent' 和 'areaPercent' 会改变轴值域为[0,1], VTable不支持.\n case 'areaPercent': {\n result.type = 'area'\n result.percent = true\n break\n }\n case 'scatter': {\n result.type = 'scatter'\n break\n }\n default:\n result.type = secondary\n }\n\n return result\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { isPivotChart } from 'src/pipeline/utils'\nimport type { SpecPipe } from 'src/types'\n\nexport const datasetPrimary: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { analysis, datasetReshapeInfo } = advancedVSeed\n const orderMapping = analysis?.orderMapping || {}\n\n const { unfoldInfo } = datasetReshapeInfo[0]\n const x = unfoldInfo.encodingX\n const colorId = unfoldInfo.encodingColorId\n const id = datasetReshapeInfo[0].id\n\n const fields: Record<string, object> = {}\n\n if (x) {\n const order = orderMapping[x]\n if (order) {\n fields[x] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[x] = {\n sortIndex: 0,\n }\n }\n }\n\n if (colorId) {\n const order = orderMapping[colorId]\n if (order) {\n fields[colorId] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[colorId] = {\n sortIndex: 0,\n }\n }\n }\n\n return {\n ...spec,\n data: {\n id: `${id}-primary-dataset`,\n // 透视表不使用 dataValues\n values: isPivotChart(vseed) ? undefined : advancedVSeed.dataset,\n fields: fields,\n },\n } as ISpec\n}\n\nexport const datasetSecondary: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { analysis, datasetReshapeInfo } = advancedVSeed\n const orderMapping = analysis?.orderMapping || {}\n\n const { unfoldInfo } = datasetReshapeInfo[0]\n const x = unfoldInfo.encodingX\n const colorId = unfoldInfo.encodingColorId\n const id = datasetReshapeInfo[0].id\n\n const fields: Record<string, object> = {}\n\n if (x) {\n const order = orderMapping[x]\n if (order) {\n fields[x] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[x] = {\n sortIndex: 0,\n }\n }\n }\n\n if (colorId) {\n const order = orderMapping[colorId]\n if (order) {\n fields[colorId] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[colorId] = {\n sortIndex: 0,\n }\n }\n }\n\n return {\n ...spec,\n data: {\n id: `${id}-secondary-dataset`,\n // 透视表不使用 dataValues\n values: isPivotChart(vseed) ? undefined : advancedVSeed.dataset,\n fields: fields,\n },\n } as ISpec\n}\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport type { 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 { encodingColor: colorName } = 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 || colorName] 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[colorName] 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 { encodingColorId } = 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 || encodingColorId] 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[encodingColorId] 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 const { index, id: reshapeInfoId, foldInfoList } = datasetReshapeInfo[0]\n\n // TODO: default config missing\n\n const primaryYAxis = advancedVSeed.config?.[chartType as 'dualAxis']?.primaryYAxis as YLinearAxis | YLinearAxis[]\n const yAxisConfig = Array.isArray(primaryYAxis) ? primaryYAxis[index] || primaryYAxis[0] : primaryYAxis\n const alignTicks = advancedVSeed.config?.[chartType as 'dualAxis']?.alignTicks as boolean | boolean[]\n const alignTicksConfig = Array.isArray(alignTicks) ? alignTicks[index] || alignTicks[0] : alignTicks\n\n if (foldInfoList?.[0] && isEmpty(foldInfoList[0].foldMap)) {\n return result\n }\n const id = `${reshapeInfoId}-primary-axis`\n const seriesIds = [`${reshapeInfoId}-primary-series`, `${reshapeInfoId}-secondary-series`]\n const seriesId = alignTicksConfig ? seriesIds : seriesIds[0]\n\n if (!result.axes) {\n result.axes = []\n }\n\n if (!yAxisConfig) {\n result.axes = [\n ...result.axes,\n {\n visible: true,\n id,\n seriesId,\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 } = yAxisConfig\n\n const linearAxis = {\n visible,\n id,\n seriesId,\n\n type: log ? 'log' : 'linear',\n base: logBase,\n orient: 'left',\n nice,\n zero: log ? false : zero,\n inverse,\n max,\n min,\n label: {\n visible: label?.visible,\n formatMethod: (value: string) => {\n return 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 const { index, id: reshapeInfoId, foldInfoList } = datasetReshapeInfo[0]\n // TODO: default config missing\n\n const secondaryYAxis = advancedVSeed.config?.[chartType as 'dualAxis']?.secondaryYAxis as YLinearAxis | YLinearAxis[]\n const yAxisConfig = Array.isArray(secondaryYAxis) ? secondaryYAxis[index] || secondaryYAxis[0] : secondaryYAxis\n const alignTicks = advancedVSeed.config?.[chartType as 'dualAxis']?.alignTicks as boolean | boolean[]\n const alignTicksConfig = Array.isArray(alignTicks) ? alignTicks[index] || alignTicks[0] : alignTicks\n\n if (isNullish(foldInfoList?.[1])) {\n return result\n }\n\n const sync = {\n axisId: `${reshapeInfoId}-primary-axis`,\n zeroAlign: true,\n }\n\n const id = `${reshapeInfoId}-secondary-axis`\n const seriesIds = [`${reshapeInfoId}-primary-series`, `${reshapeInfoId}-secondary-series`]\n const seriesId = alignTicksConfig ? seriesIds : seriesIds[1]\n if (!result.axes) {\n result.axes = []\n }\n\n if (!yAxisConfig) {\n result.axes = [\n ...result.axes,\n {\n visible: true,\n id,\n seriesId,\n type: 'linear',\n orient: 'right',\n sync,\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 } = yAxisConfig\n\n const linearAxis = {\n visible,\n id,\n seriesId,\n sync,\n type: log ? 'log' : 'linear',\n base: logBase,\n orient: 'right',\n nice,\n zero: log ? false : zero,\n inverse,\n max,\n min,\n label: {\n visible: label?.visible,\n formatMethod: (value: string) => {\n return 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 { IBarChartSpec } from '@visactor/vchart'\nimport type { Color, SpecPipe } from 'src/types'\n\nexport const linearColorForDualAxis: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo, chartType } = advancedVSeed\n const { unfoldInfo, id } = datasetReshapeInfo[0]\n const baseConfig = advancedVSeed.config[chartType] as { color: Color }\n\n if (!baseConfig || !baseConfig.color) {\n return result\n }\n\n const { color } = baseConfig\n const { colorScheme, linearColorScheme } = color\n\n result.color = {\n type: 'linear',\n range: linearColorScheme || colorScheme || [],\n domain: [\n {\n dataId: `${id}-primary-dataset`,\n fields: [unfoldInfo.encodingColor],\n },\n {\n dataId: `${id}-secondary-dataset`,\n fields: [unfoldInfo.encodingColor],\n },\n ],\n }\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n xBand,\n backgroundColor,\n discreteLegend,\n color,\n initPivot,\n datasetPivot,\n pivotDiscreteLegend,\n pivotIndicators,\n pivotAdapter,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n 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 series,\n colorBarStyleFill,\n colorPointStyleFill,\n colorLineStyleFill,\n colorAreaStyleFill,\n linearColor,\n colorAdapter,\n colorLegend,\n pivotColorLegend,\n linearColorForDualAxis,\n} from '../pipes'\n\nconst dualAxis: SpecPipeline = [\n seriesDualAxis(\n [\n initDualAxisPrimary,\n dualChartTypePrimary,\n datasetPrimary,\n labelPrimary,\n tooltipPrimary,\n progressive,\n\n colorBarStyleFill(barStyle),\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n ],\n [\n initDualAxisSecondary,\n dualChartTypeSecondary,\n datasetSecondary,\n labelSecondary,\n tooltipSecondary,\n progressive,\n\n colorBarStyleFill(barStyle),\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n ],\n ),\n xBand,\n yLinearPrimary,\n yLinearSecondary,\n\n colorAdapter(color, linearColorForDualAxis),\n colorAdapter(discreteLegend, colorLegend),\n\n backgroundColor,\n\n verticalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n 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 colorBarStyleFill(barStyle),\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n ],\n [\n initDualAxisSecondary,\n dualChartTypeSecondary,\n datasetSecondary,\n labelSecondary,\n tooltipSecondary,\n progressive,\n\n colorBarStyleFill(barStyle),\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n ],\n ),\n xBand,\n yLinearPrimary,\n yLinearSecondary,\n colorAdapter(color, linearColor),\n backgroundColor,\n verticalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const dualAxisSpecPipeline: SpecPipeline = [pivotAdapter(dualAxis, pivotDualAxis)]\n","import { dualAxisAdvancedPipeline, dualAxisSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerDualAxis = () => {\n Builder._advancedPipelineMap['dualAxis'] = dualAxisAdvancedPipeline\n Builder._specPipelineMap['dualAxis'] = dualAxisSpecPipeline\n}\n","import { unique } from 'remeda'\nimport { MeasureName } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\n\n/**\n * @description 饼图、环形图\n * 维度未包含任何`encoding`, 则使用默认映射规则:\n * 1. color: 所有维度, 合并映射至颜色通道, 作为图例展示\n * 2. detail: 所有维度, 映射至Detail通道\n * 指标未包含任何`encoding`, 则使用默认映射规则:\n * 1. angle: 全部指标映射至angle轴\n * 2. tooltip: 全部指标映射至Tooltip\n *\n * 维度映射规则:\n * 1. 用户指定的`color`维度映射至颜色通道, 支持多个维度; 若未指定, 则默认将指标名称映射至颜色通道, 作为图例展示\n * 2. 用户指定的`detail`维度映射至Detail通道, 支持多个维度; 若未指定, 则默认将指标名称映射至Detail通道\n * 指标映射规则:\n * 1. 指标未配置`encoding`, 则默认映射至angle轴;\n * 2. 用户指定的`angle`指标映射至angle轴, 支持多个指标;\n * 3. 用户指定的`color`指标映射至color通道, 支持多个指标;\n * 3. 所有指标均映射到Tooltip\n */\nexport const encodingForPie: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\n }\n\n if (hasMeasureEncoding) {\n generateMeasureEncoding(measures, encoding)\n } else {\n generateDefaultMeasureEncoding(measures, encoding)\n }\n\n return { ...advancedVSeed, encoding }\n}\n\n/**\n * --------------------维度--------------------\n */\nconst generateDefaultDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.color = uniqueDimIds.slice(0) // 第1个之后的维度用于颜色\n encoding.detail = uniqueDimIds.slice(0) // 第1个之后的维度用于详情\n encoding.tooltip = uniqueDimIds // 展示所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n encoding.color = unique(dimensions.filter((item) => item.encoding === 'color').map((item) => item.id))\n encoding.detail = unique(dimensions.filter((item) => item.encoding === 'detail').map((item) => item.id))\n\n if (encoding.color.length === 0) {\n encoding.color = [MeasureName]\n }\n if (encoding.detail.length === 0) {\n encoding.detail = [MeasureName]\n }\n}\n\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.tooltip = unique(measures.map((item) => item.id))\n encoding.angle = unique(measures.filter((item) => item.encoding === 'angle' || !item.encoding).map((item) => item.id))\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.tooltip = measures.map((item) => item.id)\n encoding.angle = unique(measures.filter((item) => item.encoding === 'angle' || !item.encoding).map((item) => item.id))\n const color = unique(measures.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (color.length > 0) {\n encoding.color = color\n }\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n pieConfig,\n annotation,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n encodingForPie,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n} from '../pipes'\n\nexport const pieAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingForPie,\n buildMeasures,\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n pieConfig,\n theme,\n annotation,\n]\n","import type { IPieChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initPie: SpecPipe = (spec, context) => {\n const result = { ...spec } as IPieChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n result.type = 'pie'\n result.outerRadius = 0.8\n result.innerRadius = 0\n result.valueField = foldInfo.measureValue\n result.categoryField = unfoldInfo.encodingColorId\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n\n result.animation = true\n\n return result\n}\n","import type { IPieChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from './colorAdapter'\n\nexport const colorPieStyleFill = (stylePipe: SpecPipe): SpecPipe => {\n return (spec, context) => {\n const result = stylePipe(spec, context) as IPieChartSpec\n\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed)) {\n if (result?.pie?.style) {\n result.pie.style.fill = {\n field: unfoldInfo.encodingColor,\n scale: 'color',\n }\n }\n }\n\n return result\n }\n}\n","import type { IPieChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const pieStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { dataset } = advancedVSeed\n const showStroke = dataset.length <= 30\n\n const result = {\n ...spec,\n pie: {\n style: {},\n },\n } as Required<IPieChartSpec>\n\n return {\n ...result,\n 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}\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 pieStyle,\n colorPieStyleFill,\n linearColor,\n colorAdapter,\n colorLegend,\n pivotColorLegend,\n} from '../pipes'\n\nconst pie: SpecPipeline = [\n initPie,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n colorPieStyleFill(pieStyle),\n colorAdapter(discreteLegend, colorLegend),\n label,\n tooltip,\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 colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n colorPieStyleFill(pieStyle),\n label,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const pieSpecPipeline: SpecPipeline = [pivotAdapter(pie, pivotPie)]\n","import { pieAdvancedPipeline, pieSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerPie = () => {\n Builder._advancedPipelineMap['pie'] = pieAdvancedPipeline\n Builder._specPipelineMap['pie'] = pieSpecPipeline\n}","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n annotation,\n donutConfig,\n encodingForPie,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n} from '../pipes'\n\nexport const donutAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n buildMeasures,\n encodingForPie,\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n donutConfig,\n theme,\n annotation,\n]\n","import type { IPieChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initDonut: SpecPipe = (spec, context) => {\n const result = { ...spec } as IPieChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { foldInfo, unfoldInfo } = datasetReshapeInfo[0]\n\n result.type = 'pie'\n result.outerRadius = 0.8\n result.innerRadius = result.outerRadius * 0.8\n result.valueField = foldInfo.measureValue\n result.categoryField = unfoldInfo.encodingColorId\n\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n\n result.animation = true\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n backgroundColor,\n color,\n datasetXY,\n datasetPivot,\n initDonut,\n initPivot,\n 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 colorAdapter,\n linearColor,\n colorLegend,\n pivotColorLegend,\n pieStyle,\n colorPieStyleFill,\n} from '../pipes'\n\nconst donut: SpecPipeline = [\n initDonut,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n label,\n colorPieStyleFill(pieStyle),\n colorAdapter(discreteLegend, colorLegend),\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotDonut: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initDonut,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n label,\n colorPieStyleFill(pieStyle),\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const donutSpecPipeline: SpecPipeline = [pivotAdapter(donut, pivotDonut)]\n","import { donutAdvancedPipeline, donutSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerDonut = () => {\n Builder._advancedPipelineMap['donut'] = donutAdvancedPipeline\n Builder._specPipelineMap['donut'] = donutSpecPipeline\n}","import { unique } from 'remeda'\nimport { MeasureName } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\n\n/**\n * @description 堆叠玫瑰图、并列玫瑰图\n * 维度未包含任何`encoding`, 则使用默认映射规则:\n * 1. angle: 第一个维度映射至angle轴\n * 2. color: 非`angle`轴所有维度与指标名称, 合并映射至颜色通道, 作为图例展示\n * 3. detail: 非`angle`轴所有维度与指标名称, 映射至Detail通道\n * 指标未包含任何`encoding`, 则使用默认映射规则:\n * 1. radius: 全部指标映射至radius轴\n * 2. tooltip: 全部指标映射至Tooltip\n *\n * 维度映射规则:\n * 1. 用户指定的`angle`维度映射至angle轴, 支持多个维度; 若未指定, 则默认将第一个维度映射至angle轴\n * 2. 用户指定的`color`维度映射至颜色通道, 支持多个维度; 若未指定, 则默认将指标名称映射至颜色通道, 作为图例展示\n * 3. 用户指定的`detail`维度映射至Detail通道, 支持多个维度; 若未指定, 则默认将指标名称映射至Detail通道\n * 指标映射规则:\n * 1. 指标未配置`encoding`, 则默认映射至Y轴;\n * 2. 用户指定的`radius`指标映射至radius轴, 支持多个指标;\n * 3. 所有指标均映射到Tooltip\n */\nexport const encodingForRose: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n\n // encoding for modify in place\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\n }\n\n if (hasMeasureEncoding) {\n generateMeasureEncoding(measures, encoding)\n } else {\n generateDefaultMeasureEncoding(measures, encoding)\n }\n\n return { ...advancedVSeed, encoding }\n}\n\n/**\n * --------------------维度--------------------\n */\nconst generateDefaultDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n const onlyMeasureName = dimensions.length === 1 && dimensions.find((item) => item.id === MeasureName)\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.angle = uniqueDimIds.slice(0, 1) // 第一个维度放置于X轴\n encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1) // 第二个之后的维度用于颜色\n encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1) // 第二个之后的维度用于详情\n encoding.tooltip = uniqueDimIds // 展示所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n encoding.angle = unique(dimensions.filter((item) => item.encoding === 'angle').map((item) => item.id))\n encoding.color = unique(dimensions.filter((item) => item.encoding === 'color').map((item) => item.id))\n encoding.detail = unique(dimensions.filter((item) => item.encoding === 'detail').map((item) => item.id))\n if (encoding.angle.length === 0) {\n encoding.angle = [dimensions[0].id]\n }\n if (encoding.color.length === 0) {\n encoding.color = [MeasureName]\n }\n if (encoding.detail.length === 0) {\n encoding.detail = [MeasureName]\n }\n}\n\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.tooltip = unique(measures.map((item) => item.id))\n encoding.radius = unique(\n measures.filter((item) => item.encoding === 'radius' || !item.encoding).map((item) => item.id),\n )\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.tooltip = measures.map((item) => item.id)\n encoding.radius = unique(\n measures.filter((item) => item.encoding === 'radius' || !item.encoding).map((item) => item.id),\n )\n const color = unique(measures.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (color.length > 0) {\n encoding.color = color\n }\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n markStyle,\n annotation,\n roseConfig,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n} from '../pipes'\nimport { encodingForRose } from '../pipes/encoding/rose'\n\nexport const roseAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingForRose,\n buildMeasures,\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n roseConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initRose: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRoseChartSpec\n const { advancedVSeed } = context\n const { dataset, datasetReshapeInfo } = advancedVSeed\n const { foldInfo, unfoldInfo } = datasetReshapeInfo[0]\n\n result.type = 'rose'\n\n result.angleField = unfoldInfo.encodingAngle\n result.seriesField = unfoldInfo.encodingColorId\n\n result.valueField = foldInfo.measureValue\n result.padding = 0\n result.outerRadius = 0.9\n result.innerRadius = 0\n\n const hasNegativeValue = dataset.flat().find((d) => d[foldInfo.measureValue] < 0)\n if (hasNegativeValue) {\n result.innerRadius = 0.05\n }\n\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const 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 { 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'\nimport { isLinearColor } from './colorAdapter'\n\nexport const colorRoseStyleFill = (stylePipe: SpecPipe): SpecPipe => {\n return (spec, context) => {\n const result = stylePipe(spec, context) as IRoseChartSpec\n\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed)) {\n if (result?.rose?.style) {\n result.rose.style.fill = {\n field: unfoldInfo.encodingColor,\n scale: 'color',\n }\n }\n }\n\n return result\n }\n}\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const roseStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { dataset } = advancedVSeed\n const showStroke = dataset.length <= 30\n\n const result = {\n ...spec,\n rose: {\n style: {},\n },\n } as Required<IRoseChartSpec>\n\n return {\n ...result,\n rose: {\n style: {\n stroke: '#ffffff',\n lineWidth: showStroke ? 1 : 0,\n },\n state: {\n hover: {\n lineWidth: 1,\n fillOpacity: 0.6,\n },\n },\n },\n }\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n backgroundColor,\n 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 linearColor,\n colorAdapter,\n pivotColorLegend,\n colorLegend,\n roseStyle,\n colorRoseStyleFill,\n} from '../pipes'\n\nconst rose: SpecPipeline = [\n initRose,\n stackCornerRadius,\n stackInverse,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n angleAxis,\n radiusAxis,\n verticalCrosshairRect,\n colorRoseStyleFill(roseStyle),\n colorAdapter(discreteLegend, colorLegend),\n label,\n tooltip,\n]\n\nconst pivotRose: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initRose,\n stackCornerRadius,\n stackInverse,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n radiusAxis,\n angleAxis,\n verticalCrosshairRect,\n colorRoseStyleFill(roseStyle),\n label,\n tooltip,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const roseSpecPipeline = [pivotAdapter(rose, pivotRose)]\n","import { roseAdvancedPipeline, roseSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerRose = () => {\n Builder._advancedPipelineMap['rose'] = roseAdvancedPipeline\n Builder._specPipelineMap['rose'] = roseSpecPipeline\n}","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n markStyle,\n annotation,\n roseParallelConfig,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n} from '../pipes'\nimport { encodingForRose } from '../pipes/encoding/rose'\n\nexport const roseParallelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingForRose,\n buildMeasures,\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\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 { datasetReshapeInfo, dataset, dimensions } = advancedVSeed\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n const sameDimensionsMode = dimensions.length > 1 && dimensions.every((dim) => dim.id === dimensions[0].id)\n\n result.type = 'rose'\n result.angleField = sameDimensionsMode\n ? [unfoldInfo.encodingAngle]\n : [unfoldInfo.encodingAngle, unfoldInfo.encodingDetail]\n result.valueField = foldInfo.measureValue\n result.seriesField = unfoldInfo.encodingColorId\n result.padding = 0\n\n result.outerRadius = 0.9\n result.innerRadius = 0\n\n const hasNegativeValue = dataset.flat().find((d) => d[foldInfo.measureValue] < 0)\n if (hasNegativeValue) {\n result.innerRadius = 0.05\n }\n\n result.rose = {\n style: {\n stroke: '#ffffff',\n lineWidth: 1,\n },\n state: {\n hover: {\n lineWidth: 1,\n fillOpacity: 0.6,\n },\n },\n }\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n backgroundColor,\n 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 pivotColorLegend,\n colorAdapter,\n linearColor,\n colorLegend,\n roseStyle,\n colorRoseStyleFill,\n} from '../pipes'\n\nconst roseParallel: SpecPipeline = [\n initRoseParallel,\n stackCornerRadius,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n radiusAxis,\n angleAxis,\n colorRoseStyleFill(roseStyle),\n colorAdapter(discreteLegend, colorLegend),\n label,\n tooltip,\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 colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n radiusAxis,\n angleAxis,\n verticalCrosshairRect,\n colorRoseStyleFill(roseStyle),\n label,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const roseParallelSpecPipeline: SpecPipeline = [pivotAdapter(roseParallel, pivotRoseParallel)]\n","import { roseParallelAdvancedPipeline, roseParallelSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerRoseParallel = () => {\n Builder._advancedPipelineMap['roseParallel'] = roseParallelAdvancedPipeline\n Builder._specPipelineMap['roseParallel'] = roseParallelSpecPipeline\n}","import { unique } from 'remeda'\nimport { MeasureName } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\n\n/**\n * @description 雷达图\n * 维度未包含任何`encoding`, 则使用默认映射规则:\n * 1. angle: 第一个维度映射至angle轴\n * 2. color: 非`Angle`轴所有维度与指标名称, 合并映射至颜色通道, 作为图例展示\n * 3. detail: 非`Angle`轴所有维度与指标名称, 映射至Detail通道\n * 指标未包含任何`encoding`, 则使用默认映射规则:\n * 1. radius: 全部指标映射至radius轴\n * 2. tooltip: 全部指标映射至Tooltip\n *\n * 维度映射规则:\n * 1. 用户指定的`angle`维度映射至angle轴, 支持多个维度; 若未指定, 则默认将第一个维度映射至angle轴\n * 2. 用户指定的`color`维度映射至颜色通道, 支持多个维度; 若未指定, 则默认将指标名称映射至颜色通道, 作为图例展示\n * 3. 用户指定的`detail`维度映射至Detail通道, 支持多个维度; 若未指定, 则默认将指标名称映射至Detail通道\n * 指标映射规则:\n * 1. 指标未配置`encoding`, 则默认映射至radius轴;\n * 2. 用户指定的`radius`指标映射至radius轴, 支持多个指标;\n * 3. 所有指标均映射到Tooltip\n */\nexport const encodingForRadar: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\n }\n\n if (hasMeasureEncoding) {\n generateMeasureEncoding(measures, encoding)\n } else {\n generateDefaultMeasureEncoding(measures, encoding)\n }\n\n return { ...advancedVSeed, encoding }\n}\n\n/**\n * --------------------维度--------------------\n */\nconst generateDefaultDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.angle = uniqueDimIds.slice(0, 1)\n encoding.color = uniqueDimIds.slice(1)\n encoding.tooltip = uniqueDimIds // 展示所有维度\n encoding.detail = [] // 雷达图暂不支持细分\n encoding.label = []\n encoding.row = []\n encoding.column = []\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n encoding.angle = unique(dimensions.filter((item) => item.encoding === 'angle').map((item) => item.id))\n encoding.color = unique(dimensions.filter((item) => item.encoding === 'color').map((item) => item.id))\n encoding.detail = []\n\n if (encoding.angle.length === 0) {\n encoding.angle = [dimensions[0].id]\n }\n if (encoding.color.length === 0) {\n encoding.color = [MeasureName]\n }\n if (encoding.detail.length === 0) {\n encoding.detail = [MeasureName]\n }\n}\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.tooltip = unique(measures.map((item) => item.id))\n encoding.radius = unique(\n measures.filter((item) => item.encoding === 'radius' || !item.encoding).map((item) => item.id),\n )\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.tooltip = measures.map((item) => item.id)\n encoding.radius = unique(\n measures.filter((item) => item.encoding === 'radius' || !item.encoding).map((item) => item.id),\n )\n const color = unique(measures.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (color.length > 0) {\n encoding.color = color\n }\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n annotation,\n markStyle,\n sortLegend,\n radarConfig,\n encodingForRadar,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n} from '../pipes'\n\nexport const radarAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingForRadar,\n buildMeasures,\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n // sortXBandAxis,\n sortLegend,\n radarConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IRadarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from '../color/colorAdapter'\n\nexport const initRadar: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRadarChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n result.type = 'radar'\n result.angleField = unfoldInfo.encodingAngle\n result.radiusField = foldInfo.measureValue\n result.seriesField = isLinearColor(advancedVSeed) ? unfoldInfo.encodingDetail : unfoldInfo.encodingColorId\n\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const radarAngleAxis: SpecPipe = (spec, 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 linearColor,\n colorAdapter,\n colorLegend,\n colorPointStyleFill,\n colorLineStyleFill,\n colorAreaStyleFill,\n pivotColorLegend,\n} from '../pipes'\n\nconst radar: SpecPipeline = [\n initRadar,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n radarAngleAxis,\n radarRadiusAxis,\n label,\n tooltip,\n colorAdapter(discreteLegend, colorLegend),\n verticalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n // annotationPoint,\n // annotationVerticalLine,\n // annotationHorizontalLine,\n // annotationArea,\n]\n\nconst pivotRadar: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initRadar,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n radarAngleAxis,\n radarRadiusAxis,\n label,\n tooltip,\n verticalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n // annotationPoint,\n // annotationVerticalLine,\n // annotationHorizontalLine,\n // annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const radarSpecPipeline: SpecPipeline = [pivotAdapter(radar, pivotRadar)]\n","import { radarAdvancedPipeline, radarSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerRadar = () => {\n Builder._advancedPipelineMap['radar'] = radarAdvancedPipeline\n Builder._specPipelineMap['radar'] = radarSpecPipeline\n}","import { unique } from 'remeda'\nimport { MeasureName } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\n\n/**\n * @description 漏斗图\n * 维度未包含任何`encoding`, 则使用默认映射规则:\n * 1. color: 所有维度与指标名称, 合并映射至颜色通道, 作为图例展示\n * 2. detail: 所有维度与指标名称, 映射至Detail通道\n * 指标未包含任何`encoding`, 则使用默认映射规则:\n * 1. size: 全部指标映射至size通道\n * 2. tooltip: 全部指标映射至Tooltip\n *\n * 维度映射规则:\n * 1. 用户指定的`color`维度映射至颜色通道, 支持多个维度; 若未指定, 则默认将指标名称映射至颜色通道, 作为图例展示\n * 2. 用户指定的`detail`维度映射至Detail通道, 支持多个维度; 若未指定, 则默认将指标名称映射至Detail通道\n * 指标映射规则:\n * 1. 指标未配置`encoding`, 则默认映射至size通道;\n * 2. 用户指定的`size`指标映射至size通道, 支持多个指标;\n * 3. 所有指标均映射到Tooltip\n */\nexport const encodingForFunnel: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\n }\n\n if (hasMeasureEncoding) {\n generateMeasureEncoding(measures, encoding)\n } else {\n generateDefaultMeasureEncoding(measures, encoding)\n }\n\n return { ...advancedVSeed, encoding }\n}\n\n/**\n * --------------------维度--------------------\n */\nconst generateDefaultDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.color = uniqueDimIds.slice(0) // 第0个之后的维度用于颜色\n encoding.detail = uniqueDimIds.slice(0) // 第0个之后的维度用于详情\n encoding.tooltip = uniqueDimIds // 展示所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n encoding.color = unique(dimensions.filter((item) => item.encoding === 'color').map((item) => item.id))\n encoding.detail = unique(dimensions.filter((item) => item.encoding === 'detail').map((item) => item.id))\n if (encoding.color.length === 0) {\n encoding.color = [MeasureName]\n }\n if (encoding.detail.length === 0) {\n encoding.detail = [MeasureName]\n }\n}\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.tooltip = unique(measures.map((item) => item.id))\n encoding.size = unique(measures.filter((item) => item.encoding === 'size' || !item.encoding).map((item) => item.id))\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.tooltip = measures.map((item) => item.id)\n encoding.size = unique(measures.filter((item) => item.encoding === 'size' || !item.encoding).map((item) => item.id))\n const color = unique(measures.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (color.length > 0) {\n encoding.color = [color[0]]\n }\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n annotation,\n funnelConfig,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n encodingForFunnel,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n} from '../pipes'\n\nexport const funnelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingForFunnel,\n buildMeasures,\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n funnelConfig,\n theme,\n annotation,\n]\n","import type { IFunnelChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initFunnel: SpecPipe = (spec, context) => {\n const result = { ...spec } as IFunnelChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { foldInfo, unfoldInfo } = datasetReshapeInfo[0]\n\n result.type = 'funnel'\n result.valueField = foldInfo.measureValue\n result.categoryField = unfoldInfo.encodingColorId\n\n result.padding = 0\n result.isTransform = true\n result.shape = 'rect'\n result.maxSize = '75%'\n result.minSize = '10%'\n result.region = [\n {\n clip: true,\n },\n ]\n\n result.transformLabel = {\n visible: true,\n }\n\n result.animation = true\n\n return result\n}\n","import type { IFunnelChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from './colorAdapter'\n\nexport const colorFunnelStyleFill = (stylePipe: SpecPipe): SpecPipe => {\n return (spec, context) => {\n const result = stylePipe(spec, context) as IFunnelChartSpec\n\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed)) {\n if (result?.funnel?.style) {\n result.funnel.style.fill = {\n field: unfoldInfo.encodingColor,\n scale: 'color',\n }\n }\n }\n\n return result\n }\n}\n","import type { IFunnelChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const funnelStyle: SpecPipe = (spec) => {\n const result = {\n ...spec,\n funnel: {\n style: {},\n },\n } as IFunnelChartSpec\n\n return {\n ...result,\n funnel: {\n style: {\n cornerRadius: 4,\n },\n state: {\n hover: {\n fillOpacity: 0.6,\n },\n },\n },\n }\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n backgroundColor,\n datasetXY,\n datasetPivot,\n initPivot,\n label,\n pivotAdapter,\n pivotColumnDimensions,\n pivotGridStyle,\n pivotIndicators,\n pivotIndicatorsAsRow,\n pivotRowDimensions,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n initFunnel,\n discreteLegend,\n color,\n funnelStyle,\n linearColor,\n colorAdapter,\n colorLegend,\n colorFunnelStyleFill,\n pivotDiscreteLegend,\n pivotColorLegend,\n} from '../pipes'\n\nconst funnel: SpecPipeline = [\n initFunnel,\n backgroundColor,\n datasetXY,\n colorAdapter(color, linearColor),\n label,\n colorAdapter(discreteLegend, colorLegend),\n colorFunnelStyleFill(funnelStyle),\n tooltip,\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 backgroundColor,\n datasetXY,\n colorAdapter(color, linearColor),\n label,\n tooltip,\n colorFunnelStyleFill(funnelStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const funnelSpecPipeline: SpecPipeline = [pivotAdapter(funnel, pivotFunnel)]\n","import { funnelAdvancedPipeline, funnelSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerFunnel = () => {\n Builder._advancedPipelineMap['funnel'] = funnelAdvancedPipeline\n Builder._specPipelineMap['funnel'] = funnelSpecPipeline\n}","import { unique } from 'remeda'\nimport { MeasureName } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\n\n/**\n * @description 热力图\n * 维度未包含任何`encoding`, 则使用默认映射规则:\n * 1. x: 第一个维度, 合并映射至x轴通道\n * 2. y: 第二个(若没有第二个则复用第一个)及其之后的维度, 合并映射至y轴通道\n * 3. color: 所有维度与指标名称, 合并映射至颜色通道, 作为图例展示\n * 4. detail: 所有维度与指标名称, 映射至Detail通道\n * 指标未包含任何`encoding`, 则使用默认映射规则:\n * 1. color: 第一个指标映射至Color通道\n * 2. tooltip: 全部指标映射至Tooltip\n *\n * 维度映射规则:\n * 1. 用户指定的`color`维度映射至颜色通道, 支持多个维度; 若未指定, 则默认将指标名称映射至颜色通道, 作为图例展示\n * 2. 用户指定的`detail`维度映射至Detail通道, 支持多个维度; 若未指定, 则默认将指标名称映射至Detail通道\n * 指标映射规则:\n * 1. 指标未配置`encoding`, 则默认映射至color通道, 只有一个指标时才会映射至color通道\n * 2. 用户指定的`detail`指标映射至Detail通道, 支持多个指标;\n * 3. 所有指标均映射到Tooltip\n */\nexport const encodingForHeatmap: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\n }\n\n if (hasMeasureEncoding) {\n generateMeasureEncoding(measures, encoding)\n } else {\n generateDefaultMeasureEncoding(measures, encoding)\n }\n\n return { ...advancedVSeed, encoding }\n}\n\n/**\n * --------------------维度--------------------\n */\nconst generateDefaultDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n const onlyMeasureName = dimensions.length === 1 && dimensions.find((item) => item.id === MeasureName)\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.x = uniqueDimIds.slice(0, 1) // 第一个维度放置于X轴\n encoding.y = uniqueDimIds.slice(onlyMeasureName ? 0 : 1) // 第2个维度放置于Y轴\n encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1) // 第二个之后的维度用于颜色\n encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1) // 第二个之后的维度用于详情\n encoding.tooltip = uniqueDimIds // 展示所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n encoding.x = unique(dimensions.filter((item) => item.encoding === 'xAxis').map((item) => item.id))\n encoding.y = unique(dimensions.filter((item) => item.encoding === 'yAxis').map((item) => item.id))\n encoding.color = unique(dimensions.filter((item) => item.encoding === 'color').map((item) => item.id))\n encoding.detail = unique(dimensions.filter((item) => item.encoding === 'detail').map((item) => item.id))\n if (encoding.x.length === 0) {\n encoding.x = [dimensions[0].id]\n }\n if (encoding.y.length === 0) {\n if (dimensions.length > 1) {\n encoding.y = dimensions.slice(1).map((item) => item.id)\n } else {\n encoding.y = dimensions.slice(0).map((item) => item.id)\n }\n }\n if (encoding.color.length === 0) {\n encoding.color = [MeasureName]\n }\n if (encoding.detail.length === 0) {\n encoding.detail = [MeasureName]\n }\n}\n\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.tooltip = unique(measures.map((item) => item.id))\n const colorDims = unique(\n measures.filter((item) => item.encoding === 'color' || !item.encoding).map((item) => item.id),\n )\n if (colorDims.length > 0) {\n encoding.color = [colorDims[0]]\n }\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.tooltip = measures.map((item) => item.id)\n const color = unique(measures.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (color.length > 0) {\n encoding.color = [color[0]]\n }\n return encoding\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n annotation,\n markStyle,\n sortXBandAxis,\n heatmapConfig,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n encodingForHeatmap,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n} from '../pipes'\n\nexport const heatmapAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingForHeatmap,\n buildMeasures,\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\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'\nimport { isLinearColor } from './colorAdapter'\n\nexport const colorCellStyleFill = (stylePipe: SpecPipe): SpecPipe => {\n return (spec, context) => {\n const result = stylePipe(spec, context) as IHeatmapChartSpec\n\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed)) {\n if (result?.cell?.style) {\n result.cell.style.fill = {\n field: unfoldInfo.encodingColor,\n scale: 'color',\n }\n }\n }\n\n return result\n }\n}\n","import type { IHeatmapChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const cellStyle: SpecPipe = (spec) => {\n const result = {\n ...spec,\n cell: {\n style: {},\n },\n } as IHeatmapChartSpec\n\n return {\n ...result,\n cell: {\n style: {\n shape: 'rect',\n stroke: '#ffffff',\n lineWidth: 1,\n },\n },\n }\n}\n","import type { IHeatmapChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initHeatmap: SpecPipe = (spec, context) => {\n const result = { ...spec } as IHeatmapChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n result.type = 'heatmap'\n result.direction = 'vertical'\n result.xField = unfoldInfo.encodingX\n result.yField = unfoldInfo.encodingY\n result.seriesField = unfoldInfo.encodingColorId\n result.valueField = foldInfo.measureValue\n result.padding = 0\n result.axes = [\n {\n type: 'band',\n orient: 'left',\n bandPadding: 0,\n },\n {\n type: 'band',\n orient: 'bottom',\n bandPadding: 0,\n },\n ]\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n backgroundColor,\n label,\n 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 labelColorInversion,\n discreteLegend,\n color,\n colorAdapter,\n linearColor,\n colorLegend,\n cellStyle,\n colorCellStyleFill,\n pivotDiscreteLegend,\n pivotColorLegend,\n} from '../pipes'\nimport { initHeatmap } from '../pipes/init/heatmap'\n\nconst heatmap: SpecPipeline = [\n initHeatmap,\n backgroundColor,\n datasetXY,\n colorAdapter(color, linearColor),\n label,\n labelColorInversion,\n colorAdapter(discreteLegend, colorLegend),\n colorCellStyleFill(cellStyle),\n tooltip,\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 backgroundColor,\n datasetXY,\n colorAdapter(color, linearColor),\n label,\n labelColorInversion,\n discreteLegend,\n tooltip,\n colorCellStyleFill(cellStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const heatmapSpecPipeline: SpecPipeline = [pivotAdapter(heatmap, pivotHeatmap)]\n","import { heatmapAdvancedPipeline, heatmapSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerHeatmap = () => {\n Builder._advancedPipelineMap['heatmap'] = heatmapAdvancedPipeline\n Builder._specPipelineMap['heatmap'] = heatmapSpecPipeline\n}","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 linearColorScheme: ['#C2CEFF', '#5766EC'],\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, 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 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 },\n heatmap: {\n ...baseConfig,\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 linearColorScheme: ['#A0CEFF', '#2E62F1'],\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 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 },\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 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 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, DimensionTree } from 'src/types'\nimport { preorderTraverse } from '../tree'\n\n// TODO: 未来可能有用的函数, 需要时再取消注释\n// export 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\n// TODO: 未来可能有用的函数, 需要时再取消注释\n// export 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 { z } from 'zod'\n\nexport type ChartType =\n | 'table'\n | 'pivotTable'\n // cartesian\n | 'line'\n | 'column'\n | 'columnPercent'\n | 'columnParallel'\n | 'bar'\n | 'barPercent'\n | 'barParallel'\n | 'area'\n | 'areaPercent'\n | 'scatter'\n | 'dualAxis'\n // polar\n | 'rose'\n | 'roseParallel'\n | 'pie'\n | 'donut'\n | 'radar'\n // other\n | 'heatmap'\n | 'funnel'\n\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 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 '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'\nimport type { DimensionGroup } from './dimensions'\n\nexport const zDimension = z.object({\n id: z.string(),\n alias: z.string().optional(),\n encoding: z.enum(['xAxis', 'yAxis', 'angle', 'color', 'detail', 'tooltip', 'label', 'row', 'column']).optional(),\n})\nexport const zDimensionGroup: z.ZodType<DimensionGroup> = z.object({\n id: z.string(),\n alias: z.string().optional(),\n get children() {\n return z.array(zDimensionGroup.or(zDimension)).optional()\n },\n})\nexport const zDimensions = z.array(zDimension)\nexport const zDimensionTree = z.array(zDimensionGroup.or(zDimension))\n","import { z } from 'zod'\n\nexport interface NumFormat {\n /**\n * @description 数字格式化类型, 支持数值(十进制)、百分比(%)、千分比(‰)、科学计数法\n * @default 'number'\n */\n type?: 'number' | 'percent' | 'permille' | 'scientific'\n\n /**\n * @description 数值格式化比例, 百分比和千分比需要设置比例\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 encoding: z\n .enum([\n 'primaryYAxis',\n 'secondaryYAxis',\n 'xAxis',\n 'yAxis',\n 'angle',\n 'radius',\n 'size',\n 'color',\n 'label',\n 'tooltip',\n 'detail',\n 'column',\n ])\n .optional(),\n parentId: z.string().optional(),\n})\n\nexport const zMeasureGroup: z.ZodType<MeasureGroup> = z.object({\n id: z.string(),\n alias: z.string().optional(),\n get children() {\n return z.array(zMeasureGroup.or(zMeasure)).optional()\n },\n})\n\nexport const zMeasures = z.array(zMeasure)\nexport const zMeasureTree = z.array(zMeasureGroup.or(zMeasure))\n","import { z } from 'zod'\nimport { zMeasure } from './zMeasures'\n\nexport const zDualMeasure = z.object({\n id: z.string(),\n\n primaryMeasures: z.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'\nimport { zMeasure } from './zMeasures'\n\nexport const zScatterMeasure = z.object({\n id: z.string(),\n\n xMeasures: z.array(zMeasure).or(zMeasure).optional(),\n\n yMeasures: z.array(zMeasure).or(zMeasure).optional(),\n})\n\nexport const zScatterMeasures = z.array(zScatterMeasure)\n","import { z } from 'zod'\n\nexport const zFoldInfo = z.object({\n foldMap: z.record(z.string(), z.string().or(z.undefined())),\n colorRange: z.array(z.number()),\n measureRange: z.array(z.number()),\n measureId: z.string(),\n measureName: z.string(),\n measureValue: z.string(),\n})\nexport const zUnfoldInfo = z.object({\n encodingX: z.string(),\n encodingY: z.string(),\n encodingColor: z.string(),\n encodingColorId: z.string(),\n encodingDetail: z.string(),\n encodingAngle: z.string(),\n colorItems: z.array(z.string()),\n colorIdMap: z.record(z.string(), z.string()),\n})\n\nexport const zDatasetReshapeInfo = z.array(\n z.object({\n id: z.string(),\n index: z.number(),\n foldInfo: zFoldInfo,\n foldInfoList: z.array(zFoldInfo).nullish(),\n unfoldInfo: zUnfoldInfo,\n }),\n)\n","import { z } from 'zod'\n\nexport const zEncoding = z.object({\n x: z.array(z.string()).nullish(),\n y: z.array(z.string()).nullish(),\n angle: z.array(z.string()).nullish(),\n radius: z.array(z.string()).nullish(),\n detail: z.array(z.string()).nullish(),\n\n color: z.array(z.string()).nullish(),\n size: z.array(z.string()).nullish(),\n tooltip: z.array(z.string()).nullish(),\n label: z.array(z.string()).nullish(),\n\n row: z.array(z.string()).nullish(),\n column: z.array(z.string()).nullish(),\n\n group: z.array(z.string()).nullish().describe('已弃用, 请使用颜色替代'),\n})\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 const zCrosshairRect = z.object({\n visible: z.boolean().nullish(),\n rectColor: z.string().nullish(),\n labelColor: z.string().nullish(),\n labelVisible: z.boolean().nullish(),\n labelBackgroundColor: z.string().nullish(),\n})\n","import { z } from 'zod'\n\nexport const 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 linearColorScheme: z.array(z.string()).nullish(),\n colorMapping: z.record(z.string(), z.string()).nullish(),\n})\n\nexport const zLinearColor = z.object({\n linearColorScheme: z.array(z.string()).nullish(),\n})\n\nexport type Color = {\n /**\n * @description 离散颜色配色方案, 颜色配色方案用于定义图表中不同元素的颜色\n * @example ['#FFCDD2,#F8BBD0,#E1BEE7,#D1C4E9,#C5CAE9,#BBDEFB,#B3E5FC,#B2EBF2,#B2DFDB,#C8E6C9,#DCEDC8,#F0F4C3,#FFF9C4,#FFECB3,#FFE0B2']\n */\n colorScheme?: string[]\n /**\n * @description 线性渐变颜色配色方案, 线性渐变颜色配色方案用于定义图表中不同元素的颜色\n * @example ['#FFCDD2, #F8BBD0]\n */\n linearColorScheme?: string[]\n /**\n * @description 颜色映射, 颜色映射用于将数据值映射到具体的颜色\n * @example\n * {\n * 'profit': 'red',\n * 'sales': 'blue',\n * }\n */\n colorMapping?: Record<string, string>\n}\n\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 * @description 图例边框是否开启\n * @warning 仅离散图例生效\n * @default true\n * @example border: true\n */\n border?: boolean\n /**\n * @description 图例字体大小\n * @example labelFontSize: 10\n */\n labelFontSize?: number\n /**\n * @description 图例字体颜色\n * @example labelFontColor: '#212121'\n */\n labelFontColor?: string\n /**\n * @description 图例字体粗细\n * @example labelFontWeight: 400\n */\n labelFontWeight?: number | string\n /**\n * @description 图例形状\n * @warning 仅离散图例生效\n * @example shapeType: 'circle'\n */\n shapeType?:\n | 'circle'\n | 'cross'\n | 'diamond'\n | 'square'\n | 'arrow'\n | 'arrow2Left'\n | 'arrow2Right'\n | 'wedge'\n | 'thinTriangle'\n | 'triangle'\n | 'triangleUp'\n | 'triangleDown'\n | 'triangleRight'\n | 'triangleLeft'\n | 'stroke'\n | 'star'\n | 'wye'\n | 'rect'\n | 'arrowLeft'\n | 'arrowRight'\n | 'rectRound'\n | 'roundLine'\n /**\n * 图例位置\n * @default 'right'\n * @example position: 'rightTop'\n */\n position?:\n | 'left'\n | 'leftTop'\n | 'leftBottom'\n | 'lt'\n | 'lb'\n | 'top'\n | 'topLeft'\n | 'topRight'\n | 'tl'\n | 'tr'\n | 'right'\n | 'rightTop'\n | 'rightBottom'\n | 'rt'\n | 'rb'\n | 'bottom'\n | 'bottomLeft'\n | 'bottomRight'\n | 'bl'\n | 'br'\n\n /**\n * @description 存在大量图例时, 最大列数 或 图例最大行数\n * 如果position为水平方向(bottom, bottomLeft, bottomRight, bl, br, top, topLeft, topRight, tl, tr), maxSize控制显示的列数\n * 如果position为垂直方向(left, leftTop, leftBottom, lt, lb, right, rightTop, rightBottom, rt, rb), maxSize控制显示的行数\n * \n * @warning 仅离散图例生效\n * @example maxSize: 2\n * @default 1\n */\n maxSize?: number\n}\n\nexport const zLegend = z.object({\n enable: z.boolean().default(true).nullish(),\n border: z.boolean().default(true).nullish(),\n maxSize: z.number().default(1).nullish(),\n shapeType: z\n .enum([\n 'circle',\n 'cross',\n 'diamond',\n 'square',\n 'arrow',\n 'arrow2Left',\n 'arrow2Right',\n 'wedge',\n 'thinTriangle',\n 'triangle',\n 'triangleUp',\n 'triangleDown',\n 'triangleRight',\n 'triangleLeft',\n 'stroke',\n 'star',\n 'wye',\n 'rect',\n 'arrowLeft',\n 'arrowRight',\n 'rectRound',\n 'roundLine',\n ])\n .default('rectRound')\n .nullish(),\n position: z\n .enum([\n 'left',\n 'leftTop',\n 'leftBottom',\n 'lt',\n 'lb',\n 'top',\n 'topLeft',\n 'topRight',\n 'tl',\n 'tr',\n 'right',\n 'rightTop',\n 'rightBottom',\n 'rt',\n 'rb',\n 'bottom',\n 'bottomLeft',\n 'bottomRight',\n 'bl',\n 'br',\n ])\n .default('bottom')\n .nullish(),\n 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'\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\n\nexport const zDualAxisConfig = z.object({\n backgroundColor: zBackgroundColor.nullish(),\n label: zLabel.nullish(),\n color: zColor.nullish(),\n tooltip: zTooltip.nullish(),\n legend: zLegend.nullish(),\n\n dualChartType: z.array(zDualChartType).or(zDualChartType).nullish(),\n alignTicks: z.array(z.boolean()).or(z.boolean()).nullish(),\n primaryYAxis: z.array(zYLinearAxis).or(zYLinearAxis).nullish(),\n secondaryYAxis: z.array(zYLinearAxis).or(zYLinearAxis).nullish(),\n\n xAxis: zXBandAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n})\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>\n\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\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 */\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 */\n labelColor?: string\n /**\n * 标签字体大小\n */\n labelFontSize?: number\n /**\n * 标签字体粗细\n */\n labelFontWeight?: number\n /**\n * 标签旋转角度\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 */\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 */\n tickColor?: string\n /**\n * 刻度尺寸\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 */\n titleText?: string\n /**\n * 标题颜色\n */\n titleColor?: string\n /**\n * 标题字体大小\n */\n titleFontSize?: number\n /**\n * 标题字体粗细\n */\n titleFontWeight?: number\n }\n\n /**\n * X轴网格线\n * @default false\n */\n grid?: {\n visible?: boolean\n /**\n * 网格线颜色\n */\n gridColor?: string\n /**\n * 网格线宽度\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\n/**\n * @description 指标选择器, 用于选择数据项中指标字段的值\n */\nexport type MeasureSelector = {\n /**\n * @description 指标字段, measures 某一项的 id\n */\n field: string\n /**\n * @description 操作符\n * - =: 选择数据项中指标字段的值等于 value 的数据项\n * - ==: 选择数据项中指标字段的值等于 value 的数据项\n * - !=: 选择数据项中指标字段的值不等于 value 的数据项\n * - >: 选择数据项中指标字段的值大于 value 的数据项\n * - <: 选择数据项中指标字段的值小于 value 的数据项\n * - >=: 选择数据项中指标字段的值大于等于 value 的数据项\n * - <=: 选择数据项中指标字段的值小于等于 value 的数据项\n * - between: 选择数据项中指标字段的值在 value 之间的 data item\n */\n operator?: '=' | '==' | '!=' | '>' | '<' | '>=' | '<=' | 'between'\n /**\n * @description 操作符\n * - =: 选择数据项中指标字段的值等于 value 的数据项\n * - ==: 选择数据项中指标字段的值等于 value 的数据项\n * - !=: 选择数据项中指标字段的值不等于 value 的数据项\n * - >: 选择数据项中指标字段的值大于 value 的数据项\n * - <: 选择数据项中指标字段的值小于 value 的数据项\n * - >=: 选择数据项中指标字段的值大于等于 value 的数据项\n * - <=: 选择数据项中指标字段的值小于等于 value 的数据项\n * - between: 选择数据项中指标字段的值在 value 之间的 data item\n * same as operator\n */\n op?: '=' | '==' | '!=' | '>' | '<' | '>=' | '<=' | 'between'\n /**\n * @description 选择数据项中指标字段的值\n * - 仅 op 为 between 时, value 为长度为2的数组, 数组中的元素为指标字段的最小值和最大值\n * - 其他情况, value 为指标字段的单个值\n */\n value: string | number | Array<string | number>\n // /**\n // * @description 是否使用原始数据进行数据匹配, 开启后会有更多的数据被匹配到\n // * 若下述数据, measures 仅设置了 value, field 为 isHigh 或 isLow, op 为 =, value 为 1,\n // * 关闭useOrigin时, 数据项并不会考虑measures之外的字段, 因此field为isHigh或isLow的字段会被忽略\n // * 开启useOrigin时, 会直接使用整个数据项进行匹配\n // * [\n // * {value: 100, isHigh: 1, isLow: 0},\n // * {value: 200, isHigh: 0, isLow: 1},\n // * {value: 300, isHigh: 1, isLow: 0},\n // * ]\n // * @default false\n // */\n // useOrigin?: boolean\n}\n\n/**\n * @description 维度选择器, 用于选择数据项中维度字段的值\n */\nexport type DimensionSelector = {\n /**\n * @description 维度字段, dimensions 某一项的 id\n */\n field: string\n /**\n * @description 操作符\n * - in: 选择数据项中维度字段的值在 value 中的数据项\n * - not in: 选择数据项中维度字段的值不在 value 中的数据项\n */\n operator?: 'in' | 'not in'\n /**\n * @description 操作符\n * - in: 选择数据项中维度字段的值在 value 中的数据项\n * - not in: 选择数据项中维度字段的值不在 value 中的数据项\n * same as operator\n */\n op?: 'in' | 'not in'\n /**\n * @description 选择数据项中维度字段的值, 支持数组\n */\n value: string | number | Array<string | number>\n // /**\n // * @description 是否使用原始数据进行数据匹配, 开启后会有更多的数据被匹配到\n // * 若下述数据, dimensions 仅设置了 name, field 为 name, op 为 =, value 为 \"high\",\n // * 关闭useOrigin时, 数据项并不会考虑dimensions之外的字段, 因此field为name的字段会被忽略\n // * 开启useOrigin时, 会直接使用整个数据项进行匹配\n // * [\n // * {name: \"low\", isHigh: \"false\", isLow: \"true\"},\n // * {name: \"low\", isHigh: \"false\", isLow: \"true\"},\n // * {name: \"high\", isHigh: \"true\", isLow: \"false\"},\n // * ]\n // * @default false\n // */\n // useOrigin?: boolean\n}\n\nexport type Selector = ValueSelector | PartialDatumSelector | MeasureSelector | DimensionSelector\n\nexport type Selectors = Array<Selector>\n\nexport const zSelector = z.union([\n z.string(),\n z.number(),\n z.object({\n field: z.string(),\n operator: z.enum(['=', '==', '!=', '>', '<', '>=', '<=', 'between']).nullish(),\n op: z.enum(['=', '==', '!=', '>', '<', '>=', '<=', 'between']).nullish(),\n value: z.union([z.string(), z.number(), z.array(z.union([z.string(), z.number()]))]),\n }),\n z.object({\n field: z.string(),\n operator: z.enum(['in', 'not in']).nullish(),\n op: z.enum(['in', 'not in']).nullish(),\n value: z.union([z.string(), z.number(), z.array(z.union([z.string(), z.number()]))]),\n }),\n])\n\nexport const zSelectors = z.array(zSelector)\n","import { z } from 'zod'\nimport { zSelector, zSelectors, type Selector, type Selectors } from '../../dataSelector'\n\nexport type BarStyle = {\n /**\n * 数据选择器\n * @description\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n * @type {Selector | Selectors}\n * @example 数值选择器\n * selector = \"tool\"\n * selector = [\"tool\", \"book\"]\n * selector = 100\n * selector = [100, 200]\n * @example 局部数据选择器\n * selector = { profit: 100 }\n * selector = [{ profit: 100 }, { profit: 200 }]\n * @example 条件维度选择器\n * selector = {\n * field: 'category',\n * operator: 'in',\n * value: 'tool'\n * }\n * selector = {\n * field: 'category',\n * operator: 'not in',\n * value: 'book'\n * }\n * @example 条件指标选择器\n * selector = {\n * field: 'profit',\n * operator: '>=',\n * value: 100\n * }\n * selector = {\n * field: 'profit',\n * operator: 'between'\n * value: [100, 300]\n * }\n */\n selector?: Selector | Selectors\n\n /**\n * @description 柱图元(矩形图元)是否可见\n */\n barVisible?: boolean\n /**\n * @description 柱图元(矩形图元)颜色\n * @type {string}\n */\n barColor?: string\n /**\n * @description 柱图元(矩形图元)颜色透明度\n * @type {number}\n */\n barColorOpacity?: number\n /**\n * @description 柱图元(矩形图元)边框颜色\n * @type {string}\n */\n barBorderColor?: string\n /**\n * @description 柱图元(矩形图元)边框宽度\n * @type {number}\n */\n barBorderWidth?: number\n /**\n * @description 柱图元(矩形图元)边框样式\n * @type {number}\n * @example solid\n * @example dashed\n * @example dotted\n */\n barBorderStyle?: 'solid' | 'dashed' | 'dotted'\n /**\n * @description 柱图元(矩形图元)圆角\n * @type {number | number[]}\n * @example 4\n * @example [0, 0, 10, 10]\n */\n barRadius?: number | number[]\n}\n\nexport const zBarStyle = z.object({\n selector: z.union([zSelector, zSelectors]).nullish(),\n barVisible: z.boolean().nullish(),\n barColor: z.string().nullish(),\n barColorOpacity: z.number().nullish(),\n barBorderColor: z.string().nullish(),\n barBorderWidth: z.number().nullish(),\n barBorderStyle: z.union([z.literal('solid'), z.literal('dashed'), z.literal('dotted')]).nullish(),\n barRadius: z.union([z.number(), z.array(z.number())]).nullish(),\n})\n","import { z } from 'zod'\nimport { zSelector, zSelectors, type Selector, type Selectors } from '../../dataSelector'\n\nexport type PointStyle = {\n /**\n * 数据选择器\n * @description\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n * @type {Selector | Selectors}\n * @example 数值选择器\n * selector = \"tool\"\n * selector = [\"tool\", \"book\"]\n * selector = 100\n * selector = [100, 200]\n * @example 局部数据选择器\n * selector = { profit: 100 }\n * selector = [{ profit: 100 }, { profit: 200 }]\n * @example 条件维度选择器\n * selector = {\n * field: 'category',\n * operator: 'in',\n * value: 'tool'\n * }\n * selector = {\n * field: 'category',\n * operator: 'not in',\n * value: 'book'\n * }\n * @example 条件指标选择器\n * selector = {\n * field: 'profit',\n * operator: '>=',\n * value: 100\n * }\n * selector = {\n * field: 'profit',\n * operator: 'between'\n * value: [100, 300]\n * }\n */\n selector?: Selector | Selectors\n\n /**\n * @description 点是否可见\n */\n pointVisible?: boolean\n /**\n * 点大小\n * @description 点大小\n */\n pointSize?: number\n /**\n * 点图元颜色\n * @description 点图元颜色\n */\n pointColor?: string\n /**\n * 点图元颜色透明度\n * @description 点图元颜色透明度\n */\n pointColorOpacity?: number\n /**\n * 点图元边框颜色\n * @description 点图元边框颜色\n */\n pointBorderColor?: string\n /**\n * 点图元边框宽度\n * @description 点图元边框宽度\n */\n pointBorderWidth?: number\n /**\n * 点图元边框样式\n * @description 点图元边框样式\n * @example solid\n * @example dashed\n * @example dotted\n */\n pointBorderStyle?: 'solid' | 'dashed' | 'dotted'\n}\n\nexport const zPointStyle = z.object({\n selector: z.union([zSelector, zSelectors]).nullish(),\n pointVisible: z.boolean().nullish(),\n pointSize: z.number().nullish(),\n pointColor: z.string().nullish(),\n pointColorOpacity: z.number().nullish(),\n pointBorderColor: z.string().nullish(),\n pointBorderWidth: z.number().nullish(),\n pointBorderStyle: z.union([z.enum(['solid', 'dashed', 'dotted'])]).nullish(),\n})\n","import { z } from 'zod'\nimport { zSelector, zSelectors, type Selector, type Selectors } from '../../dataSelector'\n\nexport type LineStyle = {\n /**\n * 数据选择器\n * @description\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n * @type {Selector | Selectors}\n * @example 数值选择器\n * selector = \"tool\"\n * selector = [\"tool\", \"book\"]\n * selector = 100\n * selector = [100, 200]\n * @example 局部数据选择器\n * selector = { profit: 100 }\n * selector = [{ profit: 100 }, { profit: 200 }]\n * @example 条件维度选择器\n * selector = {\n * field: 'category',\n * operator: 'in',\n * value: 'tool'\n * }\n * selector = {\n * field: 'category',\n * operator: 'not in',\n * value: 'book'\n * }\n * @example 条件指标选择器\n * selector = {\n * field: 'profit',\n * operator: '>=',\n * value: 100\n * }\n * selector = {\n * field: 'profit',\n * operator: 'between'\n * value: [100, 300]\n * }\n */\n selector?: Selector | Selectors\n\n /**\n * @description 线段是否可见\n */\n lineVisible?: boolean\n /**\n * @description 线段是否平滑\n * @type {boolean}\n */\n lineSmooth?: boolean\n\n /**\n * @description 线段颜色\n */\n lineColor?: string\n /**\n * @description 线段颜色透明度\n */\n lineColorOpacity?: number\n /**\n * @description 线段宽度\n */\n lineWidth?: number\n /**\n * @description 线段样式\n * @example `lineStyle: 'solid'`\n */\n lineStyle?: 'solid' | 'dashed' | 'dotted'\n}\n\nexport const zLineStyle = z.object({\n selector: z.union([zSelector, zSelectors]).nullish(),\n lineVisible: z.boolean().nullish(),\n lineSmooth: z.boolean().nullish(),\n lineColor: z.string().nullish(),\n lineColorOpacity: z.number().nullish(),\n lineWidth: z.number().nullish(),\n lineStyle: z.union([z.enum(['solid', 'dashed', 'dotted'])]).nullish(),\n})\n","import { z } from 'zod'\nimport { zSelector, zSelectors } from '../../dataSelector'\n\nexport const zAreaStyle = z.object({\n selector: z.union([zSelector, zSelectors]).nullish(),\n areaVisible: z.boolean().nullish(),\n areaColor: z.string().nullish(),\n areaColorOpacity: z.number().nullish(),\n})\n","import { z } from 'zod'\nimport { zBarStyle } from './barStyle'\nimport { zPointStyle } from './pointStyle'\nimport { zLineStyle } from './lineStyle'\nimport { zAreaStyle } from './zAreaStyle'\n\nexport const zMarkStyle = z.object({\n barStyle: zBarStyle.or(z.array(zBarStyle)).nullish(),\n pointStyle: zPointStyle.or(z.array(zPointStyle)).nullish(),\n lineStyle: zLineStyle.or(z.array(zLineStyle)).nullish(),\n areaStyle: zAreaStyle.or(z.array(zAreaStyle)).nullish(),\n})\n\nexport type MarkStyle = z.infer<typeof zMarkStyle>\n","import { zSelector, zSelectors } from '../../dataSelector'\nimport { z } from 'zod'\n\nexport const 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","import { zSelector, zSelectors } from '../../dataSelector'\nimport { z } from 'zod'\n\nexport const zAnnotationHorizontalLine = z.object({\n selector: z.union([zSelector, zSelectors]).nullish(),\n yValue: z.union([z.number(), z.string(), z.array(z.union([z.number(), z.string()]))]).nullish(),\n text: z.string().or(z.array(z.string())).nullish(),\n textPosition: z\n .enum(['outsideStart', 'outsideEnd', 'outsideMiddle', 'insideStart', 'insideMiddle', 'insideEnd'])\n .default('insideEnd')\n .nullish(),\n textColor: z.string().default('#ffffff').nullish(),\n textFontSize: z.number().default(12).nullish(),\n textFontWeight: z.number().default(400).nullish(),\n textAlign: z.enum(['left', 'right', 'center']).default('right').nullish(),\n textBaseline: z.enum(['top', 'middle', 'bottom']).default('top').nullish(),\n\n lineVisible: z.boolean().default(true).nullish(),\n lineColor: z.string().default('#212121').nullish(),\n lineWidth: z.number().default(1).nullish(),\n lineStyle: z\n .union([z.literal('solid'), z.literal('dashed'), z.literal('dotted')])\n .default('dashed')\n .nullish(),\n\n textBackgroundVisible: z.boolean().default(true).nullish(),\n textBackgroundColor: z.string().default('#212121').nullish(),\n textBackgroundBorderColor: z.string().default('#212121').nullish(),\n textBackgroundBorderRadius: z.number().default(4).nullish(),\n textBackgroundBorderWidth: z.number().default(1).nullish(),\n textBackgroundPadding: z.number().default(2).nullish(),\n})\n","import { zSelector, zSelectors } from '../../dataSelector'\nimport { z } from 'zod'\n\nexport const zAnnotationArea = z.object({\n selector: z.union([zSelector, zSelectors]),\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})\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 zEncoding,\n zLabel,\n zLegend,\n zLineStyle,\n zMeasureTree,\n zPointStyle,\n zSort,\n zSortLegend,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\n\nimport { z } from 'zod'\n\nexport const zLine = z.object({\n chartType: z.literal('line'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairLine: zCrosshairLine.nullish(),\n sort: zSort.nullish(),\n sortLegend: zSortLegend.nullish(),\n theme: zTheme.nullish(),\n pointStyle: z.array(zPointStyle).or(zPointStyle).nullish(),\n lineStyle: z.array(zLineStyle).or(zLineStyle).nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\n\nexport const zColumn = z.object({\n chartType: z.literal('column'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n 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 zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\n\nexport const zColumnParallel = z.object({\n chartType: z.literal('columnParallel'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n stackCornerRadius: zStackCornerRadius.nullish(),\n 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 zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\n\nimport { z } from 'zod'\n\nexport const zColumnPercent = z.object({\n chartType: z.literal('columnPercent'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n stackCornerRadius: zStackCornerRadius.nullish(),\n 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 zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXLinearAxis,\n zYBandAxis,\n} from '../../properties'\n\nimport { z } from 'zod'\n\nexport const zBar = z.object({\n chartType: z.literal('bar'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXLinearAxis.nullish(),\n yAxis: zYBandAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n stackCornerRadius: zStackCornerRadius.nullish(),\n 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 zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXLinearAxis,\n zYBandAxis,\n} from '../../properties'\n\nexport const zBarParallel = z.object({\n chartType: z.literal('barParallel'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXLinearAxis.nullish(),\n yAxis: zYBandAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n stackCornerRadius: zStackCornerRadius.nullish(),\n 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 zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXLinearAxis,\n zYBandAxis,\n} from '../../properties'\n\nexport const zBarPercent = z.object({\n chartType: z.literal('barPercent'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXLinearAxis.nullish(),\n yAxis: zYBandAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n stackCornerRadius: zStackCornerRadius.nullish(),\n theme: zTheme.nullish(),\n barStyle: z.array(zBarStyle).or(zBarStyle).nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zAreaStyle,\n zBackgroundColor,\n zColor,\n zCrosshairLine,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zLegend,\n zLineStyle,\n zMeasureTree,\n zPointStyle,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\n\nexport const zArea = z.object({\n chartType: z.literal('area'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairLine: zCrosshairLine.nullish(),\n theme: zTheme.nullish(),\n pointStyle: z.array(zPointStyle).or(zPointStyle).nullish(),\n lineStyle: z.array(zLineStyle).or(zLineStyle).nullish(),\n areaStyle: z.array(zAreaStyle).or(zAreaStyle).nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n locale: zLocale.nullish(),\n})\n","import { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zAreaStyle,\n zBackgroundColor,\n zColor,\n zCrosshairLine,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zLegend,\n zLineStyle,\n zMeasureTree,\n zPointStyle,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\n\nimport { z } from 'zod'\n\nexport const zAreaPercent = z.object({\n chartType: z.literal('areaPercent'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairLine: zCrosshairLine.nullish(),\n theme: zTheme.nullish(),\n pointStyle: z.array(zPointStyle).or(zPointStyle).nullish(),\n lineStyle: z.array(zLineStyle).or(zLineStyle).nullish(),\n areaStyle: z.array(zAreaStyle).or(zAreaStyle).nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zColor,\n zCrosshairLine,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zPointStyle,\n zScatterMeasures,\n zTheme,\n zTooltip,\n zXLinearAxis,\n zYLinearAxis,\n} from '../../properties'\n\nexport const zScatter = z.object({\n chartType: z.literal('scatter'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n scatterMeasures: zScatterMeasures.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n 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 alignTicks: z.array(z.boolean()).or(z.boolean()).nullish(),\n \n primaryYAxis: z.array(zYLinearAxis).or(zYLinearAxis).nullish(),\n secondaryYAxis: z.array(zYLinearAxis).or(zYLinearAxis).nullish(),\n xAxis: zXBandAxis.nullish(),\n\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n\n crosshairRect: zCrosshairRect.nullish(),\n sort: zSort.nullish(),\n sortLegend: zSortLegend.nullish(),\n theme: zTheme.nullish(),\n\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 zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zTheme,\n zTooltip,\n} from '../../properties'\n\nexport const zRose = z.object({\n chartType: z.literal('rose'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n theme: zTheme.nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zBackgroundColor,\n zColor,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zTheme,\n zTooltip,\n} from '../../properties'\n\nexport const zRoseParallel = z.object({\n chartType: z.literal('roseParallel'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n theme: zTheme.nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zBackgroundColor,\n zColor,\n zDataset,\n zDimensions,\n zEncoding,\n 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 encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n theme: zTheme.nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\n\nimport {\n zBackgroundColor,\n zColor,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zTheme,\n zTooltip,\n} from '../../properties'\n\nexport const zDonut = z.object({\n chartType: z.literal('donut'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: 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 zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zTheme,\n zTooltip,\n} from '../../properties'\n\nexport const zRadar = z.object({\n chartType: z.literal('radar'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n theme: zTheme.nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zBackgroundColor,\n zColor,\n zColorLegend,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zMeasureTree,\n zTheme,\n zTooltip,\n} from '../../properties'\n\nexport const zFunnel = z.object({\n chartType: z.literal('funnel'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zColorLegend.nullish(),\n tooltip: zTooltip.nullish(),\n theme: zTheme.nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\n\nimport {\n zBackgroundColor,\n zColor,\n zColorLegend,\n zDataset,\n zDimensions,\n zLabel,\n zMeasureTree,\n zTheme,\n zTooltip,\n} from '../../properties'\n\nexport const zHeatmap = z.object({\n chartType: z.literal('heatmap'),\n dataset: zDataset.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zColorLegend.nullish(),\n tooltip: zTooltip.nullish(),\n theme: zTheme.nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\n\nimport { zBar } from './chartType/bar'\nimport { zBarParallel } from './chartType/barParallel'\nimport { zColumn } from './chartType/column'\nimport { zColumnParallel } from './chartType/columnParallel'\nimport { zColumnPercent } from './chartType/columnPercent'\nimport { zLine } from './chartType/line'\nimport { zRose } from './chartType/rose'\nimport { zBarPercent } from './chartType/barPercent'\nimport { zPie } from './chartType/pie'\nimport { zDonut } from './chartType/donut'\nimport { zArea } from './chartType/area'\nimport { zAreaPercent } from './chartType/areaPercent'\nimport {\n zDualAxis,\n zFunnel,\n zHeatmap,\n zPivotTable,\n zRadar,\n zRoseParallel,\n zScatter,\n zTable,\n} from './chartType'\n\nexport const zVSeed = z.discriminatedUnion('chartType', [\n zTable,\n zPivotTable,\n // cartesian\n zLine,\n zColumn,\n zColumnParallel,\n zColumnPercent,\n zBar,\n zBarParallel,\n zBarPercent,\n zArea,\n zAreaPercent,\n zScatter,\n zDualAxis,\n // polar\n zPie,\n zDonut,\n zRose,\n zRoseParallel,\n zRadar,\n // other\n zFunnel,\n zHeatmap,\n])\n","import { z } from 'zod'\nimport { zChartType } from './properties/chartType'\nimport { zDataset } from './properties/dataset'\nimport { zDimensionTree } from './properties/dimensions'\nimport { zMeasureTree } from './properties/measures'\nimport { zEncoding } from './properties/encoding'\nimport { zDatasetReshapeInfo } from './properties/datasetReshapeInfo'\nimport { zTheme, zCustomThemeConfig } from './properties/theme'\nimport { zConfig } from './properties/config'\nimport { zAnalysis, zAnnotation, 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","defaultMeasures","measures","dataset","top100dataset","sample","Object","key","item","undefined","measure","preorderTraverse","tree","callback","stack","node","stop","children","i","child","findMeasureById","id","findFirstMeasure","findAllMeasures","defaultDimensions","dimensions","newDimensions","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","ORIGINAL_DATA","Separator","FoldMeasureName","FoldMeasureId","FoldMeasureValue","MeasureName","FoldPrimaryMeasureValue","FoldSecondaryMeasureValue","FoldXMeasureValue","FoldYMeasureValue","XEncoding","YEncoding","AngleEncoding","DetailEncoding","ColorEncoding","ColorIdEncoding","defaultMeasureName","MeaName","encodingForPivotTable","vseedMeasures","hasDimensionEncoding","hasMeasureEncoding","encoding","generateDimensionEncoding","generateDefaultDimensionEncoding","generateMeasureEncoding","generateDefaultMeasureEncoding","uniqueDimIds","foldMeasures","options","measureId","measureName","measureValue","colorMeasureId","foldInfo","ids","j","omit","alias","Math","Infinity","reshapePivotTable","newDatasets","pivotTableConfig","pivotTableAdvancedPipeline","initPivotTable","pivotColumns","pivotRows","rows","pivotIndicators","col","row","table","foldMeasureId","rowHeaderStyle","cornerHeaderStyle","hoverCellColor","AggregationType","SortType","dataConfig","aggregationRules","pivotTableSpecPipeline","registerPivotTable","encodingForLine","color","isMeasureTreeWithChildren","isMeasureTreeWithParentId","measureDepth","depth","isTable","isPivotTable","isVTable","isVChart","isPivotChart","parentIds","hasRowOrColumnDimension","dimension","hasMeasureGroup","buildMeasures","generateMeasuresByParentId","basicMeasuresToMeasureTree","measureTree","parent","pivotAdapter","pivotPipeline","usePivotChart","unfoldDimensions","separator","colorItemAsId","unfoldInfo","x","y","detail","angle","angleDimensions","xDimensions","yDimensions","colorDimensions","detailDimensions","Set","applyEncoding","colorItem","colorId","dataReshapeByEncoding","foldMeasureName","foldMeasureValue","foldedDataset","finalDataset","colorAdapter","ordinalPipe","linearPipe","isLinearColor","measureIdList","getColorMeasureId","reshapeWithEncoding","hasEncoding","uniqueBy","pivotReshapeWithEncoding","measureGroups","datasets","measureGroup","groupId","newSubDataset","reshapeInfo","sortXBandAxis","sortAxis","xField","axisOrderResult","calcOrder","sortConfig","order","orderBy","res","sort","a","b","aValue","bValue","sortLegend","nameMap","pre","orderRes","itemNameOrId","lineConfig","columnConfig","pieConfig","areaConfig","areaPercentConfig","scatterConfig","barConfig","barParallelConfig","barPercentConfig","columnParallelConfig","columnPercentConfig","donutConfig","roseConfig","roseParallelConfig","funnelConfig","heatmapConfig","radarConfig","markStyle","annotation","lineAdvancedPipeline","initLine","baseConfig","colorScheme","colorMapping","createSpecifiedForColorMapping","matchedList","colors","accurateMap","name","colorValue","accurateMatchedList","colorKey","colorAlias","fuzzyMap","fuzzyMatchedList","linearColor","linearColorScheme","datasetXY","analysis","orderMapping","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","DUAL_AXIS_CHART_COLUMN_Z_INDEX","DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX","yLinear","zero","nice","inverse","max","min","log","logBase","linearAxis","verticalCrosshairLine","lineColor","labelColor","labelVisible","labelBackgroundColor","crosshair","discreteLegend","legend","enable","position","labelFontColor","labelFontSize","labelFontWeight","maxSize","border","shapeType","orient","legendPosition","items","colorLegend","colorPointStyleFill","stylePipe","selector","vchartDatum","selectorMode","vchartKeys","k","selectors","isValueSelector","v","isMeasureSelector","op","selectorValueArr","isDimensionSelector","isPartialDatumSelector","pointStyle","pointStyles","customMap","style","pointBorderColor","pointBorderStyle","pointBorderWidth","pointColor","pointColorOpacity","pointSize","pointVisible","lineDash","pointStateDimensionHover","point","pointStateHover","colorLineStyleFill","lineStyle","lineStyles","lineGroups","groupBy","lineColorOpacity","lineSmooth","lineWidth","lineVisible","dashSegment","dashGap","curveType","lineData","formatValue","tooltip","colorName","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","generateOneMarkLine","isArray","xValueArr","specMarkLine","newMarkLine","annotationHorizontalLine","annotationHorizontalLineList","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","newDataset","newDatasetReshapeInfo","newContext","chartSpec","pivotIndicatorsAsRow","pivotIndicatorsAsCol","datasetPivot","pivotRowDimensions","rowDimensions","pivotColumnDimensions","columnDimensions","pivotDiscreteLegend","colorSpecified","legends","pivotColorLegend","pivotLine","lineSpecPipeline","registerLine","encodingForColumn","onlyMeasureName","columnAdvancedPipeline","initColumn","stackCornerRadius","_","stackInverse","verticalCrosshairRect","rectColor","colorBarStyleFill","barStyle","showStroke","barStyles","barBorderColor","barBorderStyle","barBorderWidth","barColor","barColorOpacity","barRadius","barVisible","annotationAreaBand","xBandWidth","yBandWidth","column","pivotColumn","columnSpecPipeline","registerColumn","columnParallelAdvancedPipeline","initColumnParallel","sameDimensionsMode","columnParallel","pivotColumnParallel","columnParallelSpecPipeline","registerColumnParallel","columnPercentAdvancedPipeline","percent","columnPercent","pivotColumnPercent","columnPercentSpecPipeline","registerColumnPercent","encodingForBar","sortYBandAxis","yField","barAdvancedPipeline","initBar","datasetYX","xLinear","yBand","horizontalCrosshairRect","bar","pivotBar","barSpecPipeline","registerBar","barParallelAdvancedPipeline","initBarParallel","barParallel","pivotBarParallel","barParallelSpecPipeline","registerBarParallel","barPercentAdvancedPipeline","barPercent","pivotBarPercent","barPercentSpecPipeline","registerBarPercent","areaAdvancedPipeline","initArea","colorAreaStyleFill","areaStyle","areaStyles","group","areaGroups","areaVisible","area","pivotArea","areaSpecPipeline","registerArea","areaPercentAdvancedPipeline","areaPercent","pivotAreaPercent","areaPercentSpecPipeline","registerAreaPercent","encodingForScatter","dimensionsWithoutMeasureName","buildMeasuresForScatter","scatterMeasures","basicMeasuresToScatterMeasures","scatterMeasuresToMeasureTree","basicMeasures","yMeasures","xMeasures","isYAxis","isXAxis","groupChildren","arrPrimaryMeasures","arrSecondaryMeasures","scatterChart","isX","isY","reshapeWithScatterEncoding","foldInfoList","unfoldInfoList","pivotReshapeWithScatterEncoding","datasetList","scatterAdvancedPipeline","initScatter","datasetScatter","horizontalCrosshairLine","scatter","pivotScatter","scatterSpecPipeline","registerScatter","encodingForDualAxis","buildMeasuresForDualAxis","dualMeasures","basicMeasuresToDualMeasures","dualMeasuresToMeasureTree","primaryMeasures","secondaryMeasures","isPrimaryYAxis","isSecondaryYAxis","dualChart","isPrimary","isSecondary","reshapeWithDualEncoding","pivotReshapeWithDualEncoding","dualAxisConfig","dualAxisAdvancedPipeline","series","args","seriesDualAxis","createDualContext","seriesContext","initDualAxisPrimary","initDualAxisSecondary","dualChartTypePrimary","primary","secondary","bothColumn","columnSpec","dualChartTypeSecondary","datasetPrimary","datasetSecondary","labelPrimary","labelSecondary","tooltipPrimary","tooltipSecondary","encodingColorId","yLinearPrimary","reshapeInfoId","primaryYAxis","yAxisConfig","alignTicks","alignTicksConfig","seriesIds","seriesId","yLinearSecondary","secondaryYAxis","sync","linearColorForDualAxis","dualAxis","pivotDualAxis","dualAxisSpecPipeline","registerDualAxis","encodingForPie","pieAdvancedPipeline","initPie","colorPieStyleFill","pieStyle","pie","pivotPie","pieSpecPipeline","registerPie","donutAdvancedPipeline","initDonut","donut","pivotDonut","donutSpecPipeline","registerDonut","encodingForRose","roseAdvancedPipeline","initRose","hasNegativeValue","angleAxis","is0D","is1M1D","showAxis","radiusAxis","colorRoseStyleFill","roseStyle","rose","pivotRose","roseSpecPipeline","registerRose","roseParallelAdvancedPipeline","initRoseParallel","roseParallel","pivotRoseParallel","roseParallelSpecPipeline","registerRoseParallel","encodingForRadar","radarAdvancedPipeline","initRadar","radarAngleAxis","radarRadiusAxis","radar","pivotRadar","radarSpecPipeline","registerRadar","encodingForFunnel","funnelAdvancedPipeline","initFunnel","colorFunnelStyleFill","funnelStyle","funnel","pivotFunnel","funnelSpecPipeline","registerFunnel","encodingForHeatmap","colorDims","heatmapAdvancedPipeline","labelColorInversion","colorCellStyleFill","cellStyle","initHeatmap","heatmap","pivotHeatmap","heatmapSpecPipeline","registerHeatmap","lightTheme","barBandAxis","crosshairLine","crosshairRect","darkTheme","registerCustomTheme","registerLightTheme","registerDarkTheme","registerAll","updateAdvanced","advancedPipe","updateSpec","specPipe","findAllDimensions","zChartType","z","zDualChartType","zDatum","zDataset","zDimension","zDimensionGroup","zDimensions","zDimensionTree","zNumFormat","zMeasure","zMeasureGroup","zMeasures","zMeasureTree","zDualMeasure","zDualMeasures","zScatterMeasure","zScatterMeasures","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","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","zScatter","zDualAxis","zRose","zRoseParallel","zPie","zDonut","zRadar","zFunnel","zHeatmap","zVSeed","zAdvancedVSeed"],"mappings":"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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/default/defaultMeasures.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/default/defaultDimensions.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/records/records.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/config/tableConfig.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/theme/theme.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipeline/table.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/init/table.ts","webpack://@visactor/vseed/./src/pipeline/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/dataReshape/constant.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/default/defaultMeasureName.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/encoding/pivotTable.ts","webpack://@visactor/vseed/./src/dataReshape/foldMeasures.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/reshape/reshapePivotTable.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/config/pivotTableConfig.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipeline/pivotTable.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/init/pivotTable.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/columns/pivotColumns.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/rows/pivotRows.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/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.8/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/advanced/chart/pipes/default/defaultMeasures.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/default/defaultDimensions.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/default/defaultMeasureName.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/encodingAdapter.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/line.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/utils.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/measures/buildMeasures.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/pivot/pivotAdapter.ts","webpack://@visactor/vseed/./src/dataReshape/unfoldDimensions.ts","webpack://@visactor/vseed/./src/dataReshape/dataReshapeByEncoding.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/colorAdapter.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeWithEncoding.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithEncoding.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/analysis/sortXBand.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/analysis/sortLegend.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/color/linearColor.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/backgroundColor/background.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/datasetXY.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/progressive.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/xBand.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/yLinear.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/crosshair/verticalCrosshairLine.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/legend/discreteLegend.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/legend/colorLegend.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/colorPointStyleFill.ts","webpack://@visactor/vseed/./src/dataSelector/selector.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/pointStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/pointState.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/colorLineStyleFill.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/lineStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/label/label.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltip.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/utils.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/annotationPoint.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/annotationVerticalLine.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/annotationHorizontalLine.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/annotationArea.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/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/legend/pivotColorLegend.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/pivotChart/pivotAdapter.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/line.ts","webpack://@visactor/vseed/./src/builder/register/chartType/line.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/column.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/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/color/colorBarStyleFill.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/barStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/annotationAreaBand.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/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/bar.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/analysis/sortYBand.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/bar.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/bar.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/datasetYX.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/xLinear.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/yBand.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/crosshair/horizontalCrosshairRect.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/bar.ts","webpack://@visactor/vseed/./src/builder/register/chartType/bar.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/barParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/barParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/barParallel.ts","webpack://@visactor/vseed/./src/builder/register/chartType/barParallel.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/barPercent.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/barPercent.ts","webpack://@visactor/vseed/./src/builder/register/chartType/barPercent.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/area.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/area.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/colorAreaStyleFill.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/areaStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/area.ts","webpack://@visactor/vseed/./src/builder/register/chartType/area.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/areaPercent.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/areaPercent.ts","webpack://@visactor/vseed/./src/builder/register/chartType/areaPercent.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/scatter.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/buildMeasuresForScatter.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeWithScatterEncoding.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithScatterEncoding.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/scatter.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/scatter.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/datasetScatter.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipScatter.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/encoding/dualAxis.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/buildMeasuresForDualAxis.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/config/dualAxis.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/dualAxis.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/series/series.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/dualAxis.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dual/dualChartType.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/datasetDualAxis.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/label/labelDualAxis.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/yLinearPrimary.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/yLinearSecondary.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/linearColorForDualAxis.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/dualAxis.ts","webpack://@visactor/vseed/./src/builder/register/chartType/dualAxis.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/pie.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/pie.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/pie.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/colorPieStyleFill.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/pieStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/pie.ts","webpack://@visactor/vseed/./src/builder/register/chartType/pie.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/donut.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/donut.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/donut.ts","webpack://@visactor/vseed/./src/builder/register/chartType/donut.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/rose.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/rose.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/rose.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/angle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/radius.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/colorRoseStyleFill.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/roseStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/rose.ts","webpack://@visactor/vseed/./src/builder/register/chartType/rose.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/roseParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/roseParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/roseParallel.ts","webpack://@visactor/vseed/./src/builder/register/chartType/roseParallel.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/radar.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/radar.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/radar.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/radarAngle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/radarRadius.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/radar.ts","webpack://@visactor/vseed/./src/builder/register/chartType/radar.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/funnel.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/funnel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/funnel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/colorFunnelStyleFill.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/funnelStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/funnel.ts","webpack://@visactor/vseed/./src/builder/register/chartType/funnel.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/heatmap.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/heatmap.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/label/labelColorInversion.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/colorCellStyleFill.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/cellStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/heatmap.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/heatmap.ts","webpack://@visactor/vseed/./src/builder/register/chartType/heatmap.ts","webpack://@visactor/vseed/./src/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/find.ts","webpack://@visactor/vseed/./src/types/properties/chartType/chartType.ts","webpack://@visactor/vseed/./src/types/properties/chartType/dualChartType.ts","webpack://@visactor/vseed/./src/types/properties/dataset/dataset.ts","webpack://@visactor/vseed/./src/types/properties/dimensions/zDimensions.ts","webpack://@visactor/vseed/./src/types/properties/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/measures/zScatterMeasures.ts","webpack://@visactor/vseed/./src/types/properties/datasetReshapeInfo/zDatasetReshapeInfo.ts","webpack://@visactor/vseed/./src/types/properties/encoding/zEncoding.ts","webpack://@visactor/vseed/./src/types/properties/config/axes/bandAxis.ts","webpack://@visactor/vseed/./src/types/properties/config/axes/linearAxis.ts","webpack://@visactor/vseed/./src/types/properties/config/crosshair/zCrosshair.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/zAreaStyle.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/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/zVseed.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 } from 'src/types'\n\n/**\n * @description 如果用户没有配置 measures, 则基于 dataset 构建默认的 measures\n */\nexport const defaultMeasures: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { measures, dataset } = vseed\n\n if (measures && measures.length > 0) {\n return {\n ...advancedVSeed,\n measures,\n }\n }\n\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return {\n ...advancedVSeed,\n measures: [],\n }\n }\n\n const top100dataset = dataset.slice(0, 100)\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n const defaultMeasures = Object.keys(sample)\n .filter((key) => {\n return top100dataset.some((item) => typeof item[key] === 'number') && !['', null, undefined].includes(key)\n })\n .map((measure) => ({\n id: measure,\n alias: measure,\n }))\n\n return {\n ...advancedVSeed,\n measures: defaultMeasures,\n }\n}\n","/**\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, Dimensions, DimensionTree } from 'src/types'\n\nexport const defaultDimensions: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dimensions, dataset } = vseed\n\n if (dimensions && dimensions.length > 0) {\n return {\n ...result,\n dimensions,\n }\n }\n\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return result\n }\n\n const measures = findAllMeasures(advancedVSeed.measures as DimensionTree)\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n const newDimensions = Object.keys(sample)\n .filter(\n (key) =>\n top100dataset.some((item) => typeof item[key] === 'string') &&\n !['', null, undefined].includes(key) &&\n !measures.some((measure) => measure.id === key),\n )\n .map((dim) => ({\n id: dim,\n alias: dim,\n })) as Dimensions\n\n return {\n ...result,\n dimensions: newDimensions,\n }\n}\n","import type { AdvancedPipe } from 'src/types'\n\nexport const records: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { dataset } = vseed\n return {\n ...advancedVSeed,\n dataset,\n }\n}\n","import { pick } from 'remeda'\nimport type { AdvancedPipe, Config } from 'src/types'\n\nexport const tableConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const config = pick(vseed, [\n 'backgroundColor',\n 'bodyFontSize',\n 'bodyFontColor',\n 'bodyBackgroundColor',\n 'headerFontSize',\n 'headerFontColor',\n 'headerBackgroundColor',\n 'hoverHeaderBackgroundColor',\n 'hoverHeaderInlineBackgroundColor',\n 'selectedBorderColor',\n 'selectedBackgroundColor',\n ]) as Config['pivotTable']\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result\n}\n","import { clone, isNullish, isNumber, isObjectType, isString, merge, mergeDeep } from 'remeda'\nimport type { AdvancedPipe, AdvancedVSeed } from 'src/types'\n\nexport const theme: AdvancedPipe = (advancedVSeed, context) => {\n const { customTheme, vseed } = context\n const { theme = 'light', chartType } = vseed\n const result = {\n ...advancedVSeed,\n } as AdvancedVSeed\n\n if (!customTheme || !customTheme[theme]) {\n return result\n }\n\n const chartConfigTheme = customTheme?.[theme].config?.[chartType]\n if (chartConfigTheme) {\n const chartConfig = result.config?.[chartType] || {}\n const mergedConfig = mergeDeep(chartConfigTheme, clone(chartConfig))\n\n // 数组项不会被Merge, 需要将1个主题配置, 合并到数组的每一项\n for (const _k in mergedConfig) {\n const key = _k as keyof typeof mergedConfig\n // 配置的第一层, 如果是数组, 则数组的每一项目和主题配置合并\n if (Array.isArray(mergedConfig[key])) {\n mergedConfig[key] = mergeArray(mergedConfig[key], chartConfigTheme[key])\n }\n }\n\n result.config = {\n [chartType]: mergedConfig,\n }\n }\n\n const chartCustomTheme = customTheme?.[theme]?.config?.[chartType]\n\n result.customTheme = {\n config: {\n [chartType]: chartCustomTheme,\n },\n }\n\n return result\n}\n\nconst mergeArray = <Destination extends Array<object>, Source extends object | number | string | undefined | null>(\n arr: Destination,\n themeItem: Source,\n): Destination => {\n if (isNullish(themeItem) || isString(themeItem) || isNumber(themeItem)) {\n return arr\n }\n\n if (!Array.isArray(arr)) {\n return arr\n }\n\n if (arr.some((d) => !isObjectType(d))) {\n return arr\n }\n\n return arr.map((item) => {\n return merge(themeItem, item)\n }) as Destination\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport { initAdvancedVSeed, records, tableConfig, defaultMeasures, defaultDimensions } from '../pipes'\nimport { theme } from '../../chart/pipes'\n\nexport const tableAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n\n records,\n tableConfig,\n theme,\n]\n","import type { ListTableConstructorOptions } from '@visactor/vtable'\nimport type { SpecPipe } from 'src/types'\n\nexport const initTable: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { dataset } = advancedVSeed\n const { config } = advancedVSeed\n const { backgroundColor = 'transparent' } = config.table || {}\n\n return {\n ...spec,\n records: dataset,\n widthMode: 'standard',\n 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, 12, 8, 12],\n textAlign: 'right',\n hover: {\n cellBgColor: hoverCellBgColor,\n inlineRowBgColor: hoverInlineColor,\n inlineColumnBgColor: hoverInlineColor,\n },\n color: fontColor,\n fontSize: fontSize,\n fontStyle: 'normal',\n fontWeight: 'normal',\n fontVariant: 'normal',\n bgColor: backgroundColor,\n lineHeight: fontSize * 1.5,\n }\n\n return result\n}\n","import type { 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}","// Reshape\nexport const ORIGINAL_DATA = '__OriginalData__'\nexport const Separator = '-'\n\n// Measures\nexport const FoldMeasureName = '__MeaName__'\nexport const FoldMeasureId = '__MeaId__'\nexport const FoldMeasureValue = '__MeaValue__'\nexport const MeasureName = FoldMeasureName\n\n// Measures For DualAxis\nexport const FoldPrimaryMeasureValue = '__MeaPrimaryValue__'\nexport const FoldSecondaryMeasureValue = '__MeaSecondaryValue__'\n\n// Measures For Scatter\nexport const FoldXMeasureValue = '__MeaXValue__'\nexport const FoldYMeasureValue = '__MeaYValue__'\nexport const FoldXMeasureId = '__MeaXId__'\nexport const FoldYMeasureId = '__MeaYId__'\n// Encoding\nexport const XEncoding = '__Dim_X__'\nexport const YEncoding = '__Dim_Y__'\nexport const AngleEncoding = '__Dim_Angle__'\nexport const DetailEncoding = '__Dim_Detail__'\nexport const ColorEncoding = '__Dim_Color__'\nexport const ColorIdEncoding = '__Dim_ColorId__'\n","import { MeasureName } from 'src/dataReshape'\nimport { intl } from 'src/i18n'\nimport type { AdvancedPipe, Dimension } from 'src/types'\n\nexport const defaultMeasureName: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n\n const MeaName: Dimension = {\n id: MeasureName,\n alias: intl.i18n`指标名称`,\n }\n\n // 如果没有指标名称维度,则默认添加指标名称维度\n if (!result.dimensions?.some((dim) => dim.id === MeasureName)) {\n result.dimensions?.push(MeaName)\n }\n\n return result\n}\n","import { unique } from 'remeda'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\n\nexport const encodingForPivotTable: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\n }\n\n if (hasMeasureEncoding) {\n generateMeasureEncoding(measures, encoding)\n } else {\n generateDefaultMeasureEncoding(measures, encoding)\n }\n\n return { ...advancedVSeed, encoding }\n}\n\n/**\n * --------------------维度--------------------\n */\nconst generateDefaultDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.tooltip = uniqueDimIds\n encoding.row = []\n encoding.column = []\n\n uniqueDimIds.forEach((item, index) => {\n if (index % 2 === 0) {\n encoding.column!.push(item)\n } else {\n encoding.row!.push(item)\n }\n })\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.tooltip = uniqueDimIds\n encoding.row = []\n encoding.column = []\n\n dimensions.forEach((dim, index) => {\n const id = dim.id\n if (dim.encoding === 'row') {\n encoding.row!.push(id)\n } else if (dim.encoding === 'column') {\n encoding.column!.push(id)\n } else {\n if (index % 2 === 0) {\n encoding.column!.push(id)\n } else {\n encoding.row!.push(id)\n }\n }\n })\n}\n\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.tooltip = unique(measures.map((item) => item.id))\n encoding.detail = unique(\n measures.filter((item) => item.encoding === 'detail' || !item.encoding).map((item) => item.id),\n )\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.tooltip = measures.map((item) => item.id)\n encoding.detail = unique(\n measures.filter((item) => item.encoding === 'detail' || !item.encoding).map((item) => item.id),\n )\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Dataset, FoldInfo, Measures } from 'src/types'\nimport { ColorEncoding, ColorIdEncoding, ORIGINAL_DATA } from './constant'\nimport { omit } from 'remeda'\n\n/**\n * 折叠指定的指标\n * @description 合并指定的指标为1个, 无论多少个, 都能转换为1个, 取名为fold, 意为折叠后混合在一起.\n */\nexport const foldMeasures = (\n dataset: Dataset,\n measures: Measures,\n options: {\n measureId: string\n measureName: string\n measureValue: string\n colorMeasureId?: string\n },\n): {\n dataset: Dataset\n foldInfo: FoldInfo\n} => {\n const { measureId, measureName, measureValue, colorMeasureId } = options || {}\n\n const foldInfo: FoldInfo = {\n measureId,\n measureName,\n measureValue,\n colorRange: [0, 1],\n measureRange: [0, 1],\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 if (colorMeasureId) {\n const value = (datum[ORIGINAL_DATA] as Record<string, string | number>)[colorMeasureId]\n datum[ColorEncoding] = value\n datum[ColorIdEncoding] = colorMeasureId\n\n foldInfo.colorRange = [\n Math.min(foldInfo.colorRange[0] || Infinity, Number(value)),\n Math.max(foldInfo.colorRange[1] || -Infinity, Number(value)),\n ]\n }\n\n foldInfo.measureRange = [\n Math.min(foldInfo.measureRange[0] || Infinity, Number(datum[id])),\n Math.max(foldInfo.measureRange[1] || -Infinity, Number(datum[id])),\n ]\n\n foldInfo.foldMap[id] = alias\n result[index++] = datum\n }\n }\n\n return {\n dataset: result,\n foldInfo,\n }\n}\n","import { FoldMeasureId, FoldMeasureName, foldMeasures, FoldMeasureValue } from 'src/dataReshape'\nimport {} from 'src/pipeline/spec/chart/pipes'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, DatasetReshapeInfo, PivotTable } from 'src/types'\n\nexport const reshapePivotTable: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset, chartType } = vseed as PivotTable\n const { dimensions, measures } = advancedVSeed\n const { dataset: newDatasets, foldInfo } = foldMeasures(dataset, findAllMeasures(measures), {\n measureId: FoldMeasureId,\n measureName: FoldMeasureName,\n measureValue: FoldMeasureValue,\n })\n\n const datasetReshapeInfo = [\n {\n id: String(chartType),\n index: 0,\n foldInfo,\n },\n ] as unknown as DatasetReshapeInfo\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: datasetReshapeInfo,\n dimensions,\n measures,\n }\n}\n","import { pick } from 'remeda'\nimport type { AdvancedPipe, Config } from 'src/types'\n\nexport const pivotTableConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const config = pick(vseed, [\n 'backgroundColor',\n 'bodyFontSize',\n 'bodyFontColor',\n 'bodyBackgroundColor',\n 'headerFontSize',\n 'headerFontColor',\n 'headerBackgroundColor',\n 'hoverHeaderBackgroundColor',\n 'hoverHeaderInlineBackgroundColor',\n 'selectedBorderColor',\n 'selectedBackgroundColor',\n ]) as Config['table']\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport { theme } from '../../chart/pipes'\nimport {\n defaultDimensions,\n defaultMeasureName,\n defaultMeasures,\n encodingForPivotTable,\n initAdvancedVSeed,\n pivotTableConfig,\n reshapePivotTable,\n} from '../pipes'\n\nexport const pivotTableAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingForPivotTable,\n reshapePivotTable,\n pivotTableConfig,\n theme,\n]\n","import type { PivotTableConstructorOptions } from '@visactor/vtable'\nimport type { SpecPipe } from 'src/types'\n\nexport const initPivotTable: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { dataset } = advancedVSeed\n const { config } = advancedVSeed\n const { backgroundColor = 'transparent' } = config.pivotTable || {}\n return {\n ...spec,\n records: dataset,\n widthMode: 'standard',\n heightMode: 'autoHeight',\n autoWrapText: true,\n columnResizeMode: 'all',\n columnResizeType: 'column',\n showColumnHeader: true,\n showRowHeader: true,\n select: {\n highlightMode: 'cell',\n headerSelectMode: 'inline',\n },\n hover: {\n highlightMode: 'cross',\n },\n tooltip: {\n isShowOverflowTextTooltip: true,\n },\n corner: {\n titleOnDimension: 'all',\n },\n widthAdaptiveMode: 'all',\n animationAppear: {\n duration: 300,\n delay: 250,\n type: 'one-by-one',\n direction: 'row',\n },\n theme: {\n underlayBackgroundColor: backgroundColor,\n },\n } as PivotTableConstructorOptions\n}\n","import type { PivotTableConstructorOptions } from '@visactor/vtable'\nimport type { Dimensions, SpecPipe } from 'src/types'\n\nexport const pivotColumns: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n const dimensions = advancedVSeed.dimensions as Dimensions\n const columns = dimensions.filter((item) => encoding.column?.includes(item.id))\n\n return {\n ...spec,\n columns: columns.map((item) => {\n return {\n dimensionKey: item.id,\n title: item.alias || item.id,\n width: 'auto',\n }\n }),\n } as PivotTableConstructorOptions\n}\n","import type { Dimensions, SpecPipe } from 'src/types'\n\nexport const pivotRows: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const dimensions = advancedVSeed.dimensions as Dimensions\n const { encoding } = advancedVSeed\n const rows = dimensions.filter((item) => encoding.row?.includes(item.id))\n 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 { BaseTableAPI, FieldFormat } from '@visactor/vtable/es/ts-types'\nimport { isEmpty, isNumber } from 'remeda'\nimport { intl } from 'src/i18n'\nimport { autoFormatter, createFormatter, findMeasureById } from 'src/pipeline/utils'\nimport type { Datum, FoldInfo, Locale, MeasureTree, SpecPipe } from 'src/types'\n\nexport const pivotIndicators: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { locale, measures, datasetReshapeInfo } = advancedVSeed\n const { foldInfo } = datasetReshapeInfo[0]\n\n return {\n ...spec,\n indicatorsAsCol: true,\n indicatorTitle: intl.i18n`指标名称`,\n hideIndicatorName: true,\n indicators: [\n {\n cellType: 'text',\n indicatorKey: foldInfo.measureValue,\n title: 'indicator',\n width: 'auto',\n format: fieldFormat(measures, foldInfo as FoldInfo, locale),\n },\n ] as unknown as PivotChartConstructorOptions['indicators'],\n }\n}\n\nconst fieldFormat =\n (measures: MeasureTree, foldInfo: FoldInfo, locale: Locale): FieldFormat =>\n (value: number | string, col?: number, row?: number, table?: BaseTableAPI) => {\n if (!isNumber(col) || !isNumber(row) || !table) {\n return value\n }\n\n const datum = table.getCellOriginRecord(col, row) as Datum[]\n if (!datum[0]) {\n return value\n }\n const { measureId: foldMeasureId } = foldInfo\n const measureId = datum[0][foldMeasureId] as string\n const node = findMeasureById(measures, measureId)\n if (!node) {\n return value\n }\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, 12, 8, 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 { AdvancedPipe, Datum } from 'src/types'\n\n/**\n * @description 如果用户没有配置 measures, 则基于 dataset 构建默认的 measures\n */\nexport const defaultMeasures: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { measures, dataset } = vseed\n\n if (measures && measures.length > 0) {\n return {\n ...advancedVSeed,\n measures,\n }\n }\n\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return {\n ...advancedVSeed,\n measures: [],\n }\n }\n\n const top100dataset = dataset.slice(0, 100)\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n const defaultMeasures = Object.keys(sample)\n .filter((key) => {\n return top100dataset.some((item) => typeof item[key] === 'number') && !['', null, undefined].includes(key)\n })\n .map((measure) => ({\n id: measure,\n alias: measure,\n }))\n\n return {\n ...advancedVSeed,\n measures: defaultMeasures,\n }\n}\n","import { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Datum, Dimensions, DimensionTree } from 'src/types'\n\nexport const defaultDimensions: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dimensions, dataset } = vseed\n\n if (dimensions && dimensions.length > 0) {\n return {\n ...result,\n dimensions,\n }\n }\n\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return result\n }\n\n const measures = findAllMeasures(advancedVSeed.measures as DimensionTree)\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n const newDimensions = Object.keys(sample)\n .filter(\n (key) =>\n top100dataset.some((item) => typeof item[key] === 'string') &&\n !['', null, undefined].includes(key) &&\n !measures.some((measure) => measure.id === key),\n )\n .map((dim) => ({\n id: dim,\n alias: dim,\n })) as Dimensions\n\n return {\n ...result,\n dimensions: newDimensions,\n }\n}\n","import { MeasureName } from 'src/dataReshape'\nimport { intl } from 'src/i18n'\nimport type { AdvancedPipe, Dimension } from 'src/types'\n\nexport const defaultMeasureName: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n\n const MeaName: Dimension = {\n id: MeasureName,\n alias: intl.i18n`指标名称`,\n }\n\n // 如果没有指标名称维度,则默认添加指标名称维度\n if (!result.dimensions?.some((dim) => dim.id === MeasureName)) {\n result.dimensions?.push(MeaName)\n }\n\n return result\n}\n","import type {\n AdvancedPipe,\n AdvancedPipeline,\n AdvancedPipelineContext,\n AdvancedVSeed,\n Dimension,\n Measure,\n} from 'src/types'\nimport { execPipeline } from 'src/pipeline/utils'\n\nexport const encodingAdapter = (\n noEncodingPipeline: AdvancedPipeline,\n hasEncodingPipeline: AdvancedPipeline,\n): AdvancedPipe => {\n return (advancedVSeed, context) => {\n const { dimensions = [], measures = [] } = advancedVSeed\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n\n const hasEncoding = hasDimensionEncoding || hasMeasureEncoding\n\n if (hasEncoding) {\n return execPipeline<AdvancedVSeed, AdvancedPipelineContext>(hasEncodingPipeline, context, advancedVSeed)\n }\n return execPipeline<AdvancedVSeed, AdvancedPipelineContext>(noEncodingPipeline, context, advancedVSeed)\n }\n}\n","import { unique } from 'remeda'\nimport { MeasureName } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\n\nexport const defaultEncodingForLine: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding)\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForLine: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\n }\n\n if (hasMeasureEncoding) {\n generateMeasureEncoding(measures, encoding)\n } else {\n generateDefaultMeasureEncoding(measures, encoding)\n }\n\n return { ...advancedVSeed, encoding }\n}\n\n/**\n * --------------------维度--------------------\n */\nconst generateDefaultDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.x = uniqueDimIds.slice(0, 1)\n encoding.color = uniqueDimIds.slice(1)\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureName) // 展示指标名称之外的所有维度\n encoding.detail = [] // 折线图暂不支持细分\n encoding.label = []\n encoding.row = []\n encoding.column = []\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n // x\n encoding.x = unique(dimensions.filter((item) => item.encoding === 'xAxis').map((item) => item.id))\n if (encoding.x.length === 0) {\n encoding.x = [dimensions[0].id]\n }\n\n // color\n encoding.color = unique(dimensions.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (encoding.color.length === 0) {\n encoding.color = [MeasureName]\n }\n\n // detail\n encoding.detail = unique(dimensions.filter((item) => item.encoding === 'detail').map((item) => item.id))\n if (encoding.detail.length === 0) {\n encoding.detail = [MeasureName]\n }\n\n // tooltip\n encoding.tooltip = unique(dimensions.map((item) => item.id))\n encoding.tooltip = encoding.tooltip.filter((d) => d !== MeasureName)\n}\n\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.y = unique(measures.filter((item) => item.encoding === 'yAxis' || !item.encoding).map((item) => item.id))\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n // y\n encoding.y = unique(measures.filter((item) => item.encoding === 'yAxis' || !item.encoding).map((item) => item.id))\n\n // color\n const color = unique(measures.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (color.length > 0) {\n encoding.color = color\n }\n\n // tooltip\n const tooltip = unique(measures.filter((item) => item.encoding === 'tooltip').map((item) => item.id))\n encoding.tooltip = unique([...(encoding.tooltip || []), ...tooltip])\n}\n","import type { AdvancedVSeed, MeasureGroup, MeasureTree, VSeed } from 'src/types'\n\n/**\n * @description 检查是否为指标树, 指标树深度大于1. 如果存在一个指标为组, 即有children配置, 则认为是指标树.\n * @param vseed vseed\n * @returns\n */\nexport const isMeasureTreeWithChildren = (vseed: VSeed | AdvancedVSeed) => {\n const { measures } = vseed\n\n if (!measures) {\n return false\n }\n\n return measures.some((measure) => 'children' in measure)\n}\n\n/**\n * @description 检查是否为指标树, 指标树存在parentId. 如果存在一个指标有parentId, 则认为是指标树.\n * @param vseed vseed\n * @returns\n */\nexport const isMeasureTreeWithParentId = (vseed: VSeed | AdvancedVSeed) => {\n const { measures } = vseed\n\n if (!measures) {\n return false\n }\n\n return measures.some((measure) => 'parentId' in measure)\n}\n\n/**\n * @description 保证指标树中的每一组都有children, 没有children的指标, 会被放到一个默认的指标组中.\n * @param measures 指标树\n * @returns\n */\nexport const normalizeMeasureTree = (measures: MeasureTree) => {\n const createEmptyMeasureGroup = (): MeasureGroup => {\n return {\n id: 'group',\n alias: '',\n children: [],\n }\n }\n\n let currentGroup: MeasureGroup = createEmptyMeasureGroup()\n const measureGroups: MeasureGroup[] = []\n for (const measure of measures) {\n if ('children' in measure) {\n // 当前指标组之前的所有独立指标成组\n if (currentGroup.children?.length) {\n currentGroup.id = [currentGroup.id, ...currentGroup.children.map((item) => item.id)].join('-')\n currentGroup.alias = currentGroup.children.map((item) => item.alias).join('-')\n measureGroups.push(currentGroup)\n currentGroup = createEmptyMeasureGroup()\n }\n // 当前是指标组\n measureGroups.push(measure)\n } else {\n currentGroup.children?.push(measure)\n }\n }\n\n // 最后一组\n if (currentGroup.children?.length) {\n currentGroup.id = [currentGroup.id, ...currentGroup.children.map((item) => item.id)].join('-')\n currentGroup.alias = currentGroup.children.map((item) => item.alias).join('-')\n measureGroups.push(currentGroup)\n currentGroup = createEmptyMeasureGroup()\n }\n\n return measureGroups\n}\n","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, Measure } from 'src/types'\nimport { measureDepth } from './measures'\nimport { isMeasureTreeWithChildren, isMeasureTreeWithParentId } from '../advanced/chart/pipes/measures/utils'\nimport { unique } from 'remeda'\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 (isMeasureTreeWithParentId(vseed)) {\n const parentIds = vseed.measures?.map((measure: Measure) => measure.parentId)\n return parentIds && unique(parentIds).length > 1\n }\n\n if (vseed.chartType === 'dualAxis' || vseed.chartType === 'scatter') {\n const { dimensions = [] } = vseed as {\n dimensions: Dimensions\n }\n const hasRowOrColumnDimension =\n dimensions && dimensions.some((dimension) => dimension.encoding === 'row' || dimension.encoding === 'column')\n\n if (hasRowOrColumnDimension) {\n return true\n }\n\n if (vseed.chartType === 'scatter') {\n if (isMeasureTreeWithChildren(vseed)) {\n const depth = measureDepth(vseed.measures)\n return depth === 3\n }\n\n if (vseed.scatterMeasures && vseed.scatterMeasures.length > 1) {\n return true\n }\n return false\n }\n if (vseed.chartType === 'dualAxis') {\n if (isMeasureTreeWithChildren(vseed)) {\n const depth = measureDepth(vseed.measures)\n return depth === 3\n }\n\n if (vseed.dualMeasures && vseed.dualMeasures.length > 1) {\n return true\n }\n }\n\n return false\n }\n\n const { measures = [], dimensions = [] } = vseed as {\n measures: DimensionTree\n dimensions: Dimensions\n }\n\n const hasRowOrColumnDimension =\n dimensions && dimensions.some((dimension) => dimension.encoding === 'row' || dimension.encoding === 'column')\n\n const hasMeasureGroup = measures && measures.some((measure: DimensionGroup) => measure && measure.children)\n\n return hasRowOrColumnDimension || hasMeasureGroup\n}\n","import type { AdvancedPipe, Column, MeasureGroup, Measures, MeasureTree } from 'src/types'\nimport { isMeasureTreeWithChildren, isMeasureTreeWithParentId, normalizeMeasureTree } from './utils'\nimport { isPivotChart } from 'src/pipeline/utils'\n\nexport const buildMeasures: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context as {\n vseed: Column\n }\n // 带Children的指标树, 不进行任何处理\n if (isMeasureTreeWithChildren(vseed)) {\n advancedVSeed.measures = normalizeMeasureTree(vseed.measures as MeasureTree)\n return advancedVSeed\n }\n // 带parentId的指标树, 转换为带children的指标树\n if (isMeasureTreeWithParentId(vseed)) {\n advancedVSeed.measures = generateMeasuresByParentId(vseed.measures as Measures)\n return advancedVSeed\n }\n\n /**\n * 透视图表, 自动生成指标树\n */\n if (isPivotChart(vseed)) {\n advancedVSeed.measures = basicMeasuresToMeasureTree(advancedVSeed.measures as Measures)\n }\n\n return advancedVSeed\n}\n\nconst generateMeasuresByParentId = (measures: Measures): MeasureTree => {\n const measureTree: MeasureGroup[] = []\n\n measures.forEach((measure) => {\n if (!measure.parentId) {\n return\n }\n\n const parent = measureTree.find((item) => item.id === measure.parentId)\n\n if (parent && 'children' in parent) {\n parent.children = parent.children || []\n parent.children.push(measure)\n } else {\n measureTree.push({\n id: measure.parentId,\n children: [measure],\n })\n }\n })\n\n return measureTree\n}\n\nconst basicMeasuresToMeasureTree = (measures: Measures): MeasureTree => {\n const id = measures.map((item) => item.id).join('-')\n const alias = measures.map((item) => item.alias || item.id).join('-')\n return [\n {\n id,\n alias,\n children: measures,\n },\n ]\n}\n","import type { AdvancedPipe, AdvancedPipeline, AdvancedPipelineContext, AdvancedVSeed } from 'src/types'\nimport { execPipeline, isPivotChart } from 'src/pipeline/utils'\n\nexport const pivotAdapter = (pipeline: AdvancedPipeline, pivotPipeline: AdvancedPipeline): AdvancedPipe => {\n return (advancedVSeed, context) => {\n const { vseed } = context\n const usePivotChart = isPivotChart(vseed)\n\n if (usePivotChart) {\n return execPipeline<AdvancedVSeed, AdvancedPipelineContext>(pivotPipeline, context, advancedVSeed)\n }\n\n return execPipeline<AdvancedVSeed, AdvancedPipelineContext>(pipeline, context, advancedVSeed)\n }\n}\n","import type { Dataset, Datum, Dimension, Encoding, UnfoldInfo } from 'src/types'\nimport { AngleEncoding, XEncoding, YEncoding, ColorEncoding, DetailEncoding, ColorIdEncoding } from './constant'\n\n/**\n * @description 展开并合并视觉通道的维度, 在foldMeasures后合并维度, 所以不需要进行笛卡尔积\n * @param dataset 原始数据集\n * @param dimensions 维度\n * @param encoding 编码\n * @param options\n * @returns\n */\nexport const unfoldDimensions = (\n dataset: Dataset,\n dimensions: Dimension[],\n encoding: Encoding,\n options: {\n foldMeasureId: string\n separator: string\n colorItemAsId: boolean\n },\n): {\n dataset: Dataset\n unfoldInfo: UnfoldInfo\n} => {\n const { foldMeasureId, separator, colorItemAsId } = options\n\n const unfoldInfo: UnfoldInfo = {\n encodingAngle: AngleEncoding,\n encodingX: XEncoding,\n encodingY: YEncoding,\n encodingDetail: DetailEncoding,\n encodingColor: ColorEncoding,\n encodingColorId: ColorIdEncoding,\n\n colorItems: [],\n colorIdMap: {},\n }\n\n // 每个通道对应的维度\n const { color, x, y, detail, angle } = encoding\n const angleDimensions = angle ? dimensions.filter((dim) => angle.includes(dim.id)) : []\n const xDimensions = x ? dimensions.filter((dim) => x.includes(dim.id)) : []\n const yDimensions = y ? dimensions.filter((dim) => y.includes(dim.id)) : []\n const colorDimensions = color ? dimensions.filter((dim) => color.includes(dim.id)) : []\n const detailDimensions = detail ? dimensions.filter((dim) => detail.includes(dim.id)) : []\n\n // 离散图例项\n const colorItems = new Set<string>()\n const colorIdMap: Record<string, string> = {}\n\n // 遍历数据集, 按通道合并维度\n for (let i = 0; i < dataset.length; i++) {\n // 应用编码至Datum上\n const datum = dataset[i]\n\n /**\n * !important 这是全仓库, 最最最重要的五行代码, 贯穿VSeed整个生命周期, 是化繁为简的绝对核心\n * 1. 点睛之笔: 呼应foldMeasures, 此时此刻的datum一定是单点数据, 维度合并不可能造成任何冲突.\n * 2. 数据即通道\n * 3. 利用需要合并的维度, 直接进行join, 即可生成新的维度, 与指标彻底解耦;\n * 4. 以下通道均在一次遍历中完成, 不存在性能问题\n * 5. 以下通道均可放入多个维度\n */\n applyEncoding(AngleEncoding, angleDimensions, datum, separator)\n applyEncoding(XEncoding, xDimensions, datum, separator)\n applyEncoding(YEncoding, yDimensions, datum, separator)\n applyEncoding(ColorEncoding, colorDimensions, datum, separator)\n applyEncoding(DetailEncoding, detailDimensions, datum, separator)\n\n // 处理离散的颜色图例\n if (!colorDimensions.length || !datum[ColorEncoding]) {\n // 无颜色通道, 则跳过\n continue\n }\n const measureId = String(datum[foldMeasureId])\n const colorItem = String(datum[ColorEncoding])\n const colorId = colorItemAsId ? colorItem : measureId ? [colorItem, measureId].join(separator) : colorItem\n datum[ColorIdEncoding] = colorId\n colorIdMap[colorId] = colorItem\n colorItems.add(colorId)\n }\n\n unfoldInfo.colorItems = Array.from(colorItems)\n unfoldInfo.colorIdMap = colorIdMap\n\n return {\n dataset,\n unfoldInfo,\n }\n}\n\n/**\n * @description 应用编码至数据中, 此方法会原地修改数据\n * @param encoding 编码\n * @param dimensions 维度\n * @param datum 数据\n * @param separator 分隔符\n * @returns undefined\n */\nconst applyEncoding = (encoding: string, dimensions: Dimension[], datum: Datum, separator: string) => {\n if (encoding && dimensions.length) {\n datum[encoding] = dimensions.map((dim) => String(datum[dim.id])).join(separator)\n }\n}\n","import type { Dataset, Dimension, Encoding, FoldInfo, Measure, Measures, UnfoldInfo } from 'src/types'\nimport { foldMeasures } from './foldMeasures'\nimport { FoldMeasureId, FoldMeasureName, FoldMeasureValue, Separator } from './constant'\nimport { unfoldDimensions } from './unfoldDimensions'\n\nexport const dataReshapeByEncoding = (\n dataset: Dataset,\n dimensions: Dimension[],\n measures: Measure[],\n encoding: Encoding,\n options?: {\n foldMeasureId?: string\n foldMeasureName?: string\n foldMeasureValue?: string\n colorItemAsId?: boolean\n colorMeasureId?: string\n },\n): {\n dataset: Dataset\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n} => {\n const {\n foldMeasureId = FoldMeasureId,\n foldMeasureName = FoldMeasureName,\n foldMeasureValue = FoldMeasureValue,\n colorItemAsId = false,\n colorMeasureId,\n } = options || {}\n\n // 合并所有指标为1个指标\n const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures as Measures, {\n measureId: foldMeasureId,\n measureName: foldMeasureName,\n measureValue: foldMeasureValue,\n colorMeasureId,\n })\n\n // 展开指定的维度为指标\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dimensions, encoding, {\n foldMeasureId,\n separator: Separator,\n colorItemAsId,\n })\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n}\n","import { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedVSeed, SpecPipe } from 'src/types'\n\nexport const colorAdapter = (ordinalPipe: SpecPipe, linearPipe: SpecPipe): SpecPipe => {\n return (spec, context) => {\n const { advancedVSeed } = context\n if (isLinearColor(advancedVSeed)) {\n return linearPipe(spec, context)\n }\n return ordinalPipe(spec, context)\n }\n}\n\nexport const isLinearColor = <T extends AdvancedVSeed>(advancedVSeed: T) => {\n const { encoding, measures } = advancedVSeed\n const measureIdList = findAllMeasures(measures).map((measure) => measure.id)\n const { color } = encoding\n return color?.length === 1 && measureIdList.includes(color[0])\n}\n\nexport const getColorMeasureId = <T extends AdvancedVSeed>(advancedVSeed: T): string | undefined => {\n if (isLinearColor(advancedVSeed)) {\n const { encoding } = advancedVSeed\n const { color } = encoding\n return color?.[0]\n }\n return undefined\n}\n","import { uniqueBy } from 'remeda'\nimport { dataReshapeByEncoding } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed, ColumnParallel, Dimension, Encoding } from 'src/types'\n\nexport const reshapeWithEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset, chartType } = vseed as ColumnParallel\n const { dimensions, measures, encoding } = advancedVSeed\n\n if (!measures || !dimensions || !dataset || !encoding) {\n return result\n }\n\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n\n const hasEncoding = (vseed.dimensions || []).some((item: Dimension) => item.encoding)\n\n const {\n dataset: newDatasets,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(findAllMeasures(measures), (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: hasEncoding,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\n },\n )\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: [\n {\n id: String(chartType),\n index: 0,\n foldInfo,\n unfoldInfo,\n },\n ],\n dimensions,\n measures,\n }\n}\n","import { uniqueBy } from 'remeda'\nimport { dataReshapeByEncoding, FoldMeasureValue } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Dimension,\n Encoding,\n MeasureGroup,\n} from 'src/types'\n\nexport const pivotReshapeWithEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed as ColumnParallel\n const { dimensions, measures, encoding } = advancedVSeed\n if (!measures || !dimensions || !dataset || !encoding) {\n return result\n }\n\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\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 hasEncoding = (vseed.dimensions || []).some((item: Dimension) => item.encoding)\n\n const datasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n measureGroups.forEach((measureGroup, index) => {\n const measures = measureGroup.children\n if (!measures) {\n return\n }\n const groupId = measureGroup.id\n const {\n dataset: newSubDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(measures, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: hasEncoding,\n foldMeasureValue: `${FoldMeasureValue}${groupId}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\n },\n )\n\n const reshapeInfo = {\n id: groupId,\n index,\n foldInfo,\n unfoldInfo,\n }\n datasets.push(newSubDataset)\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n return {\n ...result,\n dataset: datasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n","import { sort, unique } from 'remeda'\nimport type { AdvancedPipe, Dataset, DatasetReshapeInfo, Datum, Line, Sort } from 'src/types'\n\nexport const sortXBandAxis: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { sort: sortAxis } = vseed as Line\n const { datasetReshapeInfo, dataset } = advancedVSeed as { datasetReshapeInfo: DatasetReshapeInfo; dataset: Dataset }\n const { unfoldInfo } = datasetReshapeInfo[0]\n const xField = unfoldInfo.encodingX\n if (!sortAxis || !xField) {\n return advancedVSeed\n }\n if (!result.analysis) result.analysis = {}\n if (!result.analysis.orderMapping) result.analysis.orderMapping = {}\n\n const axisOrderResult = calcOrder(sortAxis, xField, dataset.flat(2))\n\n result.analysis.orderMapping[xField] = axisOrderResult\n\n return result\n}\n\nexport const calcOrder = (sortConfig: Sort, id: string, dataset: Dataset): string[] => {\n if (sortConfig.customOrder) {\n return sortConfig.customOrder\n }\n\n const order = sortConfig.order || 'asc'\n const orderBy = sortConfig.orderBy\n\n const res = sort(dataset, (a, b) => {\n const aValue = a[orderBy || id] as string | number\n const bValue = b[orderBy || id] as string | number\n\n if (order === 'asc') {\n if (aValue < bValue) {\n return -1\n }\n if (aValue > bValue) {\n return 1\n }\n return 0\n }\n if (aValue > bValue) {\n return -1\n }\n if (aValue < bValue) {\n return 1\n }\n return 0\n })\n\n return unique(res.map((item: Datum) => item[id] as string))\n}\n","import { sort, unique } from 'remeda'\nimport type { AdvancedPipe, Dataset, Datum, Line, SortLegend } from 'src/types'\n\nexport const sortLegend: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { sortLegend } = vseed as Line\n const { datasetReshapeInfo, dataset } = advancedVSeed\n const colorId = datasetReshapeInfo?.[0]?.unfoldInfo?.encodingColorId\n const colorIdMap = datasetReshapeInfo?.[0]?.unfoldInfo?.colorIdMap\n const colorItems = datasetReshapeInfo?.[0]?.unfoldInfo?.colorItems\n if (!sortLegend || !colorId || !colorIdMap || !colorItems) {\n return advancedVSeed\n }\n\n if (!result.analysis) result.analysis = {}\n if (!result.analysis.orderMapping) result.analysis.orderMapping = {}\n\n if (sortLegend.customOrder) {\n const nameMap = Object.keys(colorIdMap).reduce<Record<string, string>>((pre, cur) => {\n pre[colorIdMap[cur]] = cur\n return pre\n }, {})\n\n // 先根据名称匹配, 若名称不存在, 则根据id匹配, 从而兼容名称和id的两种情况\n const orderRes = sortLegend.customOrder.map((itemNameOrId) =>\n nameMap[itemNameOrId] ? nameMap[itemNameOrId] : itemNameOrId,\n )\n result.analysis.orderMapping[colorId] = orderRes\n return result\n }\n\n const orderRes = calcOrder(sortLegend, colorId, dataset?.flat(2) || [])\n result.analysis.orderMapping[colorId] = orderRes\n\n return result\n}\n\nconst calcOrder = (sortConfig: 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 initAdvancedVSeed,\n theme,\n pivotAdapter,\n lineConfig,\n annotation,\n markStyle,\n sortXBandAxis,\n sortLegend,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n encodingForLine,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n encodingAdapter,\n defaultEncodingForLine,\n} from '../pipes'\n\nexport const lineAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter([defaultEncodingForLine, buildMeasures], [encodingForLine, buildMeasures]),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n sortXBandAxis,\n sortLegend,\n lineConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from '../color/colorAdapter'\n\nexport const initLine: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { foldInfo, unfoldInfo } = datasetReshapeInfo[0]\n\n result.type = 'line'\n result.direction = 'vertical'\n result.xField = unfoldInfo.encodingX\n result.yField = foldInfo.measureValue\n result.seriesField = isLinearColor(advancedVSeed) ? unfoldInfo.encodingDetail : unfoldInfo.encodingColorId\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport type { Color, SpecPipe } from 'src/types'\n\nexport const color: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo, chartType } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n const baseConfig = advancedVSeed.config[chartType] as { color: Color }\n\n if (!baseConfig || !baseConfig.color) {\n return result\n }\n\n const colorItems = unfoldInfo.colorItems\n const colorIdMap = unfoldInfo.colorIdMap\n\n const { color } = baseConfig\n const { colorScheme, colorMapping } = color\n\n result.color = {\n type: 'ordinal',\n domain: colorItems,\n range: colorScheme,\n specified: createSpecifiedForColorMapping(colorMapping, colorIdMap, colorItems),\n } as ILineChartSpec['color']\n return result\n}\n\nexport const createSpecifiedForColorMapping = (\n colorMapping?: Record<string, string>,\n colorIdMap?: Record<string, string>,\n colorItems?: string[],\n) => {\n if (!colorMapping || !colorIdMap || !colorItems) {\n return undefined\n }\n\n const matchedList: string[] = []\n\n // 名称越长优先级越高: 按名称长度降, 优先匹配名称长的, 避免一个短的名称匹配到了超多个长的\n const colors = Object.entries(colorMapping).sort((a, b) => b[0].length - a[0].length)\n // 准确匹配\n const accurateMap = colors.reduce(\n (prev, cur) => {\n const name = cur[0]\n const colorValue = cur[1]\n\n const accurateMatchedList = Object.entries(colorIdMap).filter(([colorKey, colorAlias]) => {\n return colorKey === name || colorAlias === name\n })\n accurateMatchedList.forEach((item) => {\n prev[item[0]] = colorValue\n matchedList.push(name)\n })\n\n return prev\n },\n {} as Record<string, string>,\n )\n\n // 模糊匹配\n const fuzzyMap = colors.reduce(\n (prev, cur) => {\n const name = cur[0]\n const colorValue = cur[1]\n if (matchedList.includes(name)) {\n return prev\n }\n\n const fuzzyMatchedList = Object.entries(colorIdMap).filter(([colorKey, colorAlias]) => {\n return colorKey.includes(name) || colorAlias.includes(name)\n })\n fuzzyMatchedList.forEach((item) => {\n // 已经匹配有值, 则不重复匹配\n if (prev[item[0]]) {\n return\n }\n prev[item[0]] = colorValue\n })\n\n return prev\n },\n {} as Record<string, string>,\n )\n\n // 合并, 准确匹配的优先级高\n return {\n ...fuzzyMap,\n ...accurateMap,\n }\n}\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport type { Color, SpecPipe } from 'src/types'\n\nexport const linearColor: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo, chartType } = advancedVSeed\n const { unfoldInfo, id } = datasetReshapeInfo[0]\n const baseConfig = advancedVSeed.config[chartType] as { color: Color }\n\n if (!baseConfig || !baseConfig.color) {\n return result\n }\n\n const { color } = baseConfig\n const { colorScheme, linearColorScheme } = color\n\n result.color = {\n type: 'linear',\n range: linearColorScheme || colorScheme || [],\n domain: [\n {\n dataId: id,\n fields: [unfoldInfo.encodingColor],\n },\n ],\n }\n\n return result\n}\n","import type { ISpec } from '@visactor/vchart'\nimport type { BackgroundColor, SpecPipe } from 'src/types'\n\nexport const backgroundColor: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed } = context\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { backgroundColor: BackgroundColor }\n\n const { backgroundColor } = baseConfig\n\n return {\n ...result,\n background: backgroundColor,\n }\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { isPivotChart } from 'src/pipeline/utils'\nimport type { SpecPipe } from 'src/types'\n\nexport const datasetXY: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { analysis, datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n const orderMapping = analysis?.orderMapping || {}\n const angle = unfoldInfo.encodingAngle\n const x = unfoldInfo.encodingX\n const colorId = unfoldInfo.encodingColorId\n const id = datasetReshapeInfo[0].id\n\n const fields: Record<string, object> = {}\n if (angle) {\n fields[angle] = {\n sortIndex: 0,\n }\n }\n if (x) {\n const order = orderMapping[x]\n if (order) {\n fields[x] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[x] = {\n sortIndex: 0,\n }\n }\n }\n\n if (colorId) {\n const order = orderMapping[colorId]\n if (order) {\n fields[colorId] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[colorId] = {\n sortIndex: 0,\n }\n }\n }\n\n return {\n ...spec,\n data: {\n id,\n // 透视表不使用 dataValues\n values: isPivotChart(vseed) ? undefined : advancedVSeed.dataset,\n fields: fields,\n },\n } as ISpec\n}\n","import type { ILineSeriesSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const progressive: SpecPipe = (spec, 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","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 { 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 { 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) => {\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 { Legend, SpecPipe } from 'src/types'\n\nexport const colorLegend: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { datasetReshapeInfo, chartType } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n const baseConfig = advancedVSeed.config[chartType] as { legend: Legend }\n if (!baseConfig || !baseConfig.legend) {\n return result\n }\n\n const { legend } = baseConfig\n const { enable, position = 'bottom', labelFontColor, labelFontSize = 12, labelFontWeight } = legend || {}\n\n const orient = ['bottom', 'bottomLeft', 'bottomRight', 'bl', 'br'].includes(position)\n ? 'bottom'\n : ['top', 'topLeft', 'topRight', 'tl', 'tr'].includes(position)\n ? 'top'\n : ['left', 'leftTop', 'leftBottom', 'lt', 'lb'].includes(position)\n ? 'left'\n : 'right'\n\n const legendPosition = ['topLeft', 'bottomLeft', 'leftTop', 'rightTop', 'lt', 'rt', 'tl', 'bl'].includes(position)\n ? 'start'\n : ['topRight', 'bottomRight', 'leftBottom', 'rightBottom', 'lb', 'rb', 'rt', 'br'].includes(position)\n ? 'end'\n : 'middle'\n\n result.legends = {\n type: 'color',\n visible: enable,\n orient,\n position: legendPosition,\n padding: 0,\n field: unfoldInfo.encodingColor,\n maxWidth: '30%',\n startText: {\n visible: true,\n style: {\n fill: labelFontColor,\n fontSize: labelFontSize,\n fontWeight: labelFontWeight,\n },\n },\n endText: {\n visible: true,\n style: {\n fill: labelFontColor,\n fontSize: labelFontSize,\n fontWeight: labelFontWeight,\n },\n },\n }\n return result\n}\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from './colorAdapter'\n\nexport const colorPointStyleFill = (stylePipe: SpecPipe): SpecPipe => {\n return (spec, context) => {\n const result = stylePipe(spec, context) as ILineChartSpec\n\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed)) {\n if (result?.point?.style) {\n result.point.style.fill = {\n field: unfoldInfo.encodingColor,\n scale: 'color',\n }\n }\n }\n\n return result\n }\n}\n","import type { Datum } from 'src/types'\nimport type {\n DimensionSelector,\n MeasureSelector,\n PartialDatumSelector,\n Selector,\n Selectors,\n ValueSelector,\n} from '../types/dataSelector'\nimport { omit } from 'remeda'\n\nexport const selector = (vchartDatum: Datum, selector: Selector | Selectors | undefined | null) => {\n // 无有效选择器, 则认为全部匹配成功\n if (!selector) {\n return true\n }\n\n const selectorMode = 'And'\n\n // 过滤掉 vchart 相关字段\n const vchartKeys = Object.keys(vchartDatum).filter((k) => k.toLocaleLowerCase().startsWith('__vchart'))\n const datum = omit(vchartDatum, vchartKeys) as Datum\n\n // 统一处理选择器为数组\n const selectors = (Array.isArray(selector) ? selector : [selector]) as Selectors\n\n return selectors[selectorMode === 'And' ? 'every' : 'some']((selector) => {\n // 1. 字符串或数字\n if (isValueSelector(selector)) {\n if (Object.values(datum).find((v) => v === selector)) {\n return true\n }\n }\n\n // 2. 指标选择器\n else if (isMeasureSelector(selector)) {\n const op = selector.operator || selector.op\n const selectorValueArr = Array.isArray(selector.value) ? selector.value : [selector.value]\n\n switch (op) {\n case '=':\n 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 point: {\n style: {},\n },\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 {\n pointBorderColor,\n pointBorderStyle,\n pointBorderWidth = 1,\n pointColor,\n pointColorOpacity,\n pointSize,\n pointVisible = true,\n } = style\n\n const lineDash = pointBorderStyle === 'dashed' ? [5, 2] : pointBorderStyle === 'dotted' ? [2, 5] : [0, 0]\n return {\n ...result,\n [`custom${index + 1}`]: {\n // 优先级: 后者覆盖前者\n level: index + 1,\n filter: (datum: Datum) => {\n if (selector(datum, style.selector)) {\n return true\n }\n return false\n },\n style: {\n visible: pointVisible,\n size: pointSize,\n fill: pointColor,\n fillOpacity: pointColorOpacity,\n innerBorder: {\n stroke: pointBorderColor,\n lineWidth: pointBorderWidth,\n distance: (pointBorderWidth || 0) / 2,\n lineDash: lineDash,\n },\n },\n },\n }\n }, {})\n\n return {\n ...result,\n point: {\n ...result.point,\n state: {\n ...customMap,\n },\n },\n }\n}\n","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 outerBorder: {\n lineWidth: 4,\n strokeOpacity: 0.25,\n distance: 2,\n },\n },\n },\n },\n } as IScatterChartSpec\n return result\n}\n\nexport const pointStateHover: SpecPipe = (spec, context) => {\n const point = (spec as IScatterChartSpec).point || {}\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n const result = {\n ...spec,\n point: {\n ...point,\n state: {\n ...(point.state || {}),\n hover: {\n scaleX: 1.4,\n scaleY: 1.4,\n stroke: (datum, context: ISeriesMarkAttributeContext) => {\n const field = unfoldInfo.encodingColorId\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 { ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from './colorAdapter'\n\nexport const colorLineStyleFill = (stylePipe: SpecPipe): SpecPipe => {\n return (spec, context) => {\n const result = stylePipe(spec, context) as ILineChartSpec\n\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed)) {\n if (result?.line?.style) {\n result.line.style.stroke = {\n field: unfoldInfo.encodingColor,\n scale: 'color',\n }\n }\n }\n\n return result\n }\n}\n","import 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, datasetReshapeInfo, dataset } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n const { lineStyle } = markStyle\n const result = {\n ...spec,\n line: {\n style: {},\n },\n } as IAreaChartSpec\n if (!lineStyle) {\n return result\n }\n\n const lineStyles = (Array.isArray(lineStyle) ? lineStyle : [lineStyle]) as LineStyle[]\n\n const colorId = unfoldInfo.encodingColorId\n const lineGroups = groupBy(dataset, (d) => d[colorId ?? ''] as string)\n\n const customMap = lineStyles.reduce<object>((result, style, index) => {\n const { lineColor, lineColorOpacity, lineSmooth, lineStyle, lineWidth = 2, lineVisible = true } = style\n\n const dashSegment = lineWidth * 2\n const dashGap = lineWidth\n\n const lineDash =\n lineStyle === 'dashed' ? [dashSegment, dashSegment] : lineStyle === 'dotted' ? [dashGap / 2, dashGap * 2] : [0, 0]\n\n const curveType = 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[colorId ?? ''] 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 visible: lineVisible,\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 ...result.line,\n state: {\n ...customMap,\n },\n },\n }\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 { 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, Dimensions, FoldInfo, Locale, Measures, SpecPipe, Tooltip, UnfoldInfo } from 'src/types'\nimport { ORIGINAL_DATA } from 'src/dataReshape'\n\nexport const tooltip: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n const { foldInfo, unfoldInfo } = datasetReshapeInfo[0] as unknown as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n result.tooltip = {\n visible: enable,\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfo, unfoldInfo),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(measures, foldInfo, unfoldInfo, locale),\n },\n }\n return result\n}\n\nexport const createDimensionContent = (\n measures: Measures,\n foldInfo: FoldInfo,\n unfoldInfo: UnfoldInfo,\n locale: Locale,\n) => {\n const { measureId, measureValue } = foldInfo\n const { encodingColor } = unfoldInfo\n\n return [\n {\n visible: true,\n shapeType: 'rectRound',\n hasShape: true,\n key: (v: unknown) => {\n const datum = v as Datum\n return (datum && (datum[encodingColor] as string)) || ''\n },\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n const { format = {}, autoFormat = true } = measure\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\nexport const createMarkContent = (\n tooltip: string[],\n dimensions: Dimensions,\n measures: Measures,\n locale: Locale,\n foldInfo: FoldInfo,\n unfoldInfo: UnfoldInfo,\n) => {\n const dims = dimensions.filter((item) => tooltip.includes(item.id))\n const meas = measures.filter((item) => tooltip.includes(item.id))\n\n const dimContent = dims.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const datum = v as Datum\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return datum && (datum[item.id] as string)\n },\n value: (v: unknown) => {\n const datum = v as Datum\n return datum && (datum[item.id] as string)\n },\n }))\n\n const meaContent = meas.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias || item.id,\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const id = item.id\n if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) {\n return ''\n }\n const originalData = datum[ORIGINAL_DATA] as Datum\n const value = originalData[id] as string | number\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n const { format = {}, autoFormat = true } = measure\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 const defaultContent = {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const { measureName } = foldInfo\n const { encodingColor: colorName } = unfoldInfo\n\n const datum = v as Datum\n return (datum && (datum[measureName || colorName] as string)) || ''\n },\n value: (v: unknown) => {\n const { measureId, measureValue } = foldInfo\n\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n\n const { 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 return [...dimContent, defaultContent, ...meaContent]\n}\n","import type { Datum } from \"src/types\"\n\nexport const isSubset = (sub: Datum, obj: Datum) => {\n return Object.entries(sub).every(([key, value]) => {\n if (typeof value === 'string') {\n return obj[key] === value\n }\n if (typeof value === 'number') {\n return obj[key] === value\n }\n return true\n })\n}\n","import type { 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, datasetReshapeInfo } = advancedVSeed\n\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\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 } = annotationVerticalLine\n\n const dataset = advancedVSeed.dataset.flat()\n\n const generateOneMarkLine = (x: number | string) => ({\n x: x as string,\n zIndex: ANNOTATION_Z_INDEX,\n line: {\n style: {\n visible: lineVisible,\n stroke: lineColor,\n lineStyle: lineStyle,\n lineWidth: lineWidth,\n lineDash: lineStyle === 'dashed' ? [5, 2] : lineStyle === 'dotted' ? [2, 5] : [0],\n },\n },\n label: {\n text: text,\n position: positionMap[textPosition || 'insideEnd'],\n style: {\n 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 if (datum[unfoldInfo.encodingX]) {\n return generateOneMarkLine(datum[unfoldInfo.encodingX] as string)\n }\n if (datum[foldInfo.measureValue]) {\n return generateOneMarkLine(datum[foldInfo.measureValue] as string)\n }\n return {}\n })\n }) as IMarkLineSpec[]\n\n const specMarkLine = ((spec as ILineChartSpec).markLine as IMarkLineSpec[]) || []\n const newMarkLine = [...specMarkLine, ...(markLine || [])]\n\n return {\n ...spec,\n markLine: newMarkLine,\n }\n}\n","import type { ILineChartSpec, IMarkLineSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { SpecPipe } from 'src/types'\nimport { isArray, isNumber, isString } from 'remeda'\nimport { ANNOTATION_Z_INDEX } from '../../../../utils/constant'\n\nexport const annotationHorizontalLine: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { annotation, datasetReshapeInfo } = advancedVSeed\n const { foldInfo, unfoldInfo } = datasetReshapeInfo[0]\n\n if (!annotation || !annotation.annotationHorizontalLine) {\n return spec\n }\n\n const { annotationHorizontalLine } = annotation\n const annotationHorizontalLineList = Array.isArray(annotationHorizontalLine)\n ? annotationHorizontalLine\n : [annotationHorizontalLine]\n\n const positionMap = {\n outsideStart: 'start',\n outsideEnd: 'end',\n outsideMiddle: 'middle',\n insideStart: 'insideStartTop',\n insideMiddle: 'insideMiddleTop',\n insideEnd: 'insideEndTop',\n }\n\n const markLine = annotationHorizontalLineList.flatMap((annotationHorizontalLine) => {\n const {\n selector: selectorPoint,\n yValue,\n text = '',\n textPosition = 'insideEnd',\n textColor = '#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 } = annotationHorizontalLine\n\n const dataset = advancedVSeed.dataset.flat()\n\n const generateOneMarkLine = (y: string | number) => {\n return {\n y,\n zIndex: ANNOTATION_Z_INDEX,\n line: {\n style: {\n visible: lineVisible,\n stroke: lineColor,\n 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 if ((!selectorPoint && isArray(yValue)) || isString(yValue) || isNumber(yValue)) {\n const yValueArr = Array.isArray(yValue) ? yValue : [yValue]\n return yValueArr.map(generateOneMarkLine)\n }\n\n const selectedData = selectorPoint ? dataset.filter((datum) => selector(datum, selectorPoint)) : []\n\n return selectedData.map((datum) => {\n if (datum[unfoldInfo.encodingY]) {\n return generateOneMarkLine(datum[unfoldInfo.encodingY] as string)\n }\n if (datum[foldInfo.measureValue]) {\n return generateOneMarkLine(datum[foldInfo.measureValue] as string)\n }\n return {}\n })\n }) as IMarkLineSpec[]\n const specMarkLine = ((spec as ILineChartSpec).markLine as IMarkLineSpec[]) || []\n const newMarkLine = [...specMarkLine, ...(markLine || [])]\n return {\n ...spec,\n markLine: newMarkLine,\n }\n}\n","import type { ICartesianSeries, ILineChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, SpecPipe } from 'src/types'\nimport { isSubset } from './utils'\nimport { ANNOTATION_Z_INDEX } from '../../../../utils/constant'\n\nexport const annotationArea: SpecPipe = (spec, context) => {\n const { advancedVSeed } = 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 } = annotationArea\n\n const dataset = advancedVSeed.dataset.flat()\n const selectedData = selectorPoint ? dataset.filter((datum) => selector(datum, selectorPoint)) : []\n\n const labelPosition = positionMap[textPosition || 'top']\n const isBottom = labelPosition.toLocaleLowerCase().includes('bottom')\n\n return {\n zIndex: ANNOTATION_Z_INDEX,\n regionRelative: true,\n positions: (data: Datum[], context: ICartesianSeries) => {\n const positionData = data.filter((item) => selectedData.some((datum) => isSubset(datum, item)))\n const xyList = positionData.map((datum) => context.dataToPosition(datum) as { x: number; y: number })\n\n const yAxisHelper = context.getYAxisHelper() as unknown as {\n getBandwidth: (depth?: number) => number\n getScale: () => {\n range: () => number[]\n }\n }\n const xAxisHelper = context.getXAxisHelper() as unknown as {\n getBandwidth: (depth?: number) => number\n getScale: () => {\n range: () => number[]\n }\n }\n\n if (typeof xAxisHelper?.getBandwidth === 'function') {\n const yScale = yAxisHelper.getScale()\n\n const minX = Math.min(...xyList.map((item) => item.x)) - (outerPadding || 4)\n const maxX = Math.max(...xyList.map((item) => item.x)) + (outerPadding || 4)\n const minY = Math.min(...yScale.range())\n const maxY = Math.max(...yScale.range())\n return [\n // 左上\n {\n x: minX,\n y: minY,\n },\n // 右上\n {\n x: maxX,\n y: minY,\n },\n // 右下\n {\n x: maxX,\n y: maxY,\n },\n // 左下\n {\n x: minX,\n y: maxY,\n },\n ]\n }\n\n if (typeof yAxisHelper?.getBandwidth === 'function') {\n const xScale = xAxisHelper.getScale()\n\n const minY = Math.min(...xyList.map((item) => item.y)) - (outerPadding || 4)\n const maxY = Math.max(...xyList.map((item) => item.y)) + (outerPadding || 4)\n const minX = Math.min(...xScale.range())\n const maxX = Math.max(...xScale.range())\n\n return [\n // 左上\n {\n x: minX,\n y: minY,\n },\n // 右上\n {\n x: maxX,\n y: minY,\n },\n // 右下\n {\n x: maxX,\n y: maxY,\n },\n // 左下\n {\n x: minX,\n y: maxY,\n },\n ]\n }\n\n return []\n },\n label: {\n position: labelPosition,\n visible: true,\n text: text,\n style: {\n dy: isBottom ? -(textFontSize || 12) * 2 : 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 { Dataset, 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, dataset } = advancedVSeed\n\n const colorItems = unique(datasetReshapeInfo.flatMap((d) => d.unfoldInfo.colorItems))\n\n const indicators = datasetReshapeInfo.map((reshapeInfo, index) => {\n const measure = measures?.find((d) => d.id === reshapeInfo.id)\n const newDataset = dataset[index] as Dataset\n const newDatasetReshapeInfo = [\n {\n ...reshapeInfo,\n unfoldInfo: { ...reshapeInfo.unfoldInfo, colorItems },\n },\n ]\n const newContext: SpecPipelineContext = {\n ...context,\n advancedVSeed: {\n ...advancedVSeed,\n datasetReshapeInfo: newDatasetReshapeInfo,\n dataset: newDataset,\n },\n }\n\n const chartSpec = execPipeline(chartPipeline, newContext, {})\n return {\n indicatorKey: reshapeInfo.id,\n title: measure?.alias,\n cellType: 'chart',\n chartModule: 'vchart',\n chartSpec: chartSpec,\n style: {\n padding: [1, 1, 0, 1],\n },\n }\n })\n\n return {\n ...result,\n indicators: indicators,\n } as 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.encoding === 'row')\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.encoding === 'column')\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 { 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'\nimport { createSpecifiedForColorMapping } from '../color/color'\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, colorMapping } = color\n\n const colorSpecified = createSpecifiedForColorMapping(colorMapping, colorIdMap, colorItems)\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 const color = colorSpecified?.[d] ?? colorScheme?.[index % colorScheme.length]\n return {\n label: d,\n shape: {\n outerBorder: border\n ? {\n stroke: color,\n distance: 3,\n lineWidth: 1,\n }\n : undefined,\n fill: color,\n },\n }\n }),\n\n item: {\n focus: true,\n maxWidth: '30%',\n focusIconStyle: {\n size: labelFontSize + 2,\n fill: labelFontColor,\n fontWeight: labelFontWeight,\n },\n shape: {\n space: border ? 6 : 4,\n style: {\n symbolType: shapeType,\n size: border ? 8 : 10,\n },\n },\n label: {\n formatMethod: (value: string) => {\n return colorIdMap[value] ?? value\n },\n style: {\n fontSize: labelFontSize,\n fill: 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 { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { IColorTableLegendOption } from '@visactor/vtable/es/ts-types/component/legend'\nimport type { Color, Legend, SpecPipe } from 'src/types'\n\nexport const pivotColorLegend: 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 const max = Math.max(...datasetReshapeInfo.map((d) => d.foldInfo.colorRange[1]))\n const min = Math.min(...datasetReshapeInfo.map((d) => d.foldInfo.colorRange[0]))\n const { legend, color } = baseConfig\n const { colorScheme, linearColorScheme } = color\n\n const { enable, position = 'bottom', labelFontColor, labelFontSize = 12, labelFontWeight = 400 } = 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: IColorTableLegendOption = {\n visible: enable,\n type: 'color',\n orient,\n position: legendPosition,\n\n colors: linearColorScheme || colorScheme || [],\n value: [min, max],\n min: min,\n max: max,\n\n maxWidth: '30%',\n startText: {\n visible: true,\n style: {\n fill: labelFontColor,\n fontSize: labelFontSize,\n fontWeight: labelFontWeight,\n },\n },\n endText: {\n visible: true,\n style: {\n fill: labelFontColor,\n fontSize: labelFontSize,\n fontWeight: labelFontWeight,\n },\n },\n }\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 colorAdapter,\n linearColor,\n colorLegend,\n colorLineStyleFill,\n colorPointStyleFill,\n pivotColorLegend,\n} from '../pipes'\n\nconst line: SpecPipeline = [\n initLine,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n verticalCrosshairLine,\n colorAdapter(discreteLegend, colorLegend),\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n label,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotLine: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initLine,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n verticalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n label,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const lineSpecPipeline: SpecPipeline = [pivotAdapter(line, pivotLine)]\n","import { lineAdvancedPipeline, lineSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerLine = () => {\n Builder._advancedPipelineMap['line'] = lineAdvancedPipeline\n Builder._specPipelineMap['line'] = lineSpecPipeline\n}","import { unique } from 'remeda'\nimport { MeasureName } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\n\nexport const defaultEncodingForColumn: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding)\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForColumn: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\n }\n\n if (hasMeasureEncoding) {\n generateMeasureEncoding(measures, encoding)\n } else {\n generateDefaultMeasureEncoding(measures, encoding)\n }\n\n return { ...advancedVSeed, encoding }\n}\n\n/**\n * --------------------维度--------------------\n */\nconst generateDefaultDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n const onlyMeasureName = dimensions.length === 1 && dimensions.find((item) => item.id === MeasureName)\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.x = uniqueDimIds.slice(0, 1) // 第一个维度放置于X轴\n encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1) // 第二个之后的维度用于颜色\n encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1) // 第二个之后的维度用于详情\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureName) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n // x\n encoding.x = unique(dimensions.filter((item) => item.encoding === 'xAxis').map((item) => item.id))\n if (encoding.x.length === 0) {\n encoding.x = [dimensions[0].id]\n }\n\n // color\n encoding.color = unique(dimensions.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (encoding.color.length === 0) {\n encoding.color = [MeasureName]\n }\n\n // detail\n encoding.detail = unique(dimensions.filter((item) => item.encoding === 'detail').map((item) => item.id))\n if (encoding.detail.length === 0) {\n encoding.detail = [MeasureName]\n }\n\n // tooltip\n encoding.tooltip = unique(dimensions.map((item) => item.id))\n encoding.tooltip = encoding.tooltip.filter((d) => d !== MeasureName)\n}\n\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.y = unique(measures.filter((item) => item.encoding === 'yAxis' || !item.encoding).map((item) => item.id))\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n // y\n encoding.y = unique(measures.filter((item) => item.encoding === 'yAxis' || !item.encoding).map((item) => item.id))\n\n // color\n const color = unique(measures.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (color.length > 0) {\n encoding.color = color\n }\n\n // tooltip\n const tooltip = unique(measures.filter((item) => item.encoding === 'tooltip').map((item) => item.id))\n encoding.tooltip = unique([...(encoding.tooltip || []), ...tooltip])\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n columnConfig,\n markStyle,\n annotation,\n sortXBandAxis,\n sortLegend,\n encodingForColumn,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n encodingAdapter,\n defaultEncodingForColumn,\n} from '../pipes'\n\nexport const columnAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter([defaultEncodingForColumn, buildMeasures], [encodingForColumn, buildMeasures]),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\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 { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n result.type = 'bar'\n result.direction = 'vertical'\n result.xField = unfoldInfo.encodingX\n result.yField = foldInfo.measureValue\n result.seriesField = unfoldInfo.encodingColorId\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { SpecPipe, StackCornerRadius } from 'src/types'\n\nexport const stackCornerRadius: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const stackCornerRadius = advancedVSeed.config?.[chartType as 'column']?.stackCornerRadius as StackCornerRadius\n const { datasetReshapeInfo } = advancedVSeed\n const { foldInfo } = datasetReshapeInfo[0]\n return {\n ...spec,\n stackCornerRadius: (_, datum) => {\n if (datum[foldInfo.measureValue] > 0) {\n return stackCornerRadius\n }\n\n return 0\n },\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 type { SpecPipe } from 'src/types'\nimport { isLinearColor } from './colorAdapter'\n\nexport const colorBarStyleFill = (stylePipe: SpecPipe): SpecPipe => {\n return (spec, context) => {\n const result = stylePipe(spec, context) as IBarChartSpec\n\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed)) {\n if (result?.bar?.style) {\n result.bar.style.fill = {\n field: unfoldInfo.encodingColor,\n scale: 'color',\n }\n }\n }\n\n return result\n }\n}\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { BarStyle, Datum, SpecPipe } from 'src/types'\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 {\n barBorderColor,\n barBorderStyle,\n barBorderWidth = 1,\n barColor,\n barColorOpacity,\n barRadius,\n barVisible = true,\n } = style\n\n const lineDash = barBorderStyle === 'dashed' ? [5, 2] : barBorderStyle === 'dotted' ? [2, 5] : [0, 0]\n return {\n ...result,\n [`custom${index + 1}`]: {\n // 优先级: 后者覆盖前者\n level: index + 1,\n filter: (datum: Datum) => {\n if (selector(datum, style.selector)) {\n return true\n }\n return false\n },\n style: {\n visible: barVisible,\n fill: barColor,\n fillOpacity: barColorOpacity,\n cornerRadius: barRadius,\n innerBorder: {\n stroke: barBorderColor,\n lineWidth: barBorderWidth,\n distance: (barBorderWidth || 0) / 2,\n lineDash: lineDash,\n },\n },\n },\n }\n }, {})\n\n 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 } = 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 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 colorAdapter,\n linearColor,\n colorLegend,\n colorBarStyleFill,\n pivotColorLegend,\n} from '../pipes'\n\nconst column: SpecPipeline = [\n initColumn,\n stackCornerRadius,\n stackInverse,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairRect,\n colorAdapter(discreteLegend, colorLegend),\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotColumn: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initColumn,\n stackCornerRadius,\n stackInverse,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairRect,\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const columnSpecPipeline = [pivotAdapter(column, pivotColumn)]\n","import { columnAdvancedPipeline, columnSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerColumn = () => {\n Builder._advancedPipelineMap['column'] = columnAdvancedPipeline\n Builder._specPipelineMap['column'] = columnSpecPipeline\n}","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n columnParallelConfig,\n markStyle,\n annotation,\n sortXBandAxis,\n sortLegend,\n encodingForColumn,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n encodingAdapter,\n defaultEncodingForColumn,\n} from '../pipes'\n\nexport const columnParallelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter([defaultEncodingForColumn, buildMeasures], [encodingForColumn, buildMeasures]),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n sortXBandAxis,\n sortLegend,\n columnParallelConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initColumnParallel: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo, dimensions } = advancedVSeed\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n const sameDimensionsMode = dimensions.length > 1 && dimensions.every((dim) => dim.id === dimensions[0].id)\n\n result.type = 'bar'\n result.direction = 'vertical'\n result.xField = sameDimensionsMode ? [unfoldInfo.encodingX] : [unfoldInfo.encodingX, unfoldInfo.encodingDetail]\n result.yField = foldInfo.measureValue\n result.seriesField = unfoldInfo.encodingColorId\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n xBand,\n yLinear,\n initColumnParallel,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n pivotIndicators,\n initPivot,\n datasetPivot,\n pivotAdapter,\n pivotDiscreteLegend,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n verticalCrosshairRect,\n stackCornerRadius,\n progressive,\n linearColor,\n colorAdapter,\n colorLegend,\n colorBarStyleFill,\n pivotColorLegend,\n} from '../pipes'\n\nconst columnParallel: SpecPipeline = [\n initColumnParallel,\n stackCornerRadius,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n colorAdapter(discreteLegend, colorLegend),\n verticalCrosshairRect,\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotColumnParallel: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initColumnParallel,\n stackCornerRadius,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairRect,\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const columnParallelSpecPipeline: SpecPipeline = [pivotAdapter(columnParallel, pivotColumnParallel)]\n","import { columnParallelAdvancedPipeline, columnParallelSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerColumnParallel = () => {\n Builder._advancedPipelineMap['columnParallel'] = columnParallelAdvancedPipeline\n Builder._specPipelineMap['columnParallel'] = columnParallelSpecPipeline\n}","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n columnPercentConfig,\n markStyle,\n annotation,\n sortXBandAxis,\n sortLegend,\n encodingForColumn,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n encodingAdapter,\n defaultEncodingForColumn,\n} from '../pipes'\n\nexport const columnPercentAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter([defaultEncodingForColumn, buildMeasures], [encodingForColumn, buildMeasures]),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\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 colorAdapter,\n linearColor,\n colorLegend,\n colorBarStyleFill,\n pivotColorLegend,\n} from '../pipes'\n\nconst columnPercent: SpecPipeline = [\n initColumn,\n stackCornerRadius,\n stackInverse,\n colorAdapter(color, linearColor),\n backgroundColor,\n percent,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n colorAdapter(discreteLegend, colorLegend),\n verticalCrosshairRect,\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotColumnPercent: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initColumn,\n stackCornerRadius,\n stackInverse,\n colorAdapter(color, linearColor),\n percent,\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairRect,\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const columnPercentSpecPipeline: SpecPipeline = [pivotAdapter(columnPercent, pivotColumnPercent)]\n","import { columnPercentAdvancedPipeline, columnPercentSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerColumnPercent = () => {\n Builder._advancedPipelineMap['columnPercent'] = columnPercentAdvancedPipeline\n Builder._specPipelineMap['columnPercent'] = columnPercentSpecPipeline\n}","import { unique } from 'remeda'\nimport { MeasureName } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\n\nexport const defaultEncodingForBar: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding)\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForBar: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\n }\n\n if (hasMeasureEncoding) {\n generateMeasureEncoding(measures, encoding)\n } else {\n generateDefaultMeasureEncoding(measures, encoding)\n }\n\n return { ...advancedVSeed, encoding }\n}\n\n/**\n * --------------------维度--------------------\n */\nconst generateDefaultDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n const onlyMeasureName = dimensions.length === 1 && dimensions.find((item) => item.id === MeasureName)\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.y = uniqueDimIds.slice(0, 1) // 第一个维度放置于X轴\n encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1) // 第二个之后的维度用于颜色\n encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1) // 第二个之后的维度用于详情\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureName) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n encoding.y = unique(dimensions.filter((item) => item.encoding === 'yAxis').map((item) => item.id))\n if (encoding.y.length === 0) {\n encoding.y = [dimensions[0].id]\n }\n\n encoding.color = unique(dimensions.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (encoding.color.length === 0) {\n encoding.color = [MeasureName]\n }\n\n encoding.detail = unique(dimensions.filter((item) => item.encoding === 'detail').map((item) => item.id))\n if (encoding.detail.length === 0) {\n encoding.detail = [MeasureName]\n }\n\n // tooltip\n encoding.tooltip = unique(dimensions.map((item) => item.id))\n encoding.tooltip = encoding.tooltip.filter((d) => d !== MeasureName)\n}\n\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.x = unique(measures.filter((item) => item.encoding === 'xAxis' || !item.encoding).map((item) => item.id))\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n // x\n encoding.x = unique(measures.filter((item) => item.encoding === 'xAxis' || !item.encoding).map((item) => item.id))\n\n // color\n const color = unique(measures.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (color.length > 0) {\n encoding.color = color\n }\n\n // tooltip\n const tooltip = unique(measures.filter((item) => item.encoding === 'tooltip').map((item) => item.id))\n encoding.tooltip = unique([...(encoding.tooltip || []), ...tooltip])\n}\n","import type { AdvancedPipe, Dataset, DatasetReshapeInfo, Line } from 'src/types'\nimport { calcOrder } from './sortXBand'\n\nexport const sortYBandAxis: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { sort: sortAxis } = vseed as Line\n const { datasetReshapeInfo, dataset } = advancedVSeed as { datasetReshapeInfo: DatasetReshapeInfo; dataset: Dataset }\n const { unfoldInfo } = datasetReshapeInfo[0]\n const yField = unfoldInfo?.encodingY\n if (!sortAxis || !yField) {\n return advancedVSeed\n }\n if (!result.analysis) result.analysis = {}\n if (!result.analysis.orderMapping) result.analysis.orderMapping = {}\n\n const axisOrderResult = calcOrder(sortAxis, yField, dataset.flat(2))\n\n result.analysis.orderMapping[yField] = axisOrderResult\n\n return result\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n buildMeasures,\n pivotAdapter,\n barConfig,\n markStyle,\n annotation,\n sortYBandAxis,\n sortLegend,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n encodingForBar,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n encodingAdapter,\n defaultEncodingForBar,\n} from '../pipes'\n\nexport const barAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter([defaultEncodingForBar, buildMeasures], [encodingForBar, buildMeasures]),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n sortYBandAxis,\n sortLegend,\n barConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initBar: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n result.type = 'bar'\n result.direction = 'horizontal'\n result.yField = unfoldInfo.encodingY\n result.xField = foldInfo.measureValue\n result.seriesField = unfoldInfo.encodingColorId\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { isPivotChart } from 'src/pipeline/utils'\nimport type { SpecPipe } from 'src/types'\n\nexport const datasetYX: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { analysis, datasetReshapeInfo } = advancedVSeed\n\n const { unfoldInfo } = datasetReshapeInfo[0]\n const orderMapping = analysis?.orderMapping || {}\n\n const angle = unfoldInfo.encodingAngle\n const y = unfoldInfo.encodingY\n const colorId = unfoldInfo.encodingColorId\n const id = datasetReshapeInfo[0].id\n\n const fields: Record<string, object> = {}\n if (angle) {\n fields[angle] = {\n sortIndex: 0,\n }\n }\n if (y) {\n const order = orderMapping[y]\n if (order) {\n fields[y] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[y] = {\n sortIndex: 0,\n }\n }\n }\n if (colorId) {\n const order = orderMapping[colorId]\n if (order) {\n fields[colorId] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[colorId] = {\n sortIndex: 0,\n }\n }\n }\n\n return {\n ...spec,\n data: {\n id,\n // 透视表不使用 dataValues\n values: isPivotChart(vseed) ? undefined : advancedVSeed.dataset,\n fields: fields,\n },\n } as ISpec\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { 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 colorAdapter,\n linearColor,\n colorLegend,\n colorBarStyleFill,\n pivotColorLegend,\n} from '../pipes'\n\nconst bar: SpecPipeline = [\n initBar,\n stackCornerRadius,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetYX,\n progressive,\n xLinear,\n yBand,\n label,\n tooltip,\n colorAdapter(discreteLegend, colorLegend),\n horizontalCrosshairRect,\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotBar: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsCol,\n datasetPivot,\n pivotIndicators([\n initBar,\n stackCornerRadius,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetYX,\n progressive,\n xLinear,\n yBand,\n label,\n label,\n tooltip,\n colorBarStyleFill(barStyle),\n horizontalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const barSpecPipeline: SpecPipeline = [pivotAdapter(bar, pivotBar)]\n","import { barAdvancedPipeline, barSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerBar = () => {\n Builder._advancedPipelineMap['bar'] = barAdvancedPipeline\n Builder._specPipelineMap['bar'] = barSpecPipeline\n}","import type { AdvancedPipeline } from 'src/types'\nimport {\n buildMeasures,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n barParallelConfig,\n markStyle,\n annotation,\n sortYBandAxis,\n sortLegend,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n encodingForBar,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n encodingAdapter,\n defaultEncodingForBar,\n} from '../pipes'\n\nexport const barParallelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter([defaultEncodingForBar, buildMeasures], [encodingForBar, buildMeasures]),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n sortYBandAxis,\n sortLegend,\n barParallelConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initBarParallel: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo, dimensions } = advancedVSeed\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n const sameDimensionsMode = dimensions.length > 1 && dimensions.every((dim) => dim.id === dimensions[0].id)\n\n result.type = 'bar'\n result.direction = 'horizontal'\n\n result.yField = sameDimensionsMode\n ? [unfoldInfo.encodingY]\n : ([unfoldInfo.encodingY, unfoldInfo.encodingDetail] as string[])\n result.xField = foldInfo.measureValue\n result.seriesField = unfoldInfo.encodingColorId\n\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetYX,\n xLinear,\n yBand,\n initBarParallel,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n initPivot,\n datasetPivot,\n pivotDiscreteLegend,\n pivotIndicators,\n pivotAdapter,\n pivotIndicatorsAsCol,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n horizontalCrosshairRect,\n stackCornerRadius,\n progressive,\n linearColor,\n colorAdapter,\n colorLegend,\n colorBarStyleFill,\n pivotColorLegend,\n} from '../pipes'\n\nconst barParallel: SpecPipeline = [\n initBarParallel,\n stackCornerRadius,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetYX,\n progressive,\n xLinear,\n yBand,\n label,\n tooltip,\n colorAdapter(discreteLegend, colorLegend),\n horizontalCrosshairRect,\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotBarParallel: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsCol,\n datasetPivot,\n pivotIndicators([\n initBarParallel,\n stackCornerRadius,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetYX,\n xLinear,\n yBand,\n label,\n tooltip,\n colorBarStyleFill(barStyle),\n horizontalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const barParallelSpecPipeline: SpecPipeline = [pivotAdapter(barParallel, pivotBarParallel)]\n","import { barParallelAdvancedPipeline, barParallelSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerBarParallel = () => {\n Builder._advancedPipelineMap['barParallel'] = barParallelAdvancedPipeline\n Builder._specPipelineMap['barParallel'] = barParallelSpecPipeline\n}","import type { AdvancedPipeline } from 'src/types'\nimport {\n buildMeasures,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n barPercentConfig,\n markStyle,\n annotation,\n sortYBandAxis,\n sortLegend,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n encodingForBar,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n encodingAdapter,\n defaultEncodingForBar,\n} from '../pipes'\n\nexport const barPercentAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter([defaultEncodingForBar, buildMeasures], [encodingForBar, buildMeasures]),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n sortYBandAxis,\n sortLegend,\n barPercentConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { SpecPipeline } from 'src/types'\nimport {\n initBar,\n datasetYX,\n xLinear,\n yBand,\n percent,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n pivotAdapter,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotIndicatorsAsCol,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n horizontalCrosshairRect,\n stackCornerRadius,\n progressive,\n colorAdapter,\n linearColor,\n colorLegend,\n colorBarStyleFill,\n pivotColorLegend,\n} from '../pipes'\n\nconst barPercent: SpecPipeline = [\n initBar,\n stackCornerRadius,\n colorAdapter(color, linearColor),\n backgroundColor,\n percent,\n datasetYX,\n progressive,\n xLinear,\n yBand,\n label,\n tooltip,\n colorAdapter(discreteLegend, colorLegend),\n horizontalCrosshairRect,\n colorBarStyleFill(barStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotBarPercent: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsCol,\n datasetPivot,\n pivotIndicators([\n initBar,\n stackCornerRadius,\n colorAdapter(color, linearColor),\n backgroundColor,\n percent,\n datasetYX,\n yBand,\n xLinear,\n label,\n tooltip,\n colorBarStyleFill(barStyle),\n horizontalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const barPercentSpecPipeline: SpecPipeline = [pivotAdapter(barPercent, pivotBarPercent)]\n","import { barPercentAdvancedPipeline, barPercentSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerBarPercent = () => {\n Builder._advancedPipelineMap['barPercent'] = barPercentAdvancedPipeline\n Builder._specPipelineMap['barPercent'] = barPercentSpecPipeline\n}","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n areaConfig,\n annotation,\n markStyle,\n sortXBandAxis,\n sortLegend,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n buildMeasures,\n encodingForLine,\n defaultMeasures,\n defaultMeasureName,\n defaultDimensions,\n encodingAdapter,\n defaultEncodingForLine,\n} from '../pipes'\n\nexport const areaAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter([defaultEncodingForLine, buildMeasures], [encodingForLine, buildMeasures]),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n sortXBandAxis,\n sortLegend,\n areaConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IAreaChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from '../color/colorAdapter'\n\nexport const initArea: SpecPipe = (spec, context) => {\n const result = { ...spec } as IAreaChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n result.type = 'area'\n result.direction = 'vertical'\n result.yField = foldInfo.measureValue\n \n result.xField = unfoldInfo.encodingX\n result.seriesField = isLinearColor(advancedVSeed) ? unfoldInfo.encodingDetail : unfoldInfo.encodingColorId\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { IAreaChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from './colorAdapter'\n\nexport const colorAreaStyleFill = (stylePipe: SpecPipe): SpecPipe => {\n return (spec, context) => {\n const result = stylePipe(spec, context) as IAreaChartSpec\n\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed)) {\n if (result?.area?.style) {\n result.area.style.fill = {\n field: unfoldInfo.encodingColor,\n scale: 'color',\n }\n }\n }\n\n return result\n }\n}\n","import type { IAreaChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { AreaStyle, Datum, SpecPipe } from 'src/types'\nimport { groupBy } from 'remeda'\n\nexport const areaStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle, datasetReshapeInfo, dataset } = advancedVSeed\n const { areaStyle } = markStyle\n const { unfoldInfo } = datasetReshapeInfo[0]\n const result = {\n ...spec,\n area: {\n visible: true,\n style: {},\n },\n } as IAreaChartSpec\n\n if (!areaStyle) {\n return result\n }\n\n const areaStyles = (Array.isArray(areaStyle) ? areaStyle : [areaStyle]) as AreaStyle[]\n\n const group = unfoldInfo.encodingColorId\n\n const areaGroups = groupBy(dataset, (d) => d[group ?? ''] as string)\n\n const customMap = areaStyles.reduce<object>((result, style, index) => {\n const { areaColor, areaColorOpacity, areaVisible = true } = style\n\n return {\n ...result,\n [`custom${index + 1}`]: {\n // 优先级: 后者覆盖前者\n level: index + 1,\n filter: (datum: Datum) => {\n const lineData = areaGroups[datum[group ?? ''] as string]\n for (const d of lineData) {\n if (selector(d, style.selector)) {\n return true\n }\n }\n return false\n },\n style: {\n visible: areaVisible,\n fill: areaColor,\n fillOpacity: areaColorOpacity,\n },\n },\n }\n }, {})\n\n return {\n ...result,\n area: {\n ...result.area,\n visible: true,\n state: {\n ...customMap,\n },\n },\n }\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n xBand,\n yLinear,\n initArea,\n stackInverse,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotAdapter,\n initPivot,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n pointStyle,\n lineStyle,\n areaStyle,\n verticalCrosshairLine,\n pointStateDimensionHover,\n datasetXY,\n progressive,\n colorAdapter,\n linearColor,\n colorLegend,\n colorPointStyleFill,\n colorLineStyleFill,\n colorAreaStyleFill,\n pivotColorLegend,\n} from '../pipes'\n\nconst area: SpecPipeline = [\n initArea,\n stackInverse,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n colorAdapter(discreteLegend, colorLegend),\n verticalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotArea: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initArea,\n colorAdapter(color, linearColor),\n backgroundColor,\n stackInverse,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const areaSpecPipeline = [pivotAdapter(area, pivotArea)]\n","import { areaAdvancedPipeline, areaSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerArea = () => {\n Builder._advancedPipelineMap['area'] = areaAdvancedPipeline\n Builder._specPipelineMap['area'] = areaSpecPipeline\n}","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n areaPercentConfig,\n annotation,\n markStyle,\n sortXBandAxis,\n sortLegend,\n encodingForLine,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n encodingAdapter,\n defaultEncodingForLine,\n} from '../pipes'\n\nexport const areaPercentAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter([defaultEncodingForLine, buildMeasures], [encodingForLine, buildMeasures]),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n sortXBandAxis,\n sortLegend,\n areaPercentConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { SpecPipeline } from 'src/types'\nimport {\n percent,\n datasetXY,\n xBand,\n yLinear,\n initArea,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotAdapter,\n initPivot,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n stackInverse,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n pointStyle,\n lineStyle,\n areaStyle,\n verticalCrosshairLine,\n progressive,\n colorLegend,\n colorAdapter,\n linearColor,\n pivotColorLegend,\n pointStateDimensionHover,\n colorPointStyleFill,\n colorLineStyleFill,\n colorAreaStyleFill,\n} from '../pipes'\n\nconst areaPercent: SpecPipeline = [\n initArea,\n stackInverse,\n colorAdapter(color, linearColor),\n backgroundColor,\n percent,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n colorAdapter(discreteLegend, colorLegend),\n verticalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotAreaPercent: SpecPipeline = [\n initPivot,\n\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initArea,\n stackInverse,\n colorAdapter(color, linearColor),\n backgroundColor,\n percent,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const areaPercentSpecPipeline = [pivotAdapter(areaPercent, pivotAreaPercent)]\n","import { areaPercentAdvancedPipeline, areaPercentSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerAreaPercent = () => {\n Builder._advancedPipelineMap['areaPercent'] = areaPercentAdvancedPipeline\n Builder._specPipelineMap['areaPercent'] = areaPercentSpecPipeline\n}","import { unique } from 'remeda'\nimport { MeasureName } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\n\nexport const defaultEncodingForScatter: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding)\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForScatter: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n // prepare measures and dimensions\n const measures = findAllMeasures(vseedMeasures)\n\n // exist encoding condition\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n\n // encoding for modify in place\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\n }\n\n if (hasMeasureEncoding) {\n generateMeasureEncoding(measures, encoding)\n } else {\n generateDefaultMeasureEncoding(measures, encoding)\n }\n\n return { ...advancedVSeed, encoding }\n}\n/**\n * --------------------维度--------------------\n */\nconst generateDefaultDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n const dimensionsWithoutMeasureName = dimensions.filter((item) => item.id !== MeasureName)\n const uniqueDimIds = unique(dimensionsWithoutMeasureName.map((d) => d.id))\n encoding.color = uniqueDimIds.slice(0)\n encoding.detail = uniqueDimIds.slice(0)\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureName) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n // color\n encoding.color = unique(dimensions.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (encoding.color.length === 0) {\n encoding.color = [MeasureName]\n }\n\n // detail\n encoding.detail = unique(dimensions.filter((item) => item.encoding === 'detail').map((item) => item.id))\n if (encoding.detail.length === 0) {\n encoding.detail = [MeasureName]\n }\n // tooltip\n encoding.tooltip = unique(dimensions.map((item) => item.id))\n encoding.tooltip = encoding.tooltip.filter((d) => d !== MeasureName)\n}\n\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.y = unique(\n measures\n .filter((item) => item.encoding === 'xAxis' || item.encoding === 'yAxis' || !item.encoding)\n .map((item) => item.id),\n )\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.tooltip = measures.map((item) => item.id)\n encoding.y = unique(\n measures\n .filter((item) => item.encoding === 'xAxis' || item.encoding === 'yAxis' || !item.encoding)\n .map((item) => item.id),\n )\n const color = unique(measures.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (color.length > 0) {\n encoding.color = [color[0]]\n }\n\n // tooltip\n const tooltip = unique(measures.filter((item) => item.encoding === 'tooltip').map((item) => item.id))\n encoding.tooltip = unique([...(encoding.tooltip || []), ...tooltip])\n}\n","import type { AdvancedPipe, MeasureGroup, Measures, MeasureTree, Scatter, ScatterMeasures } from 'src/types'\nimport { isMeasureTreeWithParentId, isMeasureTreeWithChildren } from './utils'\n\nexport const buildMeasuresForScatter: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context as {\n vseed: Scatter\n }\n\n // 带Children的指标树, 不进行任何处理\n if (isMeasureTreeWithChildren(vseed)) {\n advancedVSeed.measures = vseed.measures\n return advancedVSeed\n }\n // 带parentId的指标树, 转换为带children的指标树\n if (isMeasureTreeWithParentId(vseed)) {\n advancedVSeed.measures = generateMeasuresByParentId(vseed.measures as Measures)\n return advancedVSeed\n }\n\n /**\n * 既不是带Children的指标树, 也不是带parentId的指标树, 则自动生成指标\n */\n\n const scatterMeasures = vseed.scatterMeasures\n ? vseed.scatterMeasures\n : basicMeasuresToScatterMeasures(advancedVSeed.measures || [])\n advancedVSeed.measures = scatterMeasuresToMeasureTree(scatterMeasures)\n\n return advancedVSeed\n}\n\nconst basicMeasuresToScatterMeasures = (basicMeasures: Measures): ScatterMeasures => {\n const yMeasures: Measures = []\n const xMeasures: Measures = []\n\n for (let index = 0; index < basicMeasures.length; index++) {\n const item = basicMeasures[index]\n const encoding = Array.isArray(item.encoding) ? item.encoding : [item.encoding]\n const isYAxis = encoding.includes('yAxis')\n const isXAxis = encoding.includes('xAxis')\n\n if (isYAxis) {\n yMeasures.push(item)\n } else if (isXAxis) {\n xMeasures.push(item)\n } else {\n if (index !== 0) {\n yMeasures.push(item)\n } else {\n xMeasures.push(item)\n }\n }\n }\n\n if (yMeasures.length === 0 && xMeasures.length > 0) {\n yMeasures.push(xMeasures[0])\n }\n\n return [{ id: 'scatterMeasures', xMeasures, yMeasures }]\n}\n\nconst scatterMeasuresToMeasureTree = (scatterMeasures: ScatterMeasures): MeasureTree => {\n const measureTree = scatterMeasures.map((item, index): MeasureGroup => {\n const { id, xMeasures, yMeasures } = item\n const groupChildren: MeasureGroup[] = []\n\n let groupId: string = `${id}-`\n if (xMeasures) {\n const arrPrimaryMeasures = Array.isArray(xMeasures) ? xMeasures : [xMeasures]\n const alias = arrPrimaryMeasures.map((item) => item.alias || item.id).toString()\n groupId += alias\n groupChildren.push({\n id: `${index}-x`,\n alias: arrPrimaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrPrimaryMeasures,\n })\n }\n if (yMeasures) {\n const arrSecondaryMeasures = Array.isArray(yMeasures) ? yMeasures : [yMeasures]\n const alias = arrSecondaryMeasures.map((item) => item.alias || item.id).toString()\n groupId += alias\n groupChildren.push({\n id: `${index}-y`,\n alias: arrSecondaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrSecondaryMeasures,\n })\n }\n\n return {\n id: groupId,\n alias: groupId,\n children: groupChildren,\n }\n })\n\n // 只有1个散点图, 仅返回2层, vchart 绘制散点图\n if (scatterMeasures.length === 1) {\n return measureTree[0].children || []\n }\n\n // 有多个散点图, 返回3层, pivot chart 绘制组合散点图\n return measureTree\n}\n\nconst generateMeasuresByParentId = (measures: Measures) => {\n const scatterMeasures: ScatterMeasures = []\n\n measures.forEach((item) => {\n if (!item.parentId) {\n return\n }\n\n if (!scatterMeasures.find((d) => d.id === item.parentId)) {\n scatterMeasures.push({\n id: item.parentId,\n yMeasures: [],\n xMeasures: [],\n })\n }\n\n const scatterChart = scatterMeasures.find((d) => d.id === item.parentId)\n if (!scatterChart || !Array.isArray(scatterChart.yMeasures) || !Array.isArray(scatterChart.xMeasures)) {\n return\n }\n\n const encoding = Array.isArray(item.encoding) ? item.encoding : [item.encoding]\n const isX = encoding.includes('xAxis')\n const isY = encoding.includes('yAxis')\n const isEmpty = !encoding.length\n if (isY) {\n scatterChart.yMeasures.push(item)\n } else if (isX) {\n scatterChart.xMeasures.push(item)\n } else if (isEmpty) {\n if (scatterChart.yMeasures.length !== 0) {\n scatterChart.yMeasures.push(item)\n } else {\n scatterChart.xMeasures.push(item)\n }\n }\n })\n\n return scatterMeasuresToMeasureTree(scatterMeasures)\n}\n","import { uniqueBy } from 'remeda'\nimport { dataReshapeByEncoding, FoldXMeasureId, FoldXMeasureValue, FoldYMeasureId, FoldYMeasureValue } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n Encoding,\n FoldInfo,\n MeasureGroup,\n UnfoldInfo,\n} from 'src/types'\n\nexport const reshapeWithScatterEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed as ColumnParallel\n const { dimensions, measures, encoding, chartType } = advancedVSeed\n\n if (!measures || !dimensions || !dataset || !encoding) {\n return result\n }\n\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n\n if (measures.length > 2) {\n throw new Error('measures can not be more than 2')\n }\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const datasets: Dataset[] = []\n const xMeasures = measures[0] as MeasureGroup\n const yMeasures = (measures[1] || xMeasures) as MeasureGroup\n\n if (xMeasures && xMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (d) => d.id),\n uniqueBy(xMeasures.children, (d) => d.id),\n encoding as Encoding,\n {\n foldMeasureValue: FoldXMeasureValue,\n foldMeasureId: FoldXMeasureId,\n colorItemAsId: true,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\n },\n )\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n if (yMeasures && yMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n datasets[0],\n uniqueBy(dimensions, (d) => d.id),\n uniqueBy(yMeasures.children, (d) => d.id),\n encoding as Encoding,\n {\n foldMeasureValue: FoldYMeasureValue,\n foldMeasureId: FoldYMeasureId,\n colorItemAsId: true,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\n },\n )\n\n datasets[0] = newDataset\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n const unfoldInfo: UnfoldInfo = {\n ...unfoldInfoList[0],\n colorItems: unfoldInfoList.flatMap((d) => d.colorItems),\n colorIdMap: unfoldInfoList.reduce((prev, cur) => ({ ...prev, ...cur.colorIdMap }), {}),\n }\n\n return {\n ...result,\n dataset: datasets[0],\n\n datasetReshapeInfo: [\n {\n id: String(chartType),\n index: 0,\n foldInfo: foldInfoList[0],\n foldInfoList: foldInfoList,\n unfoldInfo: unfoldInfo,\n },\n ],\n }\n}\n","import { dataReshapeByEncoding, FoldXMeasureValue, FoldYMeasureValue } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport { measureDepth } from 'src/pipeline/utils'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Encoding,\n FoldInfo,\n MeasureGroup,\n UnfoldInfo,\n} from 'src/types'\n\nexport const pivotReshapeWithScatterEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed as ColumnParallel\n const { dimensions, measures, encoding, chartType } = advancedVSeed\n\n if (!measures || !dimensions || !dataset || !encoding) {\n return result\n }\n\n const measureGroups: Array<MeasureGroup[]> = []\n\n const depth = measureDepth(measures)\n if (depth === 3) {\n measures.forEach((measure: MeasureGroup) => {\n measureGroups.push(measure.children as unknown as MeasureGroup[])\n })\n } else if (depth === 2) {\n measureGroups.push(measures)\n }\n\n const datasetList: Dataset[] = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n measureGroups.forEach((measures: MeasureGroup[], index) => {\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n\n if (measures.length > 2) {\n throw new Error('measures can not be more than 2')\n }\n\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const datasets: Dataset[] = []\n const xMeasures = measures[0]\n const yMeasures = measures[1] || xMeasures\n\n if (xMeasures && xMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(dataset, dimensions, xMeasures.children, encoding as Encoding, {\n foldMeasureValue: `${FoldXMeasureValue}${index}`,\n colorItemAsId: true,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\n })\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n if (yMeasures && yMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(dataset, dimensions, yMeasures.children, encoding as Encoding, {\n foldMeasureValue: `${FoldYMeasureValue}${index}`,\n colorItemAsId: true,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\n })\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n const unfoldInfo: UnfoldInfo = {\n ...unfoldInfoList[0],\n colorItems: unfoldInfoList.flatMap((d) => d.colorItems),\n colorIdMap: unfoldInfoList.reduce((prev, cur) => ({ ...prev, ...cur.colorIdMap }), {}),\n }\n\n const reshapeInfo = {\n id: `${chartType}-${index}`,\n index,\n foldInfo: foldInfoList[0],\n foldInfoList: foldInfoList,\n unfoldInfo: unfoldInfo,\n }\n\n datasetReshapeInfo.push(reshapeInfo)\n datasetList.push(datasets[0].map((d, index) => ({ ...d, ...(datasets[1]?.[index] || {}) })))\n })\n\n return {\n ...result,\n dataset: datasetList,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n annotation,\n markStyle,\n scatterConfig,\n encodingForScatter,\n buildMeasuresForScatter,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n encodingAdapter,\n defaultEncodingForScatter,\n} from '../pipes'\nimport { reshapeWithScatterEncoding } from '../pipes/reshape/reshapeWithScatterEncoding'\nimport { pivotReshapeWithScatterEncoding } from '../pipes/reshape/pivotReshapeWithScatterEncoding'\n\nexport const scatterAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter([defaultEncodingForScatter, buildMeasuresForScatter], [encodingForScatter, buildMeasuresForScatter]),\n pivotAdapter([reshapeWithScatterEncoding], [pivotReshapeWithScatterEncoding]),\n\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 { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo, foldInfoList } = datasetReshapeInfo[0]\n\n result.type = 'scatter'\n result.direction = 'vertical'\n result.xField = foldInfoList?.[0].measureValue\n if (foldInfoList?.[1]) {\n result.yField = foldInfoList[1].measureValue\n }\n\n result.seriesField = unfoldInfo.encodingColorId\n\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { isPivotChart } from 'src/pipeline/utils'\nimport type { SpecPipe } from 'src/types'\n\nexport const datasetScatter: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const id = datasetReshapeInfo[0].id\n\n const fields: Record<string, object> = {}\n\n return {\n ...spec,\n data: {\n id,\n // 透视表不使用 dataValues\n values: isPivotChart(vseed) ? undefined : advancedVSeed.dataset.flat(),\n fields: fields,\n },\n } as ISpec\n}\n","import { isEmpty } from 'remeda'\nimport { autoFormatter, createFormatter, findMeasureById } from '../../../../utils'\nimport type { Datum, Dimensions, FoldInfo, Locale, Measures, SpecPipe, Tooltip, UnfoldInfo } from 'src/types'\nimport { ORIGINAL_DATA } from 'src/dataReshape'\n\nexport const tooltipScatter: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n const { foldInfoList } = datasetReshapeInfo[0] as unknown as {\n foldInfoList: FoldInfo[]\n unfoldInfo: UnfoldInfo\n }\n\n result.tooltip = {\n visible: enable,\n\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfoList),\n },\n dimension: {\n visible: false,\n },\n }\n return result\n}\n\nexport const createMarkContent = (\n tooltip: string[],\n dimensions: Dimensions,\n measures: Measures,\n locale: Locale,\n foldInfoList: FoldInfo[],\n) => {\n const dims = dimensions.filter((item) => tooltip.includes(item.id))\n const meas = measures.filter((item) => tooltip.includes(item.id))\n\n const dimContent = dims.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const datum = v as Datum\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return datum && (datum[item.id] as string)\n },\n value: (v: unknown) => {\n const datum = v as Datum\n return datum && (datum[item.id] as string)\n },\n }))\n\n const meaContent = meas.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias || item.id,\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const id = item.id\n if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) {\n return ''\n }\n const originalData = datum[ORIGINAL_DATA] as Datum\n const value = originalData[id] as string | number\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n const { format = {}, autoFormat = true } = measure\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 const foldMeaContent = foldInfoList.map((foldInfo) => {\n return {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const { measureId, foldMap } = foldInfo\n const datum = v as Datum\n const id = datum[measureId] as string\n return foldMap[id] || id\n },\n value: (v: unknown) => {\n const { measureId, measureValue } = foldInfo\n\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n 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 return [...dimContent, ...foldMeaContent, ...meaContent]\n}\n","import type { ICartesianCrosshairSpec, ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const horizontalCrosshairLine: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n\n const config = advancedVSeed.config?.[chartType as 'line']?.crosshairLine\n if (!config) {\n return result\n }\n\n if (!result.crosshair) {\n result.crosshair = {}\n }\n\n const visible = config.visible || true\n const lineColor = config.lineColor || undefined\n const labelColor = config.labelColor || undefined\n const labelVisible = config.labelVisible || undefined\n const labelBackgroundColor = config.labelBackgroundColor || undefined\n\n const crosshair = result.crosshair as ICartesianCrosshairSpec\n crosshair.yField = {\n visible,\n line: {\n type: 'line',\n style: {\n lineWidth: 1,\n opacity: 1,\n stroke: lineColor,\n lineDash: [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 yLinear,\n backgroundColor,\n label,\n tooltipScatter,\n discreteLegend,\n color,\n initPivot,\n datasetPivot,\n pivotDiscreteLegend,\n pivotIndicators,\n pivotAdapter,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n pointStyle,\n verticalCrosshairLine,\n xLinear,\n horizontalCrosshairLine,\n pointStateHover,\n initScatter,\n progressive,\n datasetScatter,\n linearColor,\n colorAdapter,\n colorPointStyleFill,\n colorLegend,\n pivotColorLegend,\n} from '../pipes'\n\nconst scatter: SpecPipeline = [\n initScatter,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetScatter,\n progressive,\n xLinear,\n yLinear,\n label,\n tooltipScatter,\n colorAdapter(discreteLegend, colorLegend),\n verticalCrosshairLine,\n horizontalCrosshairLine,\n colorPointStyleFill(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 colorAdapter(color, linearColor),\n backgroundColor,\n datasetScatter,\n progressive,\n xLinear,\n yLinear,\n label,\n tooltipScatter,\n verticalCrosshairLine,\n horizontalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateHover,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const scatterSpecPipeline: SpecPipeline = [pivotAdapter(scatter, pivotScatter)]\n","import { scatterAdvancedPipeline, scatterSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerScatter = () => {\n Builder._advancedPipelineMap['scatter'] = scatterAdvancedPipeline\n Builder._specPipelineMap['scatter'] = scatterSpecPipeline\n}","import { unique } from 'remeda'\nimport { MeasureName } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\n\nexport const defaultEncodingForDualAxis: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding)\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForDualAxis: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\n }\n\n if (hasMeasureEncoding) {\n generateMeasureEncoding(measures, encoding)\n } else {\n generateDefaultMeasureEncoding(measures, encoding)\n }\n\n return { ...advancedVSeed, encoding }\n}\n\n/**\n * --------------------维度--------------------\n */\nconst generateDefaultDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n const onlyMeasureName = dimensions.length === 1 && dimensions.find((item) => item.id === MeasureName)\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.x = uniqueDimIds.slice(0, 1) // 第一个维度放置于X轴\n encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1) // 第二个之后的维度用于颜色\n encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1) // 第二个之后的维度用于详情\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureName) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n // x\n encoding.x = unique(dimensions.filter((item) => item.encoding === 'xAxis').map((item) => item.id))\n if (encoding.x.length === 0) {\n encoding.x = [dimensions[0].id]\n }\n\n // color\n encoding.color = unique(dimensions.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (encoding.color.length === 0) {\n encoding.color = [MeasureName]\n }\n\n // detail\n encoding.detail = unique(dimensions.filter((item) => item.encoding === 'detail').map((item) => item.id))\n if (encoding.detail.length === 0) {\n encoding.detail = [MeasureName]\n }\n\n // tooltip\n encoding.tooltip = unique(dimensions.map((item) => item.id))\n encoding.tooltip = encoding.tooltip.filter((d) => d !== MeasureName)\n}\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.y = unique(\n measures\n .filter((item) => item.encoding === 'primaryYAxis' || item.encoding === 'secondaryYAxis' || !item.encoding)\n .map((item) => item.id),\n )\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n // y\n encoding.y = unique(\n measures\n .filter((item) => item.encoding === 'primaryYAxis' || item.encoding === 'secondaryYAxis' || !item.encoding)\n .map((item) => item.id),\n )\n\n // color\n const color = unique(measures.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (color.length > 0) {\n encoding.color = color\n }\n\n // tooltip\n const tooltip = unique(measures.filter((item) => item.encoding === 'tooltip').map((item) => item.id))\n encoding.tooltip = unique([...(encoding.tooltip || []), ...tooltip])\n}\n","import type { AdvancedPipe, DualAxis, DualMeasures, MeasureGroup, Measures, MeasureTree } from 'src/types'\nimport { isMeasureTreeWithParentId, isMeasureTreeWithChildren } from './utils'\n\nexport const buildMeasuresForDualAxis: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context as {\n vseed: DualAxis\n }\n\n // 带Children的指标树, 不进行任何处理\n if (isMeasureTreeWithChildren(vseed)) {\n advancedVSeed.measures = vseed.measures\n return advancedVSeed\n }\n // 带parentId的指标树, 转换为带children的指标树\n if (isMeasureTreeWithParentId(vseed)) {\n advancedVSeed.measures = generateMeasuresByParentId(vseed.measures as Measures)\n return advancedVSeed\n }\n\n /**\n * 既不是带Children的指标树, 也不是带parentId的指标树, 则自动生成指标\n */\n const dualMeasures = vseed.dualMeasures\n ? vseed.dualMeasures\n : basicMeasuresToDualMeasures(advancedVSeed.measures || [])\n advancedVSeed.measures = dualMeasuresToMeasureTree(dualMeasures)\n\n return advancedVSeed\n}\n\nconst basicMeasuresToDualMeasures = (basicMeasures: Measures): DualMeasures => {\n const primaryMeasures: Measures = []\n const secondaryMeasures: Measures = []\n\n for (let index = 0; index < basicMeasures.length; index++) {\n const item = basicMeasures[index]\n const encoding = Array.isArray(item.encoding) ? item.encoding : [item.encoding]\n const isPrimaryYAxis = encoding.includes('primaryYAxis')\n const isSecondaryYAxis = encoding.includes('secondaryYAxis')\n\n if (isPrimaryYAxis) {\n primaryMeasures.push(item)\n } else if (isSecondaryYAxis) {\n secondaryMeasures.push(item)\n } else {\n if (index === 0) {\n primaryMeasures.push(item)\n } else {\n secondaryMeasures.push(item)\n }\n }\n }\n\n return [{ id: 'dualMeasures', primaryMeasures, secondaryMeasures }]\n}\n\nconst dualMeasuresToMeasureTree = (dualMeasures: DualMeasures): MeasureTree => {\n const measureTree = dualMeasures.map((item, index): MeasureGroup => {\n const { id, primaryMeasures, secondaryMeasures } = item\n const groupChildren: MeasureGroup[] = []\n\n let groupId: string = `${id}-`\n if (primaryMeasures) {\n const arrPrimaryMeasures = Array.isArray(primaryMeasures) ? primaryMeasures : [primaryMeasures]\n const alias = arrPrimaryMeasures.map((item) => item.alias || item.id).toString()\n groupId += alias\n groupChildren.push({\n id: `${index}-primary`,\n alias: arrPrimaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrPrimaryMeasures,\n })\n }\n if (secondaryMeasures) {\n const arrSecondaryMeasures = Array.isArray(secondaryMeasures) ? secondaryMeasures : [secondaryMeasures]\n const alias = arrSecondaryMeasures.map((item) => item.alias || item.id).toString()\n groupId += alias\n groupChildren.push({\n id: `${index}-secondary`,\n alias: arrSecondaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrSecondaryMeasures,\n })\n }\n\n return {\n id: groupId,\n alias: groupId,\n children: groupChildren,\n }\n })\n\n // 只有1个双轴图, 仅返回2层, vchart 绘制双轴图\n if (dualMeasures.length === 1) {\n return measureTree[0].children || []\n }\n\n // 有多个双轴图, 返回3层, pivot chart 绘制组合双轴图\n return measureTree\n}\n\nconst generateMeasuresByParentId = (measures: Measures) => {\n const dualMeasures: DualMeasures = []\n\n measures.forEach((item) => {\n if (!item.parentId) {\n return\n }\n\n if (!dualMeasures.find((d) => d.id === item.parentId)) {\n dualMeasures.push({\n id: item.parentId,\n primaryMeasures: [],\n secondaryMeasures: [],\n })\n }\n\n const dualChart = dualMeasures.find((d) => d.id === item.parentId)\n if (!dualChart || !Array.isArray(dualChart.primaryMeasures) || !Array.isArray(dualChart.secondaryMeasures)) {\n return\n }\n\n const encoding = Array.isArray(item.encoding) ? item.encoding : [item.encoding]\n const isPrimary = encoding.includes('primaryYAxis')\n const isSecondary = encoding.includes('secondaryYAxis')\n const isEmpty = !item.encoding\n\n if (isPrimary) {\n dualChart.primaryMeasures.push(item)\n } else if (isSecondary) {\n dualChart.secondaryMeasures.push(item)\n } else if (isEmpty) {\n if (dualChart.primaryMeasures.length === 0) {\n dualChart.primaryMeasures.push(item)\n } else {\n dualChart.secondaryMeasures.push(item)\n }\n }\n })\n\n return dualMeasuresToMeasureTree(dualMeasures)\n}\n","import { dataReshapeByEncoding, FoldPrimaryMeasureValue, FoldSecondaryMeasureValue } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n Dimension,\n Encoding,\n FoldInfo,\n MeasureGroup,\n UnfoldInfo,\n} from 'src/types'\n\nexport const reshapeWithDualEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed as ColumnParallel\n const { dimensions, measures, encoding, chartType } = advancedVSeed\n\n if (!measures || !dimensions || !dataset || !encoding) {\n return result\n }\n\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n\n if (measures.length > 2) {\n throw new Error('measures can not be more than 2')\n }\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const datasets: Dataset[] = []\n const primaryMeasures = measures[0] as MeasureGroup\n const secondaryMeasures = (measures[1] || []) as MeasureGroup\n const hasEncoding = (vseed.dimensions || []).some((item: Dimension) => item.encoding)\n\n if (primaryMeasures && primaryMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding as Encoding, {\n colorItemAsId: hasEncoding,\n foldMeasureValue: FoldPrimaryMeasureValue,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\n })\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n if (secondaryMeasures && secondaryMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(dataset, dimensions, secondaryMeasures.children, encoding as Encoding, {\n foldMeasureValue: FoldSecondaryMeasureValue,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\n })\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n const unfoldInfo: UnfoldInfo = {\n ...unfoldInfoList[0],\n colorItems: unfoldInfoList.flatMap((d) => d.colorItems),\n colorIdMap: unfoldInfoList.reduce((prev, cur) => ({ ...prev, ...cur.colorIdMap }), {}),\n }\n\n return {\n ...result,\n dataset: datasets,\n datasetReshapeInfo: [\n {\n id: String(chartType),\n index: 0,\n foldInfo: foldInfoList[0],\n foldInfoList: foldInfoList,\n unfoldInfo: unfoldInfo,\n },\n ],\n }\n}\n","import { dataReshapeByEncoding, FoldPrimaryMeasureValue, FoldSecondaryMeasureValue } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport { measureDepth } from 'src/pipeline/utils'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Dimension,\n Encoding,\n FoldInfo,\n MeasureGroup,\n UnfoldInfo,\n} from 'src/types'\n\nexport const pivotReshapeWithDualEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed as ColumnParallel\n const { dimensions, measures, encoding, chartType } = advancedVSeed\n\n if (!measures || !dimensions || !dataset || !encoding) {\n return result\n }\n const hasEncoding = (vseed.dimensions || []).some((item: Dimension) => item.encoding)\n\n const datasetList: Dataset[] = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n const measureGroups: Array<MeasureGroup[]> = []\n\n const depth = measureDepth(measures)\n if (depth === 3) {\n measures.forEach((measure: MeasureGroup) => {\n measureGroups.push(measure.children as unknown as MeasureGroup[])\n })\n } else if (depth === 2) {\n measureGroups.push(measures as unknown as MeasureGroup[])\n }\n\n measureGroups.forEach((measures: MeasureGroup[], index) => {\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n\n if (measures.length > 2) {\n throw new Error('measures can not be more than 2')\n }\n\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const datasets: Dataset[] = []\n const primaryMeasures = measures[0]\n const secondaryMeasures = measures[1] || []\n\n if (primaryMeasures && primaryMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding as Encoding, {\n colorItemAsId: hasEncoding,\n foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\n })\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n if (secondaryMeasures && secondaryMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(dataset, dimensions, secondaryMeasures.children, encoding as Encoding, {\n foldMeasureValue: `${FoldSecondaryMeasureValue}${index}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\n })\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n const unfoldInfo: UnfoldInfo = {\n ...unfoldInfoList[0],\n colorItems: unfoldInfoList.flatMap((d) => d.colorItems),\n colorIdMap: unfoldInfoList.reduce((prev, cur) => ({ ...prev, ...cur.colorIdMap }), {}),\n }\n\n const reshapeInfo = {\n id: `${chartType}-${index}`,\n index,\n foldInfo: foldInfoList[0],\n foldInfoList: foldInfoList,\n unfoldInfo: unfoldInfo,\n }\n\n datasetReshapeInfo.push(reshapeInfo)\n datasetList.push(datasets.flat(2))\n })\n\n return {\n ...result,\n dataset: datasetList,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n","import { pick } from 'remeda'\nimport 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 'alignTicks',\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 type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n annotation,\n markStyle,\n sortXBandAxis,\n sortLegend,\n dualAxisConfig,\n encodingForDualAxis,\n reshapeWithDualEncoding,\n pivotReshapeWithDualEncoding,\n buildMeasuresForDualAxis,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n encodingAdapter,\n defaultEncodingForDualAxis,\n} from '../pipes'\n\nexport const dualAxisAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter([defaultEncodingForDualAxis, buildMeasuresForDualAxis], [encodingForDualAxis, buildMeasuresForDualAxis]),\n pivotAdapter([reshapeWithDualEncoding], [pivotReshapeWithDualEncoding]),\n\n sortXBandAxis,\n sortLegend,\n dualAxisConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { Spec, SpecPipe, SpecPipeline, SpecPipelineContext } from 'src/types'\nimport { execPipeline } from '../../../../utils'\nimport type { ICommonChartSpec, ILineSeriesSpec } from '@visactor/vchart'\n\nexport const series = (...args: SpecPipeline[]): SpecPipe => {\n const result = {\n type: 'common',\n padding: 0,\n region: [\n {\n clip: true,\n },\n ],\n } as ICommonChartSpec\n\n return (_, context) => {\n result.series = args.map((pipeline) => {\n return execPipeline<Spec, SpecPipelineContext>(pipeline, context, {})\n }) as ILineSeriesSpec[]\n\n return result\n }\n}\n\n/**\n * @description 双轴图的透视场景, 不能使用此pipe, 请使用series\n * 因为VTable.PivotVChart会自行解析数据, 而非VChart解析.\n */\nexport const seriesDualAxis = (...args: SpecPipeline[]): SpecPipe => {\n const result = {\n type: 'common',\n padding: 0,\n region: [\n {\n clip: true,\n },\n ],\n } as ICommonChartSpec\n\n const createDualContext = <T extends SpecPipelineContext>(context: T, index: number): T => {\n const { advancedVSeed } = context\n const dataset = advancedVSeed.dataset[index]\n return {\n ...context,\n advancedVSeed: {\n ...advancedVSeed,\n dataset: dataset,\n },\n }\n }\n\n return (_, context) => {\n result.series = args.map((pipeline, index) => {\n const seriesContext = createDualContext(context, index)\n return execPipeline<Spec, SpecPipelineContext>(pipeline, seriesContext, {})\n }) as ILineSeriesSpec[]\n\n return result\n }\n}\n","import type { IBarSeriesSpec, ILineSeriesSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from '../color/colorAdapter'\n\nexport const initDualAxisPrimary: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarSeriesSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo, foldInfoList, id } = datasetReshapeInfo[0]\n\n result.id = `${id}-primary-series`\n result.type = 'bar'\n result.direction = 'vertical'\n result.xField = unfoldInfo.encodingX\n result.seriesField = unfoldInfo.encodingColorId\n\n result.yField = foldInfoList?.[0].measureValue\n result.animation = true\n\n return result\n}\n\nexport const initDualAxisSecondary: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineSeriesSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo, foldInfoList, id } = datasetReshapeInfo[0]\n\n result.id = `${id}-secondary-series`\n result.type = 'line'\n result.direction = 'vertical'\n result.xField = unfoldInfo.encodingX\n if (foldInfoList?.[1]) {\n result.yField = foldInfoList[1].measureValue\n }\n\n result.seriesField = isLinearColor(advancedVSeed) ? unfoldInfo.encodingDetail : unfoldInfo.encodingColorId\n\n result.animation = true\n\n return result\n}\n","import type { IBarSeriesSpec, ISeriesSpec } from '@visactor/vchart'\nimport { DUAL_AXIS_CHART_COLUMN_Z_INDEX, DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX } from 'src/pipeline/utils/constant'\nimport type { DualChartType, SpecPipe } from 'src/types'\n\nexport const dualChartTypePrimary: SpecPipe = (spec, context) => {\n const result = { ...spec, zIndex: DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX } as ISeriesSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { datasetReshapeInfo } = advancedVSeed\n const index = datasetReshapeInfo[0].index\n\n const config =\n advancedVSeed.config?.[chartType as 'dualAxis']?.dualChartType ||\n ({\n primary: 'column',\n secondary: 'line',\n } as DualChartType)\n\n const primary = Array.isArray(config) ? config[index].primary || config[0].primary : config.primary\n const secondary = Array.isArray(config) ? config[index].secondary || config[0].secondary : config.secondary\n const bothColumn = primary === 'column' && secondary === 'column'\n const type = bothColumn ? 'columnParallel' : primary\n switch (type) {\n case 'line': {\n result.type = 'line'\n break\n }\n case 'column': {\n result.type = 'bar'\n result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX\n break\n }\n case 'columnParallel': {\n const columnSpec = result as IBarSeriesSpec\n if (Array.isArray(columnSpec.xField)) {\n columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.encodingDetail)\n } else if (columnSpec.xField) {\n columnSpec.xField = [columnSpec.xField, datasetReshapeInfo[0].unfoldInfo.encodingDetail]\n }\n columnSpec.type = 'bar'\n result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX\n break\n }\n // @ts-expect-error 'columnPercent' 和 'areaPercent' 会改变轴值域为[0,1], VTable不支持.\n case 'columnPercent': {\n result.type = 'bar'\n result.percent = true\n break\n }\n case 'area': {\n result.type = 'area'\n break\n }\n // @ts-expect-error 'columnPercent' 和 'areaPercent' 会改变轴值域为[0,1], VTable不支持.\n case 'areaPercent': {\n result.type = 'area'\n result.percent = true\n break\n }\n case 'scatter': {\n result.type = 'scatter'\n break\n }\n default:\n result.type = primary\n }\n\n return result\n}\n\nexport const dualChartTypeSecondary: SpecPipe = (spec, context) => {\n const result = { ...spec, zIndex: DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX } as ISeriesSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { datasetReshapeInfo } = advancedVSeed\n const config =\n advancedVSeed.config?.[chartType as 'dualAxis']?.dualChartType ||\n ({\n primary: 'column',\n secondary: 'line',\n } as DualChartType)\n\n const index = datasetReshapeInfo[0].index\n const primary = Array.isArray(config) ? config[index].primary || config[0].primary : config.primary\n const secondary = Array.isArray(config) ? config[index].secondary || config[0].secondary : config.secondary\n const bothColumn = primary === 'column' && secondary === 'column'\n const type = bothColumn ? 'columnParallel' : secondary\n\n switch (type) {\n case 'line': {\n result.type = 'line'\n break\n }\n case 'column': {\n result.type = 'bar'\n result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX\n break\n }\n case 'columnParallel': {\n const columnSpec = result as IBarSeriesSpec\n if (Array.isArray(columnSpec.xField)) {\n columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.encodingDetail)\n } else if (columnSpec.xField) {\n columnSpec.xField = [columnSpec.xField, datasetReshapeInfo[0].unfoldInfo.encodingDetail]\n }\n columnSpec.type = 'bar'\n result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX\n break\n }\n // @ts-expect-error 'columnPercent' 和 'areaPercent' 会改变轴值域为[0,1], VTable不支持.\n case 'columnPercent': {\n result.type = 'bar'\n result.percent = true\n break\n }\n case 'area': {\n result.type = 'area'\n break\n }\n // @ts-expect-error 'columnPercent' 和 'areaPercent' 会改变轴值域为[0,1], VTable不支持.\n case 'areaPercent': {\n result.type = 'area'\n result.percent = true\n break\n }\n case 'scatter': {\n result.type = 'scatter'\n break\n }\n default:\n result.type = secondary\n }\n\n return result\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { isPivotChart } from 'src/pipeline/utils'\nimport type { SpecPipe } from 'src/types'\n\nexport const datasetPrimary: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { analysis, datasetReshapeInfo } = advancedVSeed\n const orderMapping = analysis?.orderMapping || {}\n\n const { unfoldInfo } = datasetReshapeInfo[0]\n const x = unfoldInfo.encodingX\n const colorId = unfoldInfo.encodingColorId\n const id = datasetReshapeInfo[0].id\n\n const fields: Record<string, object> = {}\n\n if (x) {\n const order = orderMapping[x]\n if (order) {\n fields[x] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[x] = {\n sortIndex: 0,\n }\n }\n }\n\n if (colorId) {\n const order = orderMapping[colorId]\n if (order) {\n fields[colorId] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[colorId] = {\n sortIndex: 0,\n }\n }\n }\n\n return {\n ...spec,\n data: {\n id: `${id}-primary-dataset`,\n // 透视表不使用 dataValues\n values: isPivotChart(vseed) ? undefined : advancedVSeed.dataset,\n fields: fields,\n },\n } as ISpec\n}\n\nexport const datasetSecondary: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { analysis, datasetReshapeInfo } = advancedVSeed\n const orderMapping = analysis?.orderMapping || {}\n\n const { unfoldInfo } = datasetReshapeInfo[0]\n const x = unfoldInfo.encodingX\n const colorId = unfoldInfo.encodingColorId\n const id = datasetReshapeInfo[0].id\n\n const fields: Record<string, object> = {}\n\n if (x) {\n const order = orderMapping[x]\n if (order) {\n fields[x] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[x] = {\n sortIndex: 0,\n }\n }\n }\n\n if (colorId) {\n const order = orderMapping[colorId]\n if (order) {\n fields[colorId] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[colorId] = {\n sortIndex: 0,\n }\n }\n }\n\n return {\n ...spec,\n data: {\n id: `${id}-secondary-dataset`,\n // 透视表不使用 dataValues\n values: isPivotChart(vseed) ? undefined : advancedVSeed.dataset,\n fields: fields,\n },\n } as ISpec\n}\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport type { 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 { isNullish } from 'remeda'\nimport { createDimensionContent, createMarkContent } from './tooltip'\nimport type { 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, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n const unfoldInfo = datasetReshapeInfo[0].unfoldInfo\n\n result.tooltip = {\n visible: enable,\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfoList[0], unfoldInfo),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(measures, foldInfoList[0], unfoldInfo, locale),\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, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n\n if (isNullish(datasetReshapeInfo[0].foldInfoList?.[1])) {\n return result\n }\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n const unfoldInfo = datasetReshapeInfo[0].unfoldInfo as UnfoldInfo\n result.tooltip = {\n visible: enable,\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfoList[1], unfoldInfo),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(measures, foldInfoList[1], unfoldInfo, locale),\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, isNullish } 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 const { index, id: reshapeInfoId, foldInfoList } = datasetReshapeInfo[0]\n // TODO: default config missing\n const primaryYAxis = advancedVSeed.config?.[chartType as 'dualAxis']?.primaryYAxis as YLinearAxis | YLinearAxis[]\n const yAxisConfig = Array.isArray(primaryYAxis) ? primaryYAxis[index] || primaryYAxis[0] : primaryYAxis\n const alignTicks = advancedVSeed.config?.[chartType as 'dualAxis']?.alignTicks as boolean | boolean[]\n const alignTicksConfig = Array.isArray(alignTicks) ? alignTicks[index] || alignTicks[0] : alignTicks\n\n if (isNullish(foldInfoList?.[0])) {\n return result\n }\n\n const isEmptySecondary = isEmpty(foldInfoList?.[0].foldMap)\n\n const id = `${reshapeInfoId}-primary-axis`\n const seriesIds = [`${reshapeInfoId}-primary-series`, `${reshapeInfoId}-secondary-series`]\n const seriesId = alignTicksConfig ? seriesIds : seriesIds[0]\n\n if (!result.axes) {\n result.axes = []\n }\n\n if (!yAxisConfig) {\n result.axes = [\n ...result.axes,\n {\n visible: true,\n id,\n seriesId,\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 } = yAxisConfig\n\n const linearAxis = {\n visible: isEmptySecondary ? false : visible,\n id,\n seriesId,\n\n type: log ? 'log' : 'linear',\n base: logBase,\n orient: 'left',\n nice,\n zero: log ? false : zero,\n inverse,\n max,\n min,\n label: {\n visible: label?.visible,\n formatMethod: (value: string) => {\n return 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 { isEmpty, 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 const { index, id: reshapeInfoId, foldInfoList } = datasetReshapeInfo[0]\n // TODO: default config missing\n const secondaryYAxis = advancedVSeed.config?.[chartType as 'dualAxis']?.secondaryYAxis as YLinearAxis | YLinearAxis[]\n const yAxisConfig = Array.isArray(secondaryYAxis) ? secondaryYAxis[index] || secondaryYAxis[0] : secondaryYAxis\n const alignTicks = advancedVSeed.config?.[chartType as 'dualAxis']?.alignTicks as boolean | boolean[]\n const alignTicksConfig = Array.isArray(alignTicks) ? alignTicks[index] || alignTicks[0] : alignTicks\n\n if (isNullish(foldInfoList?.[1])) {\n return result\n }\n\n const isEmptySecondary = isEmpty(foldInfoList?.[1].foldMap)\n const onlySecondary = isEmpty(foldInfoList?.[0].foldMap) && !isEmptySecondary\n\n const sync = {\n axisId: `${reshapeInfoId}-primary-axis`,\n zeroAlign: true,\n }\n\n const id = `${reshapeInfoId}-secondary-axis`\n const seriesIds = [`${reshapeInfoId}-primary-series`, `${reshapeInfoId}-secondary-series`]\n const seriesId = alignTicksConfig ? seriesIds : seriesIds[1]\n if (!result.axes) {\n result.axes = []\n }\n\n if (!yAxisConfig) {\n result.axes = [\n ...result.axes,\n {\n visible: true,\n id,\n seriesId,\n type: 'linear',\n orient: 'right',\n sync,\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 } = yAxisConfig\n\n const linearAxis = {\n visible: isEmptySecondary ? false : visible,\n id,\n seriesId,\n sync,\n type: log ? 'log' : 'linear',\n base: logBase,\n orient: 'right',\n nice,\n zero: log ? false : zero,\n inverse,\n max,\n min,\n label: {\n visible: label?.visible,\n formatMethod: (value: string) => {\n return 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: onlySecondary ? true : 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 { IBarChartSpec } from '@visactor/vchart'\nimport type { Color, SpecPipe } from 'src/types'\n\nexport const linearColorForDualAxis: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo, chartType } = advancedVSeed\n const { unfoldInfo, id } = datasetReshapeInfo[0]\n const baseConfig = advancedVSeed.config[chartType] as { color: Color }\n\n if (!baseConfig || !baseConfig.color) {\n return result\n }\n\n const { color } = baseConfig\n const { colorScheme, linearColorScheme } = color\n\n result.color = {\n type: 'linear',\n range: linearColorScheme || colorScheme || [],\n domain: [\n {\n dataId: `${id}-primary-dataset`,\n fields: [unfoldInfo.encodingColor],\n },\n {\n dataId: `${id}-secondary-dataset`,\n fields: [unfoldInfo.encodingColor],\n },\n ],\n }\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n xBand,\n backgroundColor,\n discreteLegend,\n color,\n initPivot,\n datasetPivot,\n pivotDiscreteLegend,\n pivotIndicators,\n pivotAdapter,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n 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 series,\n colorBarStyleFill,\n colorPointStyleFill,\n colorLineStyleFill,\n colorAreaStyleFill,\n linearColor,\n colorAdapter,\n colorLegend,\n pivotColorLegend,\n linearColorForDualAxis,\n} from '../pipes'\n\nconst dualAxis: SpecPipeline = [\n seriesDualAxis(\n [\n initDualAxisPrimary,\n dualChartTypePrimary,\n datasetPrimary,\n labelPrimary,\n tooltipPrimary,\n progressive,\n\n colorBarStyleFill(barStyle),\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n ],\n [\n initDualAxisSecondary,\n dualChartTypeSecondary,\n datasetSecondary,\n labelSecondary,\n tooltipSecondary,\n progressive,\n\n colorBarStyleFill(barStyle),\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n ],\n ),\n xBand,\n yLinearPrimary,\n yLinearSecondary,\n\n colorAdapter(color, linearColorForDualAxis),\n colorAdapter(discreteLegend, colorLegend),\n\n backgroundColor,\n\n verticalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n 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 colorBarStyleFill(barStyle),\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n ],\n [\n initDualAxisSecondary,\n dualChartTypeSecondary,\n datasetSecondary,\n labelSecondary,\n tooltipSecondary,\n progressive,\n\n colorBarStyleFill(barStyle),\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n ],\n ),\n xBand,\n yLinearPrimary,\n yLinearSecondary,\n colorAdapter(color, linearColor),\n backgroundColor,\n verticalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const dualAxisSpecPipeline: SpecPipeline = [pivotAdapter(dualAxis, pivotDualAxis)]\n","import { dualAxisAdvancedPipeline, dualAxisSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerDualAxis = () => {\n Builder._advancedPipelineMap['dualAxis'] = dualAxisAdvancedPipeline\n Builder._specPipelineMap['dualAxis'] = dualAxisSpecPipeline\n}\n","import { unique } from 'remeda'\nimport { MeasureName } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\n\nexport const defaultEncodingForPie: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding)\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForPie: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\n }\n\n if (hasMeasureEncoding) {\n generateMeasureEncoding(measures, encoding)\n } else {\n generateDefaultMeasureEncoding(measures, encoding)\n }\n\n return { ...advancedVSeed, encoding }\n}\n\n/**\n * --------------------维度--------------------\n */\nconst generateDefaultDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.color = uniqueDimIds.slice(0) // 第1个之后的维度用于颜色\n encoding.detail = uniqueDimIds.slice(0) // 第1个之后的维度用于详情\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureName) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n // color\n encoding.color = unique(dimensions.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (encoding.color.length === 0) {\n encoding.color = [MeasureName]\n }\n\n // detail\n encoding.detail = unique(dimensions.filter((item) => item.encoding === 'detail').map((item) => item.id))\n if (encoding.detail.length === 0) {\n encoding.detail = [MeasureName]\n }\n\n // tooltip\n encoding.tooltip = unique(dimensions.map((item) => item.id))\n encoding.tooltip = encoding.tooltip.filter((d) => d !== MeasureName)\n}\n\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.angle = unique(measures.filter((item) => item.encoding === 'angle' || !item.encoding).map((item) => item.id))\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n // angle\n encoding.angle = unique(measures.filter((item) => item.encoding === 'angle' || !item.encoding).map((item) => item.id))\n\n // color\n const color = unique(measures.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (color.length > 0) {\n encoding.color = color\n }\n\n // tooltip\n const tooltip = unique(measures.filter((item) => item.encoding === 'tooltip').map((item) => item.id))\n encoding.tooltip = unique([...(encoding.tooltip || []), ...tooltip])\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n pieConfig,\n annotation,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n encodingForPie,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n encodingAdapter,\n defaultEncodingForPie,\n} from '../pipes'\n\nexport const pieAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter([defaultEncodingForPie, buildMeasures], [encodingForPie, buildMeasures]),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n pieConfig,\n theme,\n annotation,\n]\n","import type { IPieChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initPie: SpecPipe = (spec, context) => {\n const result = { ...spec } as IPieChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n result.type = 'pie'\n result.outerRadius = 0.8\n result.innerRadius = 0\n result.valueField = foldInfo.measureValue\n result.categoryField = unfoldInfo.encodingColorId\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n\n result.animation = true\n\n return result\n}\n","import type { IPieChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from './colorAdapter'\n\nexport const colorPieStyleFill = (stylePipe: SpecPipe): SpecPipe => {\n return (spec, context) => {\n const result = stylePipe(spec, context) as IPieChartSpec\n\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed)) {\n if (result?.pie?.style) {\n result.pie.style.fill = {\n field: unfoldInfo.encodingColor,\n scale: 'color',\n }\n }\n }\n\n return result\n }\n}\n","import type { IPieChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const pieStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { dataset } = advancedVSeed\n const showStroke = dataset.length <= 30\n\n const result = {\n ...spec,\n pie: {\n style: {},\n },\n } as Required<IPieChartSpec>\n\n return {\n ...result,\n 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}\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 pieStyle,\n colorPieStyleFill,\n linearColor,\n colorAdapter,\n colorLegend,\n pivotColorLegend,\n} from '../pipes'\n\nconst pie: SpecPipeline = [\n initPie,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n colorPieStyleFill(pieStyle),\n colorAdapter(discreteLegend, colorLegend),\n label,\n tooltip,\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 colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n colorPieStyleFill(pieStyle),\n label,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const pieSpecPipeline: SpecPipeline = [pivotAdapter(pie, pivotPie)]\n","import { pieAdvancedPipeline, pieSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerPie = () => {\n Builder._advancedPipelineMap['pie'] = pieAdvancedPipeline\n Builder._specPipelineMap['pie'] = pieSpecPipeline\n}","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n annotation,\n donutConfig,\n encodingForPie,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n encodingAdapter,\n defaultEncodingForPie,\n} from '../pipes'\n\nexport const donutAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter([defaultEncodingForPie, buildMeasures], [encodingForPie, buildMeasures]),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n donutConfig,\n theme,\n annotation,\n]\n","import type { IPieChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initDonut: SpecPipe = (spec, context) => {\n const result = { ...spec } as IPieChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { foldInfo, unfoldInfo } = datasetReshapeInfo[0]\n\n result.type = 'pie'\n result.outerRadius = 0.8\n result.innerRadius = result.outerRadius * 0.8\n result.valueField = foldInfo.measureValue\n result.categoryField = unfoldInfo.encodingColorId\n\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n\n result.animation = true\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n backgroundColor,\n color,\n datasetXY,\n datasetPivot,\n initDonut,\n initPivot,\n 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 colorAdapter,\n linearColor,\n colorLegend,\n pivotColorLegend,\n pieStyle,\n colorPieStyleFill,\n} from '../pipes'\n\nconst donut: SpecPipeline = [\n initDonut,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n label,\n colorPieStyleFill(pieStyle),\n colorAdapter(discreteLegend, colorLegend),\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotDonut: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initDonut,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n label,\n colorPieStyleFill(pieStyle),\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const donutSpecPipeline: SpecPipeline = [pivotAdapter(donut, pivotDonut)]\n","import { donutAdvancedPipeline, donutSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerDonut = () => {\n Builder._advancedPipelineMap['donut'] = donutAdvancedPipeline\n Builder._specPipelineMap['donut'] = donutSpecPipeline\n}","import { unique } from 'remeda'\nimport { MeasureName } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\n\nexport const defaultEncodingForRose: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding)\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForRose: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n\n // encoding for modify in place\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\n }\n\n if (hasMeasureEncoding) {\n generateMeasureEncoding(measures, encoding)\n } else {\n generateDefaultMeasureEncoding(measures, encoding)\n }\n\n return { ...advancedVSeed, encoding }\n}\n\n/**\n * --------------------维度--------------------\n */\nconst generateDefaultDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n const onlyMeasureName = dimensions.length === 1 && dimensions.find((item) => item.id === MeasureName)\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.angle = uniqueDimIds.slice(0, 1) // 第一个维度放置于X轴\n encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1) // 第二个之后的维度用于颜色\n encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1) // 第二个之后的维度用于详情\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureName) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n // angle\n encoding.angle = unique(dimensions.filter((item) => item.encoding === 'angle').map((item) => item.id))\n if (encoding.angle.length === 0) {\n encoding.angle = [dimensions[0].id]\n }\n\n // color\n encoding.color = unique(dimensions.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (encoding.color.length === 0) {\n encoding.color = [MeasureName]\n }\n\n // detail\n encoding.detail = unique(dimensions.filter((item) => item.encoding === 'detail').map((item) => item.id))\n if (encoding.detail.length === 0) {\n encoding.detail = [MeasureName]\n }\n\n // tooltip\n encoding.tooltip = unique(dimensions.map((item) => item.id))\n encoding.tooltip = encoding.tooltip.filter((d) => d !== MeasureName)\n}\n\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.radius = unique(\n measures.filter((item) => item.encoding === 'radius' || !item.encoding).map((item) => item.id),\n )\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n // y\n encoding.radius = unique(\n measures.filter((item) => item.encoding === 'radius' || !item.encoding).map((item) => item.id),\n )\n\n // color\n const color = unique(measures.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (color.length > 0) {\n encoding.color = color\n }\n\n // tooltip\n const tooltip = unique(measures.filter((item) => item.encoding === 'tooltip').map((item) => item.id))\n encoding.tooltip = unique([...(encoding.tooltip || []), ...tooltip])\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n markStyle,\n annotation,\n roseConfig,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n encodingAdapter,\n encodingForRose,\n defaultEncodingForRose,\n} from '../pipes'\n\nexport const roseAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter([defaultEncodingForRose, buildMeasures], [encodingForRose, buildMeasures]),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n roseConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initRose: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRoseChartSpec\n const { advancedVSeed } = context\n const { dataset, datasetReshapeInfo } = advancedVSeed\n const { foldInfo, unfoldInfo } = datasetReshapeInfo[0]\n\n result.type = 'rose'\n\n result.angleField = unfoldInfo.encodingAngle\n result.seriesField = unfoldInfo.encodingColorId\n\n result.valueField = foldInfo.measureValue\n result.padding = 0\n result.outerRadius = 0.9\n result.innerRadius = 0\n\n const hasNegativeValue = dataset.flat().find((d) => d[foldInfo.measureValue] < 0)\n if (hasNegativeValue) {\n result.innerRadius = 0.05\n }\n\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const 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 { 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'\nimport { isLinearColor } from './colorAdapter'\n\nexport const colorRoseStyleFill = (stylePipe: SpecPipe): SpecPipe => {\n return (spec, context) => {\n const result = stylePipe(spec, context) as IRoseChartSpec\n\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed)) {\n if (result?.rose?.style) {\n result.rose.style.fill = {\n field: unfoldInfo.encodingColor,\n scale: 'color',\n }\n }\n }\n\n return result\n }\n}\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const roseStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { dataset } = advancedVSeed\n const showStroke = dataset.length <= 30\n\n const result = {\n ...spec,\n rose: {\n style: {},\n },\n } as Required<IRoseChartSpec>\n\n return {\n ...result,\n rose: {\n style: {\n stroke: '#ffffff',\n lineWidth: showStroke ? 1 : 0,\n },\n state: {\n hover: {\n lineWidth: 1,\n fillOpacity: 0.6,\n },\n },\n },\n }\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n backgroundColor,\n 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 linearColor,\n colorAdapter,\n pivotColorLegend,\n colorLegend,\n roseStyle,\n colorRoseStyleFill,\n} from '../pipes'\n\nconst rose: SpecPipeline = [\n initRose,\n stackCornerRadius,\n stackInverse,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n angleAxis,\n radiusAxis,\n verticalCrosshairRect,\n colorRoseStyleFill(roseStyle),\n colorAdapter(discreteLegend, colorLegend),\n label,\n tooltip,\n]\n\nconst pivotRose: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initRose,\n stackCornerRadius,\n stackInverse,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n radiusAxis,\n angleAxis,\n verticalCrosshairRect,\n colorRoseStyleFill(roseStyle),\n label,\n tooltip,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const roseSpecPipeline = [pivotAdapter(rose, pivotRose)]\n","import { roseAdvancedPipeline, roseSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerRose = () => {\n Builder._advancedPipelineMap['rose'] = roseAdvancedPipeline\n Builder._specPipelineMap['rose'] = roseSpecPipeline\n}","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n markStyle,\n annotation,\n roseParallelConfig,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n encodingAdapter,\n encodingForRose,\n defaultEncodingForRose,\n} from '../pipes'\n\nexport const roseParallelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter([defaultEncodingForRose, buildMeasures], [encodingForRose, buildMeasures]),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\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 { datasetReshapeInfo, dataset, dimensions } = advancedVSeed\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n const sameDimensionsMode = dimensions.length > 1 && dimensions.every((dim) => dim.id === dimensions[0].id)\n\n result.type = 'rose'\n result.angleField = sameDimensionsMode\n ? [unfoldInfo.encodingAngle]\n : [unfoldInfo.encodingAngle, unfoldInfo.encodingDetail]\n result.valueField = foldInfo.measureValue\n result.seriesField = unfoldInfo.encodingColorId\n result.padding = 0\n\n result.outerRadius = 0.9\n result.innerRadius = 0\n\n const hasNegativeValue = dataset.flat().find((d) => d[foldInfo.measureValue] < 0)\n if (hasNegativeValue) {\n result.innerRadius = 0.05\n }\n\n result.rose = {\n style: {\n stroke: '#ffffff',\n lineWidth: 1,\n },\n state: {\n hover: {\n lineWidth: 1,\n fillOpacity: 0.6,\n },\n },\n }\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n backgroundColor,\n 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 pivotColorLegend,\n colorAdapter,\n linearColor,\n colorLegend,\n roseStyle,\n colorRoseStyleFill,\n} from '../pipes'\n\nconst roseParallel: SpecPipeline = [\n initRoseParallel,\n stackCornerRadius,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n radiusAxis,\n angleAxis,\n colorRoseStyleFill(roseStyle),\n colorAdapter(discreteLegend, colorLegend),\n label,\n tooltip,\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 colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n radiusAxis,\n angleAxis,\n verticalCrosshairRect,\n colorRoseStyleFill(roseStyle),\n label,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const roseParallelSpecPipeline: SpecPipeline = [pivotAdapter(roseParallel, pivotRoseParallel)]\n","import { roseParallelAdvancedPipeline, roseParallelSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerRoseParallel = () => {\n Builder._advancedPipelineMap['roseParallel'] = roseParallelAdvancedPipeline\n Builder._specPipelineMap['roseParallel'] = roseParallelSpecPipeline\n}","import { unique } from 'remeda'\nimport { MeasureName } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\n\nexport const defaultEncodingForRadar: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding)\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForRadar: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\n }\n\n if (hasMeasureEncoding) {\n generateMeasureEncoding(measures, encoding)\n } else {\n generateDefaultMeasureEncoding(measures, encoding)\n }\n\n return { ...advancedVSeed, encoding }\n}\n\n/**\n * --------------------维度--------------------\n */\nconst generateDefaultDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.angle = uniqueDimIds.slice(0, 1)\n encoding.color = uniqueDimIds.slice(1)\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureName) // 展示指标名称之外的所有维度\n encoding.detail = [] // 雷达图暂不支持细分\n encoding.label = []\n encoding.row = []\n encoding.column = []\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n // angle\n encoding.angle = unique(dimensions.filter((item) => item.encoding === 'angle').map((item) => item.id))\n if (encoding.angle.length === 0) {\n encoding.angle = [dimensions[0].id]\n }\n\n // color\n encoding.color = unique(dimensions.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (encoding.color.length === 0) {\n encoding.color = [MeasureName]\n }\n\n // detail\n encoding.detail = []\n if (encoding.detail.length === 0) {\n encoding.detail = [MeasureName]\n }\n\n // tooltip\n encoding.tooltip = unique(dimensions.map((item) => item.id))\n encoding.tooltip = encoding.tooltip.filter((d) => d !== MeasureName)\n}\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.radius = unique(\n measures.filter((item) => item.encoding === 'radius' || !item.encoding).map((item) => item.id),\n )\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n // radius\n encoding.radius = unique(\n measures.filter((item) => item.encoding === 'radius' || !item.encoding).map((item) => item.id),\n )\n\n // color\n const color = unique(measures.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (color.length > 0) {\n encoding.color = color\n }\n\n // tooltip\n const tooltip = unique(measures.filter((item) => item.encoding === 'tooltip').map((item) => item.id))\n encoding.tooltip = unique([...(encoding.tooltip || []), ...tooltip])\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n annotation,\n markStyle,\n sortLegend,\n radarConfig,\n encodingForRadar,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n encodingAdapter,\n defaultEncodingForRadar,\n} from '../pipes'\n\nexport const radarAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter([defaultEncodingForRadar, buildMeasures], [encodingForRadar, buildMeasures]),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n // sortXBandAxis,\n sortLegend,\n radarConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IRadarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from '../color/colorAdapter'\n\nexport const initRadar: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRadarChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n result.type = 'radar'\n result.angleField = unfoldInfo.encodingAngle\n result.radiusField = foldInfo.measureValue\n result.seriesField = isLinearColor(advancedVSeed) ? unfoldInfo.encodingDetail : unfoldInfo.encodingColorId\n\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const radarAngleAxis: SpecPipe = (spec, 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 linearColor,\n colorAdapter,\n colorLegend,\n colorPointStyleFill,\n colorLineStyleFill,\n colorAreaStyleFill,\n pivotColorLegend,\n} from '../pipes'\n\nconst radar: SpecPipeline = [\n initRadar,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n radarAngleAxis,\n radarRadiusAxis,\n label,\n tooltip,\n colorAdapter(discreteLegend, colorLegend),\n verticalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n // annotationPoint,\n // annotationVerticalLine,\n // annotationHorizontalLine,\n // annotationArea,\n]\n\nconst pivotRadar: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initRadar,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n radarAngleAxis,\n radarRadiusAxis,\n label,\n tooltip,\n verticalCrosshairLine,\n colorPointStyleFill(pointStyle),\n pointStateDimensionHover,\n colorLineStyleFill(lineStyle),\n colorAreaStyleFill(areaStyle),\n // annotationPoint,\n // annotationVerticalLine,\n // annotationHorizontalLine,\n // annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const radarSpecPipeline: SpecPipeline = [pivotAdapter(radar, pivotRadar)]\n","import { radarAdvancedPipeline, radarSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerRadar = () => {\n Builder._advancedPipelineMap['radar'] = radarAdvancedPipeline\n Builder._specPipelineMap['radar'] = radarSpecPipeline\n}","import { unique } from 'remeda'\nimport { MeasureName } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\n\nexport const defaultEncodingForFunnel: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding)\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForFunnel: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\n }\n\n if (hasMeasureEncoding) {\n generateMeasureEncoding(measures, encoding)\n } else {\n generateDefaultMeasureEncoding(measures, encoding)\n }\n\n return { ...advancedVSeed, encoding }\n}\n\n/**\n * --------------------维度--------------------\n */\nconst generateDefaultDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.color = uniqueDimIds.slice(0) // 第0个之后的维度用于颜色\n encoding.detail = uniqueDimIds.slice(0) // 第0个之后的维度用于详情\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureName) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n // color\n encoding.color = unique(dimensions.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (encoding.color.length === 0) {\n encoding.color = [MeasureName]\n }\n\n // detail\n encoding.detail = unique(dimensions.filter((item) => item.encoding === 'detail').map((item) => item.id))\n if (encoding.detail.length === 0) {\n encoding.detail = [MeasureName]\n }\n\n // tooltip\n encoding.tooltip = unique(dimensions.map((item) => item.id))\n encoding.tooltip = encoding.tooltip.filter((d) => d !== MeasureName)\n}\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.size = unique(measures.filter((item) => item.encoding === 'size' || !item.encoding).map((item) => item.id))\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n // size\n encoding.size = unique(measures.filter((item) => item.encoding === 'size' || !item.encoding).map((item) => item.id))\n\n // color\n const color = unique(measures.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (color.length > 0) {\n encoding.color = [color[0]]\n }\n\n // tooltip\n const tooltip = unique(measures.filter((item) => item.encoding === 'tooltip').map((item) => item.id))\n encoding.tooltip = unique([...(encoding.tooltip || []), ...tooltip])\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n annotation,\n funnelConfig,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n encodingForFunnel,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n encodingAdapter,\n defaultEncodingForFunnel,\n} from '../pipes'\n\nexport const funnelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter([defaultEncodingForFunnel, buildMeasures], [encodingForFunnel, buildMeasures]),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n funnelConfig,\n theme,\n annotation,\n]\n","import type { IFunnelChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initFunnel: SpecPipe = (spec, context) => {\n const result = { ...spec } as IFunnelChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { foldInfo, unfoldInfo } = datasetReshapeInfo[0]\n\n result.type = 'funnel'\n result.valueField = foldInfo.measureValue\n result.categoryField = unfoldInfo.encodingColorId\n\n result.padding = 0\n result.isTransform = true\n result.shape = 'rect'\n result.maxSize = '75%'\n result.minSize = '10%'\n result.region = [\n {\n clip: true,\n },\n ]\n\n result.transformLabel = {\n visible: true,\n }\n\n result.animation = true\n\n return result\n}\n","import type { IFunnelChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isLinearColor } from './colorAdapter'\n\nexport const colorFunnelStyleFill = (stylePipe: SpecPipe): SpecPipe => {\n return (spec, context) => {\n const result = stylePipe(spec, context) as IFunnelChartSpec\n\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed)) {\n if (result?.funnel?.style) {\n result.funnel.style.fill = {\n field: unfoldInfo.encodingColor,\n scale: 'color',\n }\n }\n }\n\n return result\n }\n}\n","import type { IFunnelChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const funnelStyle: SpecPipe = (spec) => {\n const result = {\n ...spec,\n funnel: {\n style: {},\n },\n } as IFunnelChartSpec\n\n return {\n ...result,\n funnel: {\n style: {\n cornerRadius: 4,\n },\n state: {\n hover: {\n fillOpacity: 0.6,\n },\n },\n },\n }\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n backgroundColor,\n datasetXY,\n datasetPivot,\n initPivot,\n label,\n pivotAdapter,\n pivotColumnDimensions,\n pivotGridStyle,\n pivotIndicators,\n pivotIndicatorsAsRow,\n pivotRowDimensions,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n initFunnel,\n discreteLegend,\n color,\n funnelStyle,\n linearColor,\n colorAdapter,\n colorLegend,\n colorFunnelStyleFill,\n pivotDiscreteLegend,\n pivotColorLegend,\n} from '../pipes'\n\nconst funnel: SpecPipeline = [\n initFunnel,\n backgroundColor,\n datasetXY,\n colorAdapter(color, linearColor),\n label,\n colorAdapter(discreteLegend, colorLegend),\n colorFunnelStyleFill(funnelStyle),\n tooltip,\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 backgroundColor,\n datasetXY,\n colorAdapter(color, linearColor),\n label,\n tooltip,\n colorFunnelStyleFill(funnelStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const funnelSpecPipeline: SpecPipeline = [pivotAdapter(funnel, pivotFunnel)]\n","import { funnelAdvancedPipeline, funnelSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerFunnel = () => {\n Builder._advancedPipelineMap['funnel'] = funnelAdvancedPipeline\n Builder._specPipelineMap['funnel'] = funnelSpecPipeline\n}","import { unique } from 'remeda'\nimport { MeasureName } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\n\nexport const defaultEncodingForHeatmap: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding)\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForHeatmap: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\n }\n\n if (hasMeasureEncoding) {\n generateMeasureEncoding(measures, encoding)\n } else {\n generateDefaultMeasureEncoding(measures, encoding)\n }\n\n return { ...advancedVSeed, encoding }\n}\n\n/**\n * --------------------维度--------------------\n */\nconst generateDefaultDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n const onlyMeasureName = dimensions.length === 1 && dimensions.find((item) => item.id === MeasureName)\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.x = uniqueDimIds.slice(0, 1) // 第一个维度放置于X轴\n encoding.y = uniqueDimIds.slice(onlyMeasureName ? 0 : 1) // 第2个维度放置于Y轴\n encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1) // 第二个之后的维度用于颜色\n encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1) // 第二个之后的维度用于详情\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureName) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n encoding.x = unique(dimensions.filter((item) => item.encoding === 'xAxis').map((item) => item.id))\n // x\n if (encoding.x.length === 0) {\n encoding.x = [dimensions[0].id]\n }\n // y\n encoding.y = unique(dimensions.filter((item) => item.encoding === 'yAxis').map((item) => item.id))\n if (encoding.y.length === 0) {\n if (dimensions.length > 1) {\n encoding.y = dimensions.slice(1).map((item) => item.id)\n } else {\n encoding.y = dimensions.slice(0).map((item) => item.id)\n }\n }\n // color\n encoding.color = unique(dimensions.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (encoding.color.length === 0) {\n encoding.color = [MeasureName]\n }\n // detail\n encoding.detail = unique(dimensions.filter((item) => item.encoding === 'detail').map((item) => item.id))\n if (encoding.detail.length === 0) {\n encoding.detail = [MeasureName]\n }\n // tooltip\n encoding.tooltip = unique(dimensions.map((item) => item.id))\n encoding.tooltip = encoding.tooltip.filter((d) => d !== MeasureName)\n}\n\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n const colorDims = unique(\n measures.filter((item) => item.encoding === 'color' || !item.encoding).map((item) => item.id),\n )\n if (colorDims.length > 0) {\n encoding.color = [colorDims[0]]\n }\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n // color\n const color = unique(measures.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (color.length > 0) {\n encoding.color = [color[0]]\n }\n\n // tooltip\n const tooltip = unique(measures.filter((item) => item.encoding === 'tooltip').map((item) => item.id))\n encoding.tooltip = unique([...(encoding.tooltip || []), ...tooltip])\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n annotation,\n markStyle,\n sortXBandAxis,\n heatmapConfig,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n encodingForHeatmap,\n buildMeasures,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n encodingAdapter,\n defaultEncodingForHeatmap,\n} from '../pipes'\n\nexport const heatmapAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter([defaultEncodingForHeatmap, buildMeasures], [encodingForHeatmap, buildMeasures]),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\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'\nimport { isLinearColor } from './colorAdapter'\n\nexport const colorCellStyleFill = (stylePipe: SpecPipe): SpecPipe => {\n return (spec, context) => {\n const result = stylePipe(spec, context) as IHeatmapChartSpec\n\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed)) {\n if (result?.cell?.style) {\n result.cell.style.fill = {\n field: unfoldInfo.encodingColor,\n scale: 'color',\n }\n }\n }\n\n return result\n }\n}\n","import type { IHeatmapChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const cellStyle: SpecPipe = (spec) => {\n const result = {\n ...spec,\n cell: {\n style: {},\n },\n } as IHeatmapChartSpec\n\n return {\n ...result,\n cell: {\n style: {\n shape: 'rect',\n stroke: '#ffffff',\n lineWidth: 1,\n },\n },\n }\n}\n","import { isEmpty } from 'remeda'\nimport { autoFormatter, createFormatter, findMeasureById } from '../../../../utils'\nimport type { Datum, Dimensions, FoldInfo, Locale, Measures, SpecPipe, Tooltip, UnfoldInfo } from 'src/types'\nimport { ORIGINAL_DATA } from 'src/dataReshape'\n\nexport const tooltipHeatmap: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n const { foldInfo } = datasetReshapeInfo[0] as unknown as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n result.tooltip = {\n visible: enable,\n\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfo),\n },\n dimension: {\n visible: false,\n },\n }\n return result\n}\n\nexport const createMarkContent = (\n tooltip: string[],\n dimensions: Dimensions,\n measures: Measures,\n locale: Locale,\n foldInfo: FoldInfo,\n) => {\n const dims = dimensions.filter((item) => tooltip.includes(item.id))\n const meas = measures.filter((item) => tooltip.includes(item.id))\n\n const dimContent = dims.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const datum = v as Datum\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return datum && (datum[item.id] as string)\n },\n value: (v: unknown) => {\n const datum = v as Datum\n return datum && (datum[item.id] as string)\n },\n }))\n\n const meaContent = meas.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias || item.id,\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const id = item.id\n if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) {\n return ''\n }\n const originalData = datum[ORIGINAL_DATA] as Datum\n const value = originalData[id] as string | number\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n const { format = {}, autoFormat = true } = measure\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 const foldMeaContent = [foldInfo].map((foldInfo) => {\n return {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const { measureId, foldMap } = foldInfo\n const datum = v as Datum\n const id = datum[measureId] as string\n return foldMap[id] || id\n },\n value: (v: unknown) => {\n const { measureId, measureValue } = foldInfo\n\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n 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 return [...dimContent, ...foldMeaContent, ...meaContent]\n}\n","import type { IHeatmapChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initHeatmap: SpecPipe = (spec, context) => {\n const result = { ...spec } as IHeatmapChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n result.type = 'heatmap'\n result.direction = 'vertical'\n result.xField = unfoldInfo.encodingX\n result.yField = unfoldInfo.encodingY\n result.seriesField = unfoldInfo.encodingColorId\n result.valueField = foldInfo.measureValue\n result.padding = 0\n result.axes = [\n {\n type: 'band',\n orient: 'left',\n bandPadding: 0,\n },\n {\n type: 'band',\n orient: 'bottom',\n bandPadding: 0,\n },\n ]\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n backgroundColor,\n label,\n tooltipHeatmap,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotAdapter,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n labelColorInversion,\n discreteLegend,\n color,\n colorAdapter,\n linearColor,\n colorLegend,\n cellStyle,\n colorCellStyleFill,\n pivotDiscreteLegend,\n pivotColorLegend,\n} from '../pipes'\nimport { initHeatmap } from '../pipes/init/heatmap'\n\nconst heatmap: SpecPipeline = [\n initHeatmap,\n backgroundColor,\n datasetXY,\n colorAdapter(color, linearColor),\n label,\n labelColorInversion,\n colorAdapter(discreteLegend, colorLegend),\n colorCellStyleFill(cellStyle),\n tooltipHeatmap,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotHeatmap: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initHeatmap,\n backgroundColor,\n datasetXY,\n colorAdapter(color, linearColor),\n label,\n labelColorInversion,\n discreteLegend,\n tooltipHeatmap,\n colorCellStyleFill(cellStyle),\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n colorAdapter(pivotDiscreteLegend, pivotColorLegend),\n]\n\nexport const heatmapSpecPipeline: SpecPipeline = [pivotAdapter(heatmap, pivotHeatmap)]\n","import { heatmapAdvancedPipeline, heatmapSpecPipeline } from '../../../pipeline'\nimport { Builder } from '../../builder'\n\nexport const registerHeatmap = () => {\n Builder._advancedPipelineMap['heatmap'] = heatmapAdvancedPipeline\n Builder._specPipelineMap['heatmap'] = heatmapSpecPipeline\n}","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 linearColorScheme: ['#C2CEFF', '#5766EC'],\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, 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 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 },\n heatmap: {\n ...baseConfig,\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 linearColorScheme: ['#A0CEFF', '#2E62F1'],\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 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 },\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 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 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, DimensionTree } from 'src/types'\nimport { preorderTraverse } from '../tree'\n\n// TODO: 未来可能有用的函数, 需要时再取消注释\n// export 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\n// TODO: 未来可能有用的函数, 需要时再取消注释\n// export 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 { z } from 'zod'\n\nexport type ChartType =\n | 'table'\n | 'pivotTable'\n // cartesian\n | 'line'\n | 'column'\n | 'columnPercent'\n | 'columnParallel'\n | 'bar'\n | 'barPercent'\n | 'barParallel'\n | 'area'\n | 'areaPercent'\n | 'scatter'\n | 'dualAxis'\n // polar\n | 'rose'\n | 'roseParallel'\n | 'pie'\n | 'donut'\n | 'radar'\n // other\n | 'heatmap'\n | 'funnel'\n\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 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 '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'\nimport type { DimensionGroup } from './dimensions'\n\nexport const zDimension = z.object({\n id: z.string(),\n alias: z.string().optional(),\n encoding: z.enum(['xAxis', 'yAxis', 'angle', 'color', 'detail', 'tooltip', 'label', 'row', 'column']).optional(),\n})\nexport const zDimensionGroup: z.ZodType<DimensionGroup> = z.object({\n id: z.string(),\n alias: z.string().optional(),\n get children() {\n return z.array(zDimensionGroup.or(zDimension)).optional()\n },\n})\nexport const zDimensions = z.array(zDimension)\nexport const zDimensionTree = z.array(zDimensionGroup.or(zDimension))\n","import { z } from 'zod'\n\nexport interface NumFormat {\n /**\n * @description 数字格式化类型, 支持数值(十进制)、百分比(%)、千分比(‰)、科学计数法\n * @default 'number'\n */\n type?: 'number' | 'percent' | 'permille' | 'scientific'\n\n /**\n * @description 数值格式化比例, 百分比和千分比需要设置比例\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 encoding: z\n .enum([\n 'primaryYAxis',\n 'secondaryYAxis',\n 'xAxis',\n 'yAxis',\n 'angle',\n 'radius',\n 'size',\n 'color',\n 'label',\n 'tooltip',\n 'detail',\n 'column',\n ])\n .optional(),\n parentId: z.string().optional(),\n})\n\nexport const zMeasureGroup: z.ZodType<MeasureGroup> = z.object({\n id: z.string(),\n alias: z.string().optional(),\n get children() {\n return z.array(zMeasureGroup.or(zMeasure)).optional()\n },\n})\n\nexport const zMeasures = z.array(zMeasure)\nexport const zMeasureTree = z.array(zMeasureGroup.or(zMeasure))\n","import { z } from 'zod'\nimport { zMeasure } from './zMeasures'\n\nexport const zDualMeasure = z.object({\n id: z.string(),\n\n primaryMeasures: z.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'\nimport { zMeasure } from './zMeasures'\n\nexport const zScatterMeasure = z.object({\n id: z.string(),\n\n xMeasures: z.array(zMeasure).or(zMeasure).optional(),\n\n yMeasures: z.array(zMeasure).or(zMeasure).optional(),\n})\n\nexport const zScatterMeasures = z.array(zScatterMeasure)\n","import { z } from 'zod'\n\nexport const zFoldInfo = z.object({\n foldMap: z.record(z.string(), z.string().or(z.undefined())),\n colorRange: z.array(z.number()),\n measureRange: z.array(z.number()),\n measureId: z.string(),\n measureName: z.string(),\n measureValue: z.string(),\n})\nexport const zUnfoldInfo = z.object({\n encodingX: z.string(),\n encodingY: z.string(),\n encodingColor: z.string(),\n encodingColorId: z.string(),\n encodingDetail: z.string(),\n encodingAngle: z.string(),\n colorItems: z.array(z.string()),\n colorIdMap: z.record(z.string(), z.string()),\n})\n\nexport const zDatasetReshapeInfo = z.array(\n z.object({\n id: z.string(),\n index: z.number(),\n foldInfo: zFoldInfo,\n foldInfoList: z.array(zFoldInfo).nullish(),\n unfoldInfo: zUnfoldInfo,\n }),\n)\n","import { z } from 'zod'\n\nexport const zEncoding = z.object({\n x: z.array(z.string()).nullish(),\n y: z.array(z.string()).nullish(),\n angle: z.array(z.string()).nullish(),\n radius: z.array(z.string()).nullish(),\n detail: z.array(z.string()).nullish(),\n\n color: z.array(z.string()).nullish(),\n size: z.array(z.string()).nullish(),\n tooltip: z.array(z.string()).nullish(),\n label: z.array(z.string()).nullish(),\n\n row: z.array(z.string()).nullish(),\n column: z.array(z.string()).nullish(),\n\n group: z.array(z.string()).nullish().describe('已弃用, 请使用颜色替代'),\n})\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 const zCrosshairRect = z.object({\n visible: z.boolean().nullish(),\n rectColor: z.string().nullish(),\n labelColor: z.string().nullish(),\n labelVisible: z.boolean().nullish(),\n labelBackgroundColor: z.string().nullish(),\n})\n","import { z } from 'zod'\n\nexport const 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 linearColorScheme: z.array(z.string()).nullish(),\n colorMapping: z.record(z.string(), z.string()).nullish(),\n})\n\nexport const zLinearColor = z.object({\n linearColorScheme: z.array(z.string()).nullish(),\n})\n\nexport type Color = {\n /**\n * @description 离散颜色配色方案, 颜色配色方案用于定义图表中不同元素的颜色\n * @example ['#FFCDD2,#F8BBD0,#E1BEE7,#D1C4E9,#C5CAE9,#BBDEFB,#B3E5FC,#B2EBF2,#B2DFDB,#C8E6C9,#DCEDC8,#F0F4C3,#FFF9C4,#FFECB3,#FFE0B2']\n */\n colorScheme?: string[]\n /**\n * @description 线性渐变颜色配色方案, 线性渐变颜色配色方案用于定义图表中不同元素的颜色\n * @example ['#FFCDD2, #F8BBD0]\n */\n linearColorScheme?: string[]\n /**\n * @description 颜色映射, 颜色映射用于将数据值映射到具体的颜色\n * @example\n * {\n * 'profit': 'red',\n * 'sales': 'blue',\n * }\n */\n colorMapping?: Record<string, string>\n}\n\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 * @description 图例边框是否开启\n * @warning 仅离散图例生效\n * @default true\n * @example border: true\n */\n border?: boolean\n /**\n * @description 图例字体大小\n * @example labelFontSize: 10\n */\n labelFontSize?: number\n /**\n * @description 图例字体颜色\n * @example labelFontColor: '#212121'\n */\n labelFontColor?: string\n /**\n * @description 图例字体粗细\n * @example labelFontWeight: 400\n */\n labelFontWeight?: number | string\n /**\n * @description 图例形状\n * @warning 仅离散图例生效\n * @example shapeType: 'circle'\n */\n shapeType?:\n | 'circle'\n | 'cross'\n | 'diamond'\n | 'square'\n | 'arrow'\n | 'arrow2Left'\n | 'arrow2Right'\n | 'wedge'\n | 'thinTriangle'\n | 'triangle'\n | 'triangleUp'\n | 'triangleDown'\n | 'triangleRight'\n | 'triangleLeft'\n | 'stroke'\n | 'star'\n | 'wye'\n | 'rect'\n | 'arrowLeft'\n | 'arrowRight'\n | 'rectRound'\n | 'roundLine'\n /**\n * 图例位置\n * @default 'right'\n * @example position: 'rightTop'\n */\n position?:\n | 'left'\n | 'leftTop'\n | 'leftBottom'\n | 'lt'\n | 'lb'\n | 'top'\n | 'topLeft'\n | 'topRight'\n | 'tl'\n | 'tr'\n | 'right'\n | 'rightTop'\n | 'rightBottom'\n | 'rt'\n | 'rb'\n | 'bottom'\n | 'bottomLeft'\n | 'bottomRight'\n | 'bl'\n | 'br'\n\n /**\n * @description 存在大量图例时, 最大列数 或 图例最大行数\n * 如果position为水平方向(bottom, bottomLeft, bottomRight, bl, br, top, topLeft, topRight, tl, tr), maxSize控制显示的列数\n * 如果position为垂直方向(left, leftTop, leftBottom, lt, lb, right, rightTop, rightBottom, rt, rb), maxSize控制显示的行数\n * \n * @warning 仅离散图例生效\n * @example maxSize: 2\n * @default 1\n */\n maxSize?: number\n}\n\nexport const zLegend = z.object({\n enable: z.boolean().default(true).nullish(),\n border: z.boolean().default(true).nullish(),\n maxSize: z.number().default(1).nullish(),\n shapeType: z\n .enum([\n 'circle',\n 'cross',\n 'diamond',\n 'square',\n 'arrow',\n 'arrow2Left',\n 'arrow2Right',\n 'wedge',\n 'thinTriangle',\n 'triangle',\n 'triangleUp',\n 'triangleDown',\n 'triangleRight',\n 'triangleLeft',\n 'stroke',\n 'star',\n 'wye',\n 'rect',\n 'arrowLeft',\n 'arrowRight',\n 'rectRound',\n 'roundLine',\n ])\n .default('rectRound')\n .nullish(),\n position: z\n .enum([\n 'left',\n 'leftTop',\n 'leftBottom',\n 'lt',\n 'lb',\n 'top',\n 'topLeft',\n 'topRight',\n 'tl',\n 'tr',\n 'right',\n 'rightTop',\n 'rightBottom',\n 'rt',\n 'rb',\n 'bottom',\n 'bottomLeft',\n 'bottomRight',\n 'bl',\n 'br',\n ])\n .default('bottom')\n .nullish(),\n 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'\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\n\nexport const zDualAxisConfig = z.object({\n backgroundColor: zBackgroundColor.nullish(),\n label: zLabel.nullish(),\n color: zColor.nullish(),\n tooltip: zTooltip.nullish(),\n legend: zLegend.nullish(),\n\n dualChartType: z.array(zDualChartType).or(zDualChartType).nullish(),\n alignTicks: z.array(z.boolean()).or(z.boolean()).nullish(),\n primaryYAxis: z.array(zYLinearAxis).or(zYLinearAxis).nullish(),\n secondaryYAxis: z.array(zYLinearAxis).or(zYLinearAxis).nullish(),\n\n xAxis: zXBandAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n})\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>\n\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\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 */\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 */\n labelColor?: string\n /**\n * 标签字体大小\n */\n labelFontSize?: number\n /**\n * 标签字体粗细\n */\n labelFontWeight?: number\n /**\n * 标签旋转角度\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 */\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 */\n tickColor?: string\n /**\n * 刻度尺寸\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 */\n titleText?: string\n /**\n * 标题颜色\n */\n titleColor?: string\n /**\n * 标题字体大小\n */\n titleFontSize?: number\n /**\n * 标题字体粗细\n */\n titleFontWeight?: number\n }\n\n /**\n * X轴网格线\n * @default false\n */\n grid?: {\n visible?: boolean\n /**\n * 网格线颜色\n */\n gridColor?: string\n /**\n * 网格线宽度\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\n/**\n * @description 指标选择器, 用于选择数据项中指标字段的值\n */\nexport type MeasureSelector = {\n /**\n * @description 指标字段, measures 某一项的 id\n */\n field: string\n /**\n * @description 操作符\n * - =: 选择数据项中指标字段的值等于 value 的数据项\n * - ==: 选择数据项中指标字段的值等于 value 的数据项\n * - !=: 选择数据项中指标字段的值不等于 value 的数据项\n * - >: 选择数据项中指标字段的值大于 value 的数据项\n * - <: 选择数据项中指标字段的值小于 value 的数据项\n * - >=: 选择数据项中指标字段的值大于等于 value 的数据项\n * - <=: 选择数据项中指标字段的值小于等于 value 的数据项\n * - between: 选择数据项中指标字段的值在 value 之间的 data item\n */\n operator?: '=' | '==' | '!=' | '>' | '<' | '>=' | '<=' | 'between'\n /**\n * @description 操作符\n * - =: 选择数据项中指标字段的值等于 value 的数据项\n * - ==: 选择数据项中指标字段的值等于 value 的数据项\n * - !=: 选择数据项中指标字段的值不等于 value 的数据项\n * - >: 选择数据项中指标字段的值大于 value 的数据项\n * - <: 选择数据项中指标字段的值小于 value 的数据项\n * - >=: 选择数据项中指标字段的值大于等于 value 的数据项\n * - <=: 选择数据项中指标字段的值小于等于 value 的数据项\n * - between: 选择数据项中指标字段的值在 value 之间的 data item\n * same as operator\n */\n op?: '=' | '==' | '!=' | '>' | '<' | '>=' | '<=' | 'between'\n /**\n * @description 选择数据项中指标字段的值\n * - 仅 op 为 between 时, value 为长度为2的数组, 数组中的元素为指标字段的最小值和最大值\n * - 其他情况, value 为指标字段的单个值\n */\n value: string | number | Array<string | number>\n // /**\n // * @description 是否使用原始数据进行数据匹配, 开启后会有更多的数据被匹配到\n // * 若下述数据, measures 仅设置了 value, field 为 isHigh 或 isLow, op 为 =, value 为 1,\n // * 关闭useOrigin时, 数据项并不会考虑measures之外的字段, 因此field为isHigh或isLow的字段会被忽略\n // * 开启useOrigin时, 会直接使用整个数据项进行匹配\n // * [\n // * {value: 100, isHigh: 1, isLow: 0},\n // * {value: 200, isHigh: 0, isLow: 1},\n // * {value: 300, isHigh: 1, isLow: 0},\n // * ]\n // * @default false\n // */\n // useOrigin?: boolean\n}\n\n/**\n * @description 维度选择器, 用于选择数据项中维度字段的值\n */\nexport type DimensionSelector = {\n /**\n * @description 维度字段, dimensions 某一项的 id\n */\n field: string\n /**\n * @description 操作符\n * - in: 选择数据项中维度字段的值在 value 中的数据项\n * - not in: 选择数据项中维度字段的值不在 value 中的数据项\n */\n operator?: 'in' | 'not in'\n /**\n * @description 操作符\n * - in: 选择数据项中维度字段的值在 value 中的数据项\n * - not in: 选择数据项中维度字段的值不在 value 中的数据项\n * same as operator\n */\n op?: 'in' | 'not in'\n /**\n * @description 选择数据项中维度字段的值, 支持数组\n */\n value: string | number | Array<string | number>\n // /**\n // * @description 是否使用原始数据进行数据匹配, 开启后会有更多的数据被匹配到\n // * 若下述数据, dimensions 仅设置了 name, field 为 name, op 为 =, value 为 \"high\",\n // * 关闭useOrigin时, 数据项并不会考虑dimensions之外的字段, 因此field为name的字段会被忽略\n // * 开启useOrigin时, 会直接使用整个数据项进行匹配\n // * [\n // * {name: \"low\", isHigh: \"false\", isLow: \"true\"},\n // * {name: \"low\", isHigh: \"false\", isLow: \"true\"},\n // * {name: \"high\", isHigh: \"true\", isLow: \"false\"},\n // * ]\n // * @default false\n // */\n // useOrigin?: boolean\n}\n\nexport type Selector = ValueSelector | PartialDatumSelector | MeasureSelector | DimensionSelector\n\nexport type Selectors = Array<Selector>\n\nexport const zSelector = z.union([\n z.string(),\n z.number(),\n z.object({\n field: z.string(),\n operator: z.enum(['=', '==', '!=', '>', '<', '>=', '<=', 'between']).nullish(),\n op: z.enum(['=', '==', '!=', '>', '<', '>=', '<=', 'between']).nullish(),\n value: z.union([z.string(), z.number(), z.array(z.union([z.string(), z.number()]))]),\n }),\n z.object({\n field: z.string(),\n operator: z.enum(['in', 'not in']).nullish(),\n op: z.enum(['in', 'not in']).nullish(),\n value: z.union([z.string(), z.number(), z.array(z.union([z.string(), z.number()]))]),\n }),\n])\n\nexport const zSelectors = z.array(zSelector)\n","import { z } from 'zod'\nimport { zSelector, zSelectors, type Selector, type Selectors } from '../../dataSelector'\n\nexport type BarStyle = {\n /**\n * 数据选择器\n * @description\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n * @type {Selector | Selectors}\n * @example 数值选择器\n * selector = \"tool\"\n * selector = [\"tool\", \"book\"]\n * selector = 100\n * selector = [100, 200]\n * @example 局部数据选择器\n * selector = { profit: 100 }\n * selector = [{ profit: 100 }, { profit: 200 }]\n * @example 条件维度选择器\n * selector = {\n * field: 'category',\n * operator: 'in',\n * value: 'tool'\n * }\n * selector = {\n * field: 'category',\n * operator: 'not in',\n * value: 'book'\n * }\n * @example 条件指标选择器\n * selector = {\n * field: 'profit',\n * operator: '>=',\n * value: 100\n * }\n * selector = {\n * field: 'profit',\n * operator: 'between'\n * value: [100, 300]\n * }\n */\n selector?: Selector | Selectors\n\n /**\n * @description 柱图元(矩形图元)是否可见\n */\n barVisible?: boolean\n /**\n * @description 柱图元(矩形图元)颜色\n * @type {string}\n */\n barColor?: string\n /**\n * @description 柱图元(矩形图元)颜色透明度\n * @type {number}\n */\n barColorOpacity?: number\n /**\n * @description 柱图元(矩形图元)边框颜色\n * @type {string}\n */\n barBorderColor?: string\n /**\n * @description 柱图元(矩形图元)边框宽度\n * @type {number}\n */\n barBorderWidth?: number\n /**\n * @description 柱图元(矩形图元)边框样式\n * @type {number}\n * @example solid\n * @example dashed\n * @example dotted\n */\n barBorderStyle?: 'solid' | 'dashed' | 'dotted'\n /**\n * @description 柱图元(矩形图元)圆角\n * @type {number | number[]}\n * @example 4\n * @example [0, 0, 10, 10]\n */\n barRadius?: number | number[]\n}\n\nexport const zBarStyle = z.object({\n selector: z.union([zSelector, zSelectors]).nullish(),\n barVisible: z.boolean().nullish(),\n barColor: z.string().nullish(),\n barColorOpacity: z.number().nullish(),\n barBorderColor: z.string().nullish(),\n barBorderWidth: z.number().nullish(),\n barBorderStyle: z.union([z.literal('solid'), z.literal('dashed'), z.literal('dotted')]).nullish(),\n barRadius: z.union([z.number(), z.array(z.number())]).nullish(),\n})\n","import { z } from 'zod'\nimport { zSelector, zSelectors, type Selector, type Selectors } from '../../dataSelector'\n\nexport type PointStyle = {\n /**\n * 数据选择器\n * @description\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n * @type {Selector | Selectors}\n * @example 数值选择器\n * selector = \"tool\"\n * selector = [\"tool\", \"book\"]\n * selector = 100\n * selector = [100, 200]\n * @example 局部数据选择器\n * selector = { profit: 100 }\n * selector = [{ profit: 100 }, { profit: 200 }]\n * @example 条件维度选择器\n * selector = {\n * field: 'category',\n * operator: 'in',\n * value: 'tool'\n * }\n * selector = {\n * field: 'category',\n * operator: 'not in',\n * value: 'book'\n * }\n * @example 条件指标选择器\n * selector = {\n * field: 'profit',\n * operator: '>=',\n * value: 100\n * }\n * selector = {\n * field: 'profit',\n * operator: 'between'\n * value: [100, 300]\n * }\n */\n selector?: Selector | Selectors\n\n /**\n * @description 点是否可见\n */\n pointVisible?: boolean\n /**\n * 点大小\n * @description 点大小\n */\n pointSize?: number\n /**\n * 点图元颜色\n * @description 点图元颜色\n */\n pointColor?: string\n /**\n * 点图元颜色透明度\n * @description 点图元颜色透明度\n */\n pointColorOpacity?: number\n /**\n * 点图元边框颜色\n * @description 点图元边框颜色\n */\n pointBorderColor?: string\n /**\n * 点图元边框宽度\n * @description 点图元边框宽度\n */\n pointBorderWidth?: number\n /**\n * 点图元边框样式\n * @description 点图元边框样式\n * @example solid\n * @example dashed\n * @example dotted\n */\n pointBorderStyle?: 'solid' | 'dashed' | 'dotted'\n}\n\nexport const zPointStyle = z.object({\n selector: z.union([zSelector, zSelectors]).nullish(),\n pointVisible: z.boolean().nullish(),\n pointSize: z.number().nullish(),\n pointColor: z.string().nullish(),\n pointColorOpacity: z.number().nullish(),\n pointBorderColor: z.string().nullish(),\n pointBorderWidth: z.number().nullish(),\n pointBorderStyle: z.union([z.enum(['solid', 'dashed', 'dotted'])]).nullish(),\n})\n","import { z } from 'zod'\nimport { zSelector, zSelectors, type Selector, type Selectors } from '../../dataSelector'\n\nexport type LineStyle = {\n /**\n * 数据选择器\n * @description\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n * @type {Selector | Selectors}\n * @example 数值选择器\n * selector = \"tool\"\n * selector = [\"tool\", \"book\"]\n * selector = 100\n * selector = [100, 200]\n * @example 局部数据选择器\n * selector = { profit: 100 }\n * selector = [{ profit: 100 }, { profit: 200 }]\n * @example 条件维度选择器\n * selector = {\n * field: 'category',\n * operator: 'in',\n * value: 'tool'\n * }\n * selector = {\n * field: 'category',\n * operator: 'not in',\n * value: 'book'\n * }\n * @example 条件指标选择器\n * selector = {\n * field: 'profit',\n * operator: '>=',\n * value: 100\n * }\n * selector = {\n * field: 'profit',\n * operator: 'between'\n * value: [100, 300]\n * }\n */\n selector?: Selector | Selectors\n\n /**\n * @description 线段是否可见\n */\n lineVisible?: boolean\n /**\n * @description 线段是否平滑\n * @type {boolean}\n */\n lineSmooth?: boolean\n\n /**\n * @description 线段颜色\n */\n lineColor?: string\n /**\n * @description 线段颜色透明度\n */\n lineColorOpacity?: number\n /**\n * @description 线段宽度\n */\n lineWidth?: number\n /**\n * @description 线段样式\n * @example `lineStyle: 'solid'`\n */\n lineStyle?: 'solid' | 'dashed' | 'dotted'\n}\n\nexport const zLineStyle = z.object({\n selector: z.union([zSelector, zSelectors]).nullish(),\n lineVisible: z.boolean().nullish(),\n lineSmooth: z.boolean().nullish(),\n lineColor: z.string().nullish(),\n lineColorOpacity: z.number().nullish(),\n lineWidth: z.number().nullish(),\n lineStyle: z.union([z.enum(['solid', 'dashed', 'dotted'])]).nullish(),\n})\n","import { z } from 'zod'\nimport { zSelector, zSelectors } from '../../dataSelector'\n\nexport const zAreaStyle = z.object({\n selector: z.union([zSelector, zSelectors]).nullish(),\n areaVisible: z.boolean().nullish(),\n areaColor: z.string().nullish(),\n areaColorOpacity: z.number().nullish(),\n})\n","import { z } from 'zod'\nimport { zBarStyle } from './barStyle'\nimport { zPointStyle } from './pointStyle'\nimport { zLineStyle } from './lineStyle'\nimport { zAreaStyle } from './zAreaStyle'\n\nexport const zMarkStyle = z.object({\n barStyle: zBarStyle.or(z.array(zBarStyle)).nullish(),\n pointStyle: zPointStyle.or(z.array(zPointStyle)).nullish(),\n lineStyle: zLineStyle.or(z.array(zLineStyle)).nullish(),\n areaStyle: zAreaStyle.or(z.array(zAreaStyle)).nullish(),\n})\n\nexport type MarkStyle = z.infer<typeof zMarkStyle>\n","import { zSelector, zSelectors } from '../../dataSelector'\nimport { z } from 'zod'\n\nexport const 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","import { zSelector, zSelectors } from '../../dataSelector'\nimport { z } from 'zod'\n\nexport const zAnnotationHorizontalLine = z.object({\n selector: z.union([zSelector, zSelectors]).nullish(),\n yValue: z.union([z.number(), z.string(), z.array(z.union([z.number(), z.string()]))]).nullish(),\n text: z.string().or(z.array(z.string())).nullish(),\n textPosition: z\n .enum(['outsideStart', 'outsideEnd', 'outsideMiddle', 'insideStart', 'insideMiddle', 'insideEnd'])\n .default('insideEnd')\n .nullish(),\n textColor: z.string().default('#ffffff').nullish(),\n textFontSize: z.number().default(12).nullish(),\n textFontWeight: z.number().default(400).nullish(),\n textAlign: z.enum(['left', 'right', 'center']).default('right').nullish(),\n textBaseline: z.enum(['top', 'middle', 'bottom']).default('top').nullish(),\n\n lineVisible: z.boolean().default(true).nullish(),\n lineColor: z.string().default('#212121').nullish(),\n lineWidth: z.number().default(1).nullish(),\n lineStyle: z\n .union([z.literal('solid'), z.literal('dashed'), z.literal('dotted')])\n .default('dashed')\n .nullish(),\n\n textBackgroundVisible: z.boolean().default(true).nullish(),\n textBackgroundColor: z.string().default('#212121').nullish(),\n textBackgroundBorderColor: z.string().default('#212121').nullish(),\n textBackgroundBorderRadius: z.number().default(4).nullish(),\n textBackgroundBorderWidth: z.number().default(1).nullish(),\n textBackgroundPadding: z.number().default(2).nullish(),\n})\n","import { zSelector, zSelectors } from '../../dataSelector'\nimport { z } from 'zod'\n\nexport const zAnnotationArea = z.object({\n selector: z.union([zSelector, zSelectors]),\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})\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 zEncoding,\n zLabel,\n zLegend,\n zLineStyle,\n zMeasureTree,\n zPointStyle,\n zSort,\n zSortLegend,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\n\nimport { z } from 'zod'\n\nexport const zLine = z.object({\n chartType: z.literal('line'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairLine: zCrosshairLine.nullish(),\n sort: zSort.nullish(),\n sortLegend: zSortLegend.nullish(),\n theme: zTheme.nullish(),\n pointStyle: z.array(zPointStyle).or(zPointStyle).nullish(),\n lineStyle: z.array(zLineStyle).or(zLineStyle).nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\n\nexport const zColumn = z.object({\n chartType: z.literal('column'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n 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 zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\n\nexport const zColumnParallel = z.object({\n chartType: z.literal('columnParallel'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n stackCornerRadius: zStackCornerRadius.nullish(),\n 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 zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\n\nimport { z } from 'zod'\n\nexport const zColumnPercent = z.object({\n chartType: z.literal('columnPercent'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n stackCornerRadius: zStackCornerRadius.nullish(),\n 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 zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXLinearAxis,\n zYBandAxis,\n} from '../../properties'\n\nimport { z } from 'zod'\n\nexport const zBar = z.object({\n chartType: z.literal('bar'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXLinearAxis.nullish(),\n yAxis: zYBandAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n stackCornerRadius: zStackCornerRadius.nullish(),\n 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 zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXLinearAxis,\n zYBandAxis,\n} from '../../properties'\n\nexport const zBarParallel = z.object({\n chartType: z.literal('barParallel'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXLinearAxis.nullish(),\n yAxis: zYBandAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n stackCornerRadius: zStackCornerRadius.nullish(),\n 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 zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXLinearAxis,\n zYBandAxis,\n} from '../../properties'\n\nexport const zBarPercent = z.object({\n chartType: z.literal('barPercent'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXLinearAxis.nullish(),\n yAxis: zYBandAxis.nullish(),\n crosshairRect: zCrosshairRect.nullish(),\n stackCornerRadius: zStackCornerRadius.nullish(),\n theme: zTheme.nullish(),\n barStyle: z.array(zBarStyle).or(zBarStyle).nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zAreaStyle,\n zBackgroundColor,\n zColor,\n zCrosshairLine,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zLegend,\n zLineStyle,\n zMeasureTree,\n zPointStyle,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\n\nexport const zArea = z.object({\n chartType: z.literal('area'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairLine: zCrosshairLine.nullish(),\n theme: zTheme.nullish(),\n pointStyle: z.array(zPointStyle).or(zPointStyle).nullish(),\n lineStyle: z.array(zLineStyle).or(zLineStyle).nullish(),\n areaStyle: z.array(zAreaStyle).or(zAreaStyle).nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n locale: zLocale.nullish(),\n})\n","import { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zAreaStyle,\n zBackgroundColor,\n zColor,\n zCrosshairLine,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zLegend,\n zLineStyle,\n zMeasureTree,\n zPointStyle,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\n\nimport { z } from 'zod'\n\nexport const zAreaPercent = z.object({\n chartType: z.literal('areaPercent'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n xAxis: zXBandAxis.nullish(),\n yAxis: zYLinearAxis.nullish(),\n crosshairLine: zCrosshairLine.nullish(),\n theme: zTheme.nullish(),\n pointStyle: z.array(zPointStyle).or(zPointStyle).nullish(),\n lineStyle: z.array(zLineStyle).or(zLineStyle).nullish(),\n areaStyle: z.array(zAreaStyle).or(zAreaStyle).nullish(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zColor,\n zCrosshairLine,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zPointStyle,\n zScatterMeasures,\n zTheme,\n zTooltip,\n zXLinearAxis,\n zYLinearAxis,\n} from '../../properties'\n\nexport const zScatter = z.object({\n chartType: z.literal('scatter'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n scatterMeasures: zScatterMeasures.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n 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 alignTicks: z.array(z.boolean()).or(z.boolean()).nullish(),\n \n primaryYAxis: z.array(zYLinearAxis).or(zYLinearAxis).nullish(),\n secondaryYAxis: z.array(zYLinearAxis).or(zYLinearAxis).nullish(),\n xAxis: zXBandAxis.nullish(),\n\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n\n crosshairRect: zCrosshairRect.nullish(),\n sort: zSort.nullish(),\n sortLegend: zSortLegend.nullish(),\n theme: zTheme.nullish(),\n\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 zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zTheme,\n zTooltip,\n} from '../../properties'\n\nexport const zRose = z.object({\n chartType: z.literal('rose'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n theme: zTheme.nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zBackgroundColor,\n zColor,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zTheme,\n zTooltip,\n} from '../../properties'\n\nexport const zRoseParallel = z.object({\n chartType: z.literal('roseParallel'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n theme: zTheme.nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zBackgroundColor,\n zColor,\n zDataset,\n zDimensions,\n zEncoding,\n 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 encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n theme: zTheme.nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\n\nimport {\n zBackgroundColor,\n zColor,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zTheme,\n zTooltip,\n} from '../../properties'\n\nexport const zDonut = z.object({\n chartType: z.literal('donut'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: 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 zEncoding,\n zLabel,\n zLegend,\n zMeasureTree,\n zTheme,\n zTooltip,\n} from '../../properties'\n\nexport const zRadar = z.object({\n chartType: z.literal('radar'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zLegend.nullish(),\n tooltip: zTooltip.nullish(),\n theme: zTheme.nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\nimport {\n zBackgroundColor,\n zColor,\n zColorLegend,\n zDataset,\n zDimensions,\n zEncoding,\n zLabel,\n zMeasureTree,\n zTheme,\n zTooltip,\n} from '../../properties'\n\nexport const zFunnel = z.object({\n chartType: z.literal('funnel'),\n dataset: zDataset.nullish(),\n encoding: zEncoding.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zColorLegend.nullish(),\n tooltip: zTooltip.nullish(),\n theme: zTheme.nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\nimport { zLocale } from '../../i18n'\n\nimport {\n zBackgroundColor,\n zColor,\n zColorLegend,\n zDataset,\n zDimensions,\n zLabel,\n zMeasureTree,\n zTheme,\n zTooltip,\n} from '../../properties'\n\nexport const zHeatmap = z.object({\n chartType: z.literal('heatmap'),\n dataset: zDataset.nullish(),\n dimensions: zDimensions.nullish(),\n measures: zMeasureTree.nullish(),\n backgroundColor: zBackgroundColor.nullish(),\n color: zColor.nullish(),\n label: zLabel.nullish(),\n legend: zColorLegend.nullish(),\n tooltip: zTooltip.nullish(),\n theme: zTheme.nullish(),\n locale: zLocale.nullish(),\n})\n","import { z } from 'zod'\n\nimport { zBar } from './chartType/bar'\nimport { zBarParallel } from './chartType/barParallel'\nimport { zColumn } from './chartType/column'\nimport { zColumnParallel } from './chartType/columnParallel'\nimport { zColumnPercent } from './chartType/columnPercent'\nimport { zLine } from './chartType/line'\nimport { zRose } from './chartType/rose'\nimport { zBarPercent } from './chartType/barPercent'\nimport { zPie } from './chartType/pie'\nimport { zDonut } from './chartType/donut'\nimport { zArea } from './chartType/area'\nimport { zAreaPercent } from './chartType/areaPercent'\nimport {\n zDualAxis,\n zFunnel,\n zHeatmap,\n zPivotTable,\n zRadar,\n zRoseParallel,\n zScatter,\n zTable,\n} from './chartType'\n\nexport const zVSeed = z.discriminatedUnion('chartType', [\n zTable,\n zPivotTable,\n // cartesian\n zLine,\n zColumn,\n zColumnParallel,\n zColumnPercent,\n zBar,\n zBarParallel,\n zBarPercent,\n zArea,\n zAreaPercent,\n zScatter,\n zDualAxis,\n // polar\n zPie,\n zDonut,\n zRose,\n zRoseParallel,\n zRadar,\n // other\n zFunnel,\n zHeatmap,\n])\n","import { z } from 'zod'\nimport { zChartType } from './properties/chartType'\nimport { zDataset } from './properties/dataset'\nimport { zDimensionTree } from './properties/dimensions'\nimport { zMeasureTree } from './properties/measures'\nimport { zEncoding } from './properties/encoding'\nimport { zDatasetReshapeInfo } from './properties/datasetReshapeInfo'\nimport { zTheme, zCustomThemeConfig } from './properties/theme'\nimport { zConfig } from './properties/config'\nimport { zAnalysis, zAnnotation, 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","defaultMeasures","measures","dataset","top100dataset","sample","Object","key","item","undefined","measure","preorderTraverse","tree","callback","stack","node","stop","children","i","child","findMeasureById","id","findFirstMeasure","findAllMeasures","defaultDimensions","dimensions","newDimensions","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","ORIGINAL_DATA","FoldMeasureName","FoldMeasureId","FoldMeasureValue","MeasureName","FoldPrimaryMeasureValue","FoldSecondaryMeasureValue","FoldXMeasureValue","FoldYMeasureValue","FoldXMeasureId","FoldYMeasureId","XEncoding","YEncoding","AngleEncoding","DetailEncoding","ColorEncoding","ColorIdEncoding","defaultMeasureName","MeaName","encodingForPivotTable","vseedMeasures","hasDimensionEncoding","hasMeasureEncoding","encoding","generateDimensionEncoding","generateDefaultDimensionEncoding","generateMeasureEncoding","generateDefaultMeasureEncoding","uniqueDimIds","foldMeasures","options","measureId","measureName","measureValue","colorMeasureId","foldInfo","ids","j","omit","alias","Math","Infinity","reshapePivotTable","newDatasets","pivotTableConfig","pivotTableAdvancedPipeline","initPivotTable","pivotColumns","pivotRows","rows","pivotIndicators","col","row","table","foldMeasureId","rowHeaderStyle","cornerHeaderStyle","hoverCellColor","AggregationType","SortType","dataConfig","aggregationRules","pivotTableSpecPipeline","registerPivotTable","encodingAdapter","noEncodingPipeline","hasEncodingPipeline","hasEncoding","defaultEncodingForLine","encodingForLine","color","tooltip","isMeasureTreeWithChildren","isMeasureTreeWithParentId","normalizeMeasureTree","createEmptyMeasureGroup","currentGroup","measureGroups","measureDepth","depth","isTable","isPivotTable","isVTable","isVChart","isPivotChart","parentIds","hasRowOrColumnDimension","dimension","hasMeasureGroup","buildMeasures","generateMeasuresByParentId","basicMeasuresToMeasureTree","measureTree","parent","pivotAdapter","pivotPipeline","usePivotChart","unfoldDimensions","separator","colorItemAsId","unfoldInfo","x","y","detail","angle","angleDimensions","xDimensions","yDimensions","colorDimensions","detailDimensions","Set","applyEncoding","colorItem","colorId","dataReshapeByEncoding","foldMeasureName","foldMeasureValue","foldedDataset","finalDataset","Separator","colorAdapter","ordinalPipe","linearPipe","isLinearColor","measureIdList","getColorMeasureId","reshapeWithEncoding","uniqueBy","pivotReshapeWithEncoding","datasets","measureGroup","groupId","newSubDataset","reshapeInfo","sortXBandAxis","sortAxis","xField","axisOrderResult","calcOrder","sortConfig","order","orderBy","res","sort","a","b","aValue","bValue","sortLegend","nameMap","pre","orderRes","itemNameOrId","lineConfig","columnConfig","pieConfig","areaConfig","areaPercentConfig","scatterConfig","barConfig","barParallelConfig","barPercentConfig","columnParallelConfig","columnPercentConfig","donutConfig","roseConfig","roseParallelConfig","funnelConfig","heatmapConfig","radarConfig","markStyle","annotation","lineAdvancedPipeline","initLine","baseConfig","colorScheme","colorMapping","createSpecifiedForColorMapping","matchedList","colors","accurateMap","name","colorValue","accurateMatchedList","colorKey","colorAlias","fuzzyMap","fuzzyMatchedList","linearColor","linearColorScheme","datasetXY","analysis","orderMapping","fields","progressive","size","xBand","visible","label","tick","grid","line","labelAutoHide","labelAutoHideGap","labelAutoLimit","labelAutoLimitLength","labelAutoRotate","labelAutoRotateAngleRange","sampling","bandAxis","yLinear","zero","nice","inverse","max","min","log","logBase","linearAxis","LINEAR_AXIS_INNER_OFFSET_TOP","verticalCrosshairLine","lineColor","labelColor","labelVisible","labelBackgroundColor","crosshair","discreteLegend","legend","enable","position","labelFontColor","labelFontSize","labelFontWeight","maxSize","border","shapeType","orient","legendPosition","items","colorLegend","colorPointStyleFill","stylePipe","selector","vchartDatum","selectorMode","vchartKeys","k","selectors","isValueSelector","v","isMeasureSelector","op","selectorValueArr","isDimensionSelector","isPartialDatumSelector","pointStyle","pointStyles","customMap","style","pointBorderColor","pointBorderStyle","pointBorderWidth","pointColor","pointColorOpacity","pointSize","pointVisible","lineDash","pointStateDimensionHover","point","pointStateHover","colorLineStyleFill","lineStyle","lineStyles","lineGroups","groupBy","lineColorOpacity","lineSmooth","lineWidth","lineVisible","dashSegment","dashGap","curveType","lineData","formatValue","createMarkContent","createDimensionContent","encodingColor","dims","meas","dimContent","meaContent","originalData","defaultContent","colorName","isSubset","sub","obj","annotationPoint","annotationPointList","markPoint","selectorPoint","textColor","textFontSize","textFontWeight","textAlign","textBaseline","textBackgroundBorderColor","textBackgroundBorderRadius","textBackgroundBorderWidth","textBackgroundColor","textBackgroundPadding","textBackgroundVisible","offsetX","offsetY","selectedData","ANNOTATION_Z_INDEX","data","targetDatum","annotationVerticalLine","annotationVerticalLineList","positionMap","markLine","xValue","textPosition","generateOneMarkLine","isArray","xValueArr","specMarkLine","newMarkLine","annotationHorizontalLine","annotationHorizontalLineList","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","newDataset","newDatasetReshapeInfo","newContext","chartSpec","pivotIndicatorsAsRow","pivotIndicatorsAsCol","datasetPivot","pivotRowDimensions","rowDimensions","pivotColumnDimensions","columnDimensions","pivotDiscreteLegend","colorSpecified","legends","pivotColorLegend","pivotLine","lineSpecPipeline","registerLine","defaultEncodingForColumn","encodingForColumn","onlyMeasureName","columnAdvancedPipeline","initColumn","stackCornerRadius","_","stackInverse","verticalCrosshairRect","rectColor","colorBarStyleFill","barStyle","showStroke","barStyles","barBorderColor","barBorderStyle","barBorderWidth","barColor","barColorOpacity","barRadius","barVisible","annotationAreaBand","xBandWidth","yBandWidth","column","pivotColumn","columnSpecPipeline","registerColumn","columnParallelAdvancedPipeline","initColumnParallel","sameDimensionsMode","columnParallel","pivotColumnParallel","columnParallelSpecPipeline","registerColumnParallel","columnPercentAdvancedPipeline","percent","columnPercent","pivotColumnPercent","columnPercentSpecPipeline","registerColumnPercent","defaultEncodingForBar","encodingForBar","sortYBandAxis","yField","barAdvancedPipeline","initBar","datasetYX","xLinear","yBand","horizontalCrosshairRect","bar","pivotBar","barSpecPipeline","registerBar","barParallelAdvancedPipeline","initBarParallel","barParallel","pivotBarParallel","barParallelSpecPipeline","registerBarParallel","barPercentAdvancedPipeline","barPercent","pivotBarPercent","barPercentSpecPipeline","registerBarPercent","areaAdvancedPipeline","initArea","colorAreaStyleFill","areaStyle","areaStyles","group","areaGroups","areaVisible","area","pivotArea","areaSpecPipeline","registerArea","areaPercentAdvancedPipeline","areaPercent","pivotAreaPercent","areaPercentSpecPipeline","registerAreaPercent","defaultEncodingForScatter","encodingForScatter","dimensionsWithoutMeasureName","buildMeasuresForScatter","scatterMeasures","basicMeasuresToScatterMeasures","scatterMeasuresToMeasureTree","basicMeasures","yMeasures","xMeasures","isYAxis","isXAxis","groupChildren","arrPrimaryMeasures","arrSecondaryMeasures","scatterChart","isX","isY","reshapeWithScatterEncoding","foldInfoList","unfoldInfoList","pivotReshapeWithScatterEncoding","datasetList","scatterAdvancedPipeline","initScatter","datasetScatter","tooltipScatter","foldMeaContent","foldMap","horizontalCrosshairLine","scatter","pivotScatter","scatterSpecPipeline","registerScatter","defaultEncodingForDualAxis","encodingForDualAxis","buildMeasuresForDualAxis","dualMeasures","basicMeasuresToDualMeasures","dualMeasuresToMeasureTree","primaryMeasures","secondaryMeasures","isPrimaryYAxis","isSecondaryYAxis","dualChart","isPrimary","isSecondary","reshapeWithDualEncoding","pivotReshapeWithDualEncoding","dualAxisConfig","dualAxisAdvancedPipeline","series","args","seriesDualAxis","createDualContext","seriesContext","initDualAxisPrimary","initDualAxisSecondary","dualChartTypePrimary","DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX","primary","secondary","bothColumn","DUAL_AXIS_CHART_COLUMN_Z_INDEX","columnSpec","dualChartTypeSecondary","datasetPrimary","datasetSecondary","labelPrimary","labelSecondary","tooltipPrimary","tooltipSecondary","yLinearPrimary","reshapeInfoId","primaryYAxis","yAxisConfig","alignTicks","alignTicksConfig","isEmptySecondary","seriesIds","seriesId","yLinearSecondary","secondaryYAxis","onlySecondary","sync","linearColorForDualAxis","dualAxis","pivotDualAxis","dualAxisSpecPipeline","registerDualAxis","defaultEncodingForPie","encodingForPie","pieAdvancedPipeline","initPie","colorPieStyleFill","pieStyle","pie","pivotPie","pieSpecPipeline","registerPie","donutAdvancedPipeline","initDonut","donut","pivotDonut","donutSpecPipeline","registerDonut","defaultEncodingForRose","encodingForRose","roseAdvancedPipeline","initRose","hasNegativeValue","angleAxis","is0D","is1M1D","showAxis","radiusAxis","colorRoseStyleFill","roseStyle","rose","pivotRose","roseSpecPipeline","registerRose","roseParallelAdvancedPipeline","initRoseParallel","roseParallel","pivotRoseParallel","roseParallelSpecPipeline","registerRoseParallel","defaultEncodingForRadar","encodingForRadar","radarAdvancedPipeline","initRadar","radarAngleAxis","radarRadiusAxis","radar","pivotRadar","radarSpecPipeline","registerRadar","defaultEncodingForFunnel","encodingForFunnel","funnelAdvancedPipeline","initFunnel","colorFunnelStyleFill","funnelStyle","funnel","pivotFunnel","funnelSpecPipeline","registerFunnel","defaultEncodingForHeatmap","encodingForHeatmap","colorDims","heatmapAdvancedPipeline","labelColorInversion","colorCellStyleFill","cellStyle","tooltipHeatmap","initHeatmap","heatmap","pivotHeatmap","heatmapSpecPipeline","registerHeatmap","lightTheme","barBandAxis","crosshairLine","crosshairRect","darkTheme","registerCustomTheme","registerLightTheme","registerDarkTheme","registerAll","updateAdvanced","advancedPipe","updateSpec","specPipe","findAllDimensions","zChartType","z","zDualChartType","zDatum","zDataset","zDimension","zDimensionGroup","zDimensions","zDimensionTree","zNumFormat","zMeasure","zMeasureGroup","zMeasures","zMeasureTree","zDualMeasure","zDualMeasures","zScatterMeasure","zScatterMeasures","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","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","zScatter","zDualAxis","zRose","zRoseParallel","zPie","zDonut","zRadar","zFunnel","zHeatmap","zVSeed","zAdvancedVSeed"],"mappings":"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"}
|