@visactor/vseed 0.1.25 → 0.1.26

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["webpack://@visactor/vseed/../../node_modules/.pnpm/@visactor+vtable@1.19.10-alpha.1/node_modules/@visactor/vtable/es/ts-types/new-data-set.js","webpack://@visactor/vseed/webpack/runtime/create_fake_namespace_object","webpack://@visactor/vseed/webpack/runtime/define_property_getters","webpack://@visactor/vseed/webpack/runtime/has_own_property","webpack://@visactor/vseed/webpack/runtime/make_namespace_object","webpack://@visactor/vseed/./src/pipeline/utils/pipeline.ts","webpack://@visactor/vseed/./src/i18n/i18n.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/pipeline/utils/tree/traverse.ts","webpack://@visactor/vseed/./src/pipeline/utils/measures/depth.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/utils.ts","webpack://@visactor/vseed/./src/pipeline/utils/constant.ts","webpack://@visactor/vseed/./src/pipeline/utils/chatType.ts","webpack://@visactor/vseed/./src/builder/builder/advanced/colorItems.ts","webpack://@visactor/vseed/./src/builder/builder/builder.ts","webpack://@visactor/vseed/./src/pipeline/utils/valid/checkVSeed.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/init/initAdvancedVSeed.ts","webpack://@visactor/vseed/./src/pipeline/utils/measures/typeGuard.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/default/defaultMeasures.ts","webpack://@visactor/vseed/./src/pipeline/utils/dimensions/typeGuard.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/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/utils/format/createFormatterByMeasure.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/./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/adapter/encodingAdapter.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/color/addColorToEncoding.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/line.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/buildMeasures.ts","webpack://@visactor/vseed/./src/pipeline/utils/measures/delete.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/deleteEncodingForMeasure.ts","webpack://@visactor/vseed/./src/pipeline/utils/dimensions/delete.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/dimensions/deleteTooltipAndLabelDimensions.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/utils/replaceNullToUndefined.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/title/defaultTitleText.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/xBand.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/format/linearFormat.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/curve/curve.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/config/scatter.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/size/scatterSize.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/label/labelScatter.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/pipes/label/labelPie.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/pivotChart/pivotHideIndicatorName.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/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/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/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/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/encoding/zDimensionEncoding.ts","webpack://@visactor/vseed/./src/types/properties/encoding/zMeasureEncoding.ts","webpack://@visactor/vseed/./src/types/properties/config/axes/zBandAxis.ts","webpack://@visactor/vseed/./src/types/properties/config/axes/zLinearAxis.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/zLabel.ts","webpack://@visactor/vseed/./src/types/properties/config/label/zPieLabel.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/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":["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","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n __webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => { def[key] = () => (value[key]) });\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","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 { isNullish } from 'remeda'\nimport * as translateMap from './i18nData.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 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\nexport { intl }\n","import type { AdvancedPipelineContext, AdvancedVSeed } from 'src/types'\nimport { execPipeline } from '../../pipeline'\nimport { Builder } from './builder'\nimport { intl } from 'src/i18n'\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 if (builder.vseed.locale) {\n intl.setLocale(builder.vseed.locale)\n }\n\n try {\n const advancedVSeed = execPipeline<AdvancedVSeed, AdvancedPipelineContext>(pipeline, context)\n builder.advancedVSeed = advancedVSeed\n return advancedVSeed\n } catch (e) {\n console.error(e)\n throw new Error(`buildAdvanced error: ${(e as Error).message}.\\ndetails 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'\nimport { intl } from 'src/i18n'\n\nexport const buildSpec = (builder: Builder, advancedVSeed: AdvancedVSeed): Spec => {\n const start = typeof performance !== 'undefined' ? performance.now() : Date.now()\n\n const { chartType } = builder.vseed\n\n const pipeline = Builder.getSpecPipeline(chartType)\n if (!pipeline) {\n throw new Error(\n `please invoke registerAll or register ${chartType} before build, no spec pipeline for chartType ${chartType}`,\n )\n }\n\n const context: SpecPipelineContext = {\n vseed: builder.vseed,\n advancedVSeed,\n }\n if (builder.vseed.locale) {\n intl.setLocale(builder.vseed.locale)\n }\n\n try {\n const spec = execPipeline<Spec, SpecPipelineContext>(pipeline, context)\n builder.spec = spec\n return spec\n } catch (e) {\n console.error(e)\n throw new Error(`buildSpec error: ${(e as Error).message}.\\ndetails 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 const advancedVSeed = builder.buildAdvanced()\n if (!advancedVSeed) {\n throw new Error('advancedVSeed is null')\n }\n const spec = builder.buildSpec(advancedVSeed)\n return spec\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/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 { MeasureGroup, MeasureTree } from 'src/types'\n\n/**\n * @description 检查是否为指标树, 指标树深度大于1. 如果存在一个指标为组, 即有children配置, 则认为是指标树.\n * @param vseed vseed\n * @returns\n */\nexport const isMeasureTreeWithChildren = <T extends MeasureTree>(measures?: T) => {\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 = <T extends MeasureTree>(measures?: T) => {\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","// 标注层 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// 双轴图 标注层 ZIndex\nexport const DUAL_AXIS_LABEL_Z_INDEX = 1002\n// 默认父级id\nexport const DEFAULT_PARENT_ID = '__DefaultParentId__'\n\n// 图表类型枚举\nexport const 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} as const\n","import { type Dimensions, type DimensionGroup, type DimensionTree, type VSeed, type Measure } from 'src/types'\nimport { measureDepth } from './measures'\nimport { isMeasureTreeWithChildren, isMeasureTreeWithParentId } from '../advanced/chart/pipes/measures/utils'\nimport { unique } from 'remeda'\nimport { ChartTypeEnum, DEFAULT_PARENT_ID } from './constant'\n\nexport const isTable = (vseed: VSeed) => {\n return vseed.chartType === ChartTypeEnum.Table\n}\nexport const isPivotTable = (vseed: VSeed) => {\n return vseed.chartType === ChartTypeEnum.PivotTable\n}\nexport const isRadar = (vseed: VSeed) => {\n return vseed.chartType === ChartTypeEnum.Radar\n}\nexport const isAreaPercent = (vseed: VSeed) => {\n return vseed.chartType === ChartTypeEnum.AreaPercent\n}\nexport const isColumnPercent = (vseed: VSeed) => {\n return vseed.chartType === ChartTypeEnum.ColumnPercent\n}\nexport const isBarPercent = (vseed: VSeed) => {\n return vseed.chartType === ChartTypeEnum.BarPercent\n}\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}\n\n/**\n * @description 透视图表或组合图\n * - 透视图表定义: 存在 column 或 row的 encoding\n * - 组合图表定义: 存在多组指标的情况\n * - 透视组合图表: 存在 column 或 row的 encoding 且 存在多组指标的情况\n * 上述三者都只能使用 VTable.PivotChart 绘制\n */\nexport const isPivotChart = (vseed: VSeed) => {\n if (isVTable(vseed)) {\n return false\n }\n\n if (isPivot(vseed)) {\n return true\n }\n\n return isCombination(vseed)\n}\n\n/**\n * @description 存在column 或 row的encoding\n */\nexport const isPivot = (vseed: VSeed) => {\n const { dimensions = [] } = vseed as {\n dimensions: Dimensions\n }\n\n return dimensions && dimensions.some((dimension) => dimension.encoding === 'row' || dimension.encoding === 'column')\n}\n/**\n * @description 不存在column 或 row的encoding, 但是有多组指标的情况\n */\nexport const isCombination = (vseed: VSeed) => {\n if (isMeasureTreeWithParentId(vseed.measures)) {\n const parentIds = vseed.measures?.map((measure: Measure) => measure.parentId || DEFAULT_PARENT_ID)\n return parentIds && unique(parentIds).length > 1\n }\n\n if (vseed.chartType === 'dualAxis' || vseed.chartType === 'scatter') {\n if (vseed.chartType === 'scatter') {\n if (isMeasureTreeWithChildren(vseed.measures)) {\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.measures)) {\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 = [] } = vseed as {\n measures: DimensionTree\n dimensions: Dimensions\n }\n\n const hasMeasureGroup = measures && measures.some((measure: DimensionGroup) => measure && measure.children)\n\n return hasMeasureGroup\n}\n","import { unique } from 'remeda'\nimport type { Builder } from '../builder'\nimport { isPivotTable, isTable } from 'src/pipeline'\n\nexport const getColorItems = (builder: Builder): string[] => {\n const advancedVSeed = builder.advancedVSeed\n\n if (!advancedVSeed || isTable(builder.vseed) || isPivotTable(builder.vseed)) {\n return []\n }\n\n const { datasetReshapeInfo } = advancedVSeed\n const colorItems = unique(datasetReshapeInfo.flatMap((d) => d.unfoldInfo.colorItems))\n const colorIdMap = datasetReshapeInfo.reduce<Record<string, 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\n if (!advancedVSeed || isTable(builder.vseed) || isPivotTable(builder.vseed)) {\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 || 'light']\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 { isEmpty } from 'remeda'\nimport type { VSeed } from 'src/types'\n\nexport const checkVSeed = (vseed: VSeed) => {\n const { chartType, dataset, dimensions, measures } = vseed\n if (!chartType) {\n throw new Error('chartType is required')\n }\n if (!dataset || isEmpty(dataset)) {\n throw new Error('dataset is required, and must be an array')\n }\n if (dimensions && !Array.isArray(dimensions)) {\n throw new Error('dimensions must be an array')\n }\n if (measures && !Array.isArray(measures)) {\n throw new Error('measures must be an array')\n }\n}\n","import { checkVSeed } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed } from 'src/types'\n\nexport const initAdvancedVSeed: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType, locale } = vseed\n\n checkVSeed(vseed)\n\n return {\n ...advancedVSeed,\n chartType,\n locale: locale || 'zh-CN',\n } as AdvancedVSeed\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 { clone } from 'remeda'\nimport { isMeasure, preorderTraverse } from 'src/pipeline/utils'\nimport 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 const clonedMeasures = clone(measures)\n preorderTraverse(clonedMeasures, (node) => {\n if (isMeasure(node)) {\n node.alias = node.alias || node.id\n }\n return false\n })\n return {\n ...advancedVSeed,\n measures: clonedMeasures,\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 type { Dimension, DimensionGroup } from 'src/types'\n\nexport const isDimension = (dimension: Dimension | DimensionGroup): dimension is Dimension => {\n return !('children' in dimension)\n}\n\nexport const isDimensionGroup = (dimension: Dimension | DimensionGroup): dimension is DimensionGroup => {\n return 'children' in dimension\n}\n\n// export const isDimensions = (dimensions: Dimension[] | DimensionGroup[]): dimensions is Dimension[] => {\n// return dimensions.every(isDimension)\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 { clone } from 'remeda'\nimport { findAllMeasures, isDimension, preorderTraverse } 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 const clonedDimensions = clone(dimensions)\n preorderTraverse(clonedDimensions, (node) => {\n if (isDimension(node)) {\n node.alias = node.alias || node.id\n }\n return false\n })\n return {\n ...advancedVSeed,\n dimensions: clonedDimensions,\n }\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 cellInnerBorder: false,\n underlayBackgroundColor: backgroundColor,\n },\n } as ListTableConstructorOptions\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?: Partial<NumFormat>, locale: Locale = intl.getLocale()): Formatter => {\n const {\n type = 'number',\n ratio = 1,\n thousandSeparator = true,\n prefix = '',\n suffix = '',\n symbol = '',\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, useGrouping: thousandSeparator })\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 const validSymbol = symbol ?? ''\n\n // add symbol, typeSymbol, prefix and suffix\n return `${prefix}${numStr}${typeSymbol}${validSymbol}${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 useGrouping: true,\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'\nimport { intl } from 'src/i18n'\n\nexport const createFormatter = (format: Partial<NumFormat>, locale?: Locale): Formatter => {\n return createNumFormatter(format, locale)\n}\n\nexport const autoFormatter = (value?: number | string, locale: Locale = intl.getLocale()): string => {\n return autoNumFormatter(value, locale)\n}\n","import type { Formatter, Measure } from 'src/types'\nimport { autoFormatter, createFormatter } from './createFormatter'\nimport { isEmpty, isNullish } from 'remeda'\n\nexport const createFormatterByMeasure = (measure?: Measure): Formatter => {\n if (!measure) {\n return (v) => String(v)\n }\n const { numFormat, format, autoFormat } = measure\n\n const formatterFormat = numFormat || format || {}\n\n if (autoFormat === true) {\n return autoFormatter\n }\n\n if (isNullish(autoFormat) && isEmpty(formatterFormat)) {\n return autoFormatter\n }\n\n if (!isEmpty(formatterFormat)) {\n return createFormatter(formatterFormat)\n }\n\n return (v) => String(v)\n}\n","import type { ColumnsDefine, ListTableConstructorOptions } from '@visactor/vtable'\nimport type { FieldFormat } from '@visactor/vtable/es/ts-types'\nimport { createFormatterByMeasure, isMeasure } from 'src/pipeline/utils'\nimport type { MeasureGroup, Measure, MeasureTree, SpecPipe, Datum } from 'src/types'\n\nexport const measureTreeToColumns: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const measures = (advancedVSeed as unknown as { measures: MeasureTree }).measures\n const result = { ...spec } as ListTableConstructorOptions\n\n const eachNode = (node: Measure | MeasureGroup) => {\n if (isMeasure(node)) {\n return {\n width: 'auto',\n fieldFormat: fieldFormat(node),\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 = (node: Measure): FieldFormat => {\n const formatter = createFormatterByMeasure(node)\n\n return (datum: Datum) => {\n const { id } = node\n const value = datum[id] as number | string | undefined\n return formatter(value)\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: borderColor,\n borderLineWidth: [0, 0, 1, 0],\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: 1,\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 {\n initTable,\n dimensionTreeToColumns,\n measureTreeToColumns,\n bodyStyle,\n headerStyle,\n frameStyle,\n selectionStyle,\n} 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}\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 allowEmptyFold?: boolean\n },\n): {\n dataset: Dataset\n foldInfo: FoldInfo\n} => {\n const { measureId, measureName, measureValue, colorMeasureId, allowEmptyFold = true } = options || {}\n\n const foldInfo: FoldInfo = {\n measureId,\n measureName,\n measureValue,\n statistics: {\n max: -Infinity,\n min: Infinity,\n sum: 0,\n count: 0,\n colorMin: Infinity,\n colorMax: -Infinity,\n },\n foldMap: {},\n }\n\n if (!allowEmptyFold && measures.length === 0) {\n return {\n dataset,\n foldInfo,\n }\n }\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 const valueNumber = Number(value)\n foldInfo.statistics.colorMin = Math.min(foldInfo.statistics.colorMin, valueNumber)\n foldInfo.statistics.colorMax = Math.max(foldInfo.statistics.colorMax, valueNumber)\n }\n\n const valueNumber = Number(datum[id])\n foldInfo.statistics.min = Math.min(foldInfo.statistics.min, valueNumber)\n foldInfo.statistics.max = Math.max(foldInfo.statistics.max, valueNumber)\n foldInfo.statistics.sum += valueNumber\n foldInfo.statistics.count++\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 allowEmptyFold: false,\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 cellInnerBorder: false,\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 { isNumber } from 'remeda'\nimport { intl } from 'src/i18n'\nimport { createFormatterByMeasure, findMeasureById } from 'src/pipeline/utils'\nimport type { Datum, FoldInfo, MeasureTree, SpecPipe } from 'src/types'\n\nexport const pivotIndicators: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { 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),\n },\n ] as unknown as PivotChartConstructorOptions['indicators'],\n }\n}\n\nconst fieldFormat = (measures: MeasureTree, foldInfo: FoldInfo): FieldFormat => {\n return (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 measure = findMeasureById(measures, measureId)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n }\n}\n","import type { BaseTableConstructorOptions } from '@visactor/vtable/es/ts-types'\nimport type { SpecPipe, TableConfig } from 'src/types'\n\nexport const rowHeaderStyle: SpecPipe = (spec, context) => {\n const result = { ...spec } as BaseTableConstructorOptions\n const { advancedVSeed } = context\n const { 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: borderColor,\n borderLineWidth: [0, 1, 0, 0],\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: borderColor,\n borderLineWidth: [0, 1, 1, 0],\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 { 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}\n","import { checkVSeed } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed } from 'src/types'\n\nexport const initAdvancedVSeed: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType, locale } = vseed\n\n checkVSeed(vseed)\n\n return {\n ...advancedVSeed,\n chartType,\n locale: locale || 'zh-CN',\n } as AdvancedVSeed\n}\n","import { clone } from 'remeda'\nimport type { AdvancedPipe, Datum } from 'src/types'\nimport { isMeasure, preorderTraverse } from 'src/pipeline/utils'\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 const clonedMeasures = clone(measures)\n preorderTraverse(clonedMeasures, (node) => {\n if (isMeasure(node)) {\n node.alias = node.alias || node.id\n }\n return false\n })\n return {\n ...advancedVSeed,\n measures: clonedMeasures,\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 { clone } from 'remeda'\nimport { 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: clone(dimensions.map((dim) => ({ ...dim, alias: dim.alias || dim.id }))),\n }\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 type { Dimensions, Encoding } from 'src/types'\n\n/**\n * @description 为 encoding 添加 color 编码, 多指标场景, 会将 MeasureName 也添加到 color 编码中.\n * @param dimensions\n * @param encoding\n * @param isMultiMeasure\n */\nexport const addColorToEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\n encoding.color = unique(dimensions.filter((item) => item.encoding === 'color').map((item) => item.id))\n const measureName = dimensions.find((item) => item.id === MeasureName)\n if (isMultiMeasure && measureName && !measureName.encoding) {\n encoding.color.push(MeasureName)\n }\n if (encoding.color.length === 0) {\n encoding.color = [MeasureName]\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'\nimport { addColorToEncoding } from './color'\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, measures.length > 1)\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, isMultiMeasure: boolean) => {\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 addColorToEncoding(dimensions, encoding, isMultiMeasure)\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 // label\n encoding.label = unique(dimensions.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = encoding.label.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 // label\n const label = unique(measures.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = unique([...(encoding.label || []), ...label])\n\n // tooltip\n const tooltip = unique(measures.filter((item) => item.encoding === 'tooltip').map((item) => item.id))\n encoding.tooltip = unique([...(encoding.tooltip || []), ...label, ...tooltip])\n}\n","import type { AdvancedPipe, AdvancedVSeed, MeasureGroup, Measures, MeasureTree } from 'src/types'\nimport { isMeasureTreeWithChildren, isMeasureTreeWithParentId, normalizeMeasureTree } from './utils'\nimport { isPivotChart } from 'src/pipeline/utils'\nimport { DEFAULT_PARENT_ID } from 'src/pipeline/utils/constant'\n\nexport const buildMeasures: AdvancedPipe = (advancedVSeed) => {\n // 带Children的指标树, 不进行任何处理\n if (isMeasureTreeWithChildren(advancedVSeed.measures)) {\n advancedVSeed.measures = normalizeMeasureTree(advancedVSeed.measures as MeasureTree)\n return advancedVSeed\n }\n // 带parentId的指标树, 转换为带children的指标树\n if (isMeasureTreeWithParentId(advancedVSeed.measures)) {\n advancedVSeed.measures = generateMeasuresByParentId(advancedVSeed.measures as Measures)\n return advancedVSeed\n }\n\n /**\n * 透视图表, 自动生成指标树\n */\n if (isPivotChart(advancedVSeed as AdvancedVSeed)) {\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 const parent = measureTree.find((item) => item.id === measure.parentId)\n if (parent && 'children' in parent) {\n parent.children = parent.children || []\n parent.children.push(measure)\n } else if (measure.parentId) {\n measureTree.push({\n id: measure.parentId,\n children: [measure],\n })\n } else {\n measureTree.push({\n id: DEFAULT_PARENT_ID,\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 { Measure, MeasureGroup, MeasureTree } from 'src/types'\nimport { isMeasure, isMeasureGroup } from './typeGuard'\n\n/**\n * @description 删除 measureTree 中符合 callback 条件的节点\n * @param measureTree 待删除的 measureTree\n * @param callback 回调函数,用于判断是否删除当前节点\n * @returns 删除后的 measureTree\n */\nexport const deleteMeasureTreeByCallback = <T extends MeasureTree>(\n measureTree?: T,\n callback?: (measure: Measure, index: number, measures: (Measure | MeasureGroup)[]) => boolean,\n) => {\n if (!measureTree) {\n return measureTree\n }\n const stack: (Measure | MeasureGroup)[] = [...measureTree].reverse()\n const parents = new Map<Measure | MeasureGroup, (Measure | MeasureGroup)[]>()\n\n measureTree.forEach((node) => {\n parents.set(node, measureTree)\n })\n\n const nodesToProcess: (Measure | MeasureGroup)[] = []\n const visited = new Set<Measure | MeasureGroup>()\n\n while (stack.length > 0) {\n const node = stack[stack.length - 1]\n\n if (isMeasureGroup(node) && node.children && !visited.has(node)) {\n visited.add(node)\n const children = node.children.slice().reverse()\n for (const child of children) {\n parents.set(child, node.children)\n stack.push(child)\n }\n } else {\n stack.pop()\n nodesToProcess.push(node)\n }\n }\n\n for (const node of nodesToProcess) {\n const parentList = parents.get(node)\n\n if (parentList) {\n const index = parentList.indexOf(node)\n if (isMeasure(node)) {\n if (callback?.(node, index, parentList)) {\n parentList.splice(index, 1)\n }\n }\n }\n }\n\n return measureTree\n}\n","import { deleteMeasureTreeByCallback } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Measure } from 'src/types'\n\nexport const deleteEncodingForMeasure = (encodingKeys: string[]): AdvancedPipe => {\n return (advancedVSeed) => {\n const deleteBy = (measure: Measure) => encodingKeys.includes(measure.encoding as string)\n\n const measureTree = deleteMeasureTreeByCallback(advancedVSeed.measures, deleteBy)\n\n return {\n ...advancedVSeed,\n measures: measureTree,\n }\n }\n}\n","import type { Dimension, DimensionGroup, DimensionTree } from 'src/types'\nimport { isDimension, isDimensionGroup } from './typeGuard'\n\n/**\n * @description 删除 dimensionTree 中符合 callback 条件的节点\n * @param dimensionTree 待删除的 dimensionTree\n * @param callback 回调函数,用于判断是否删除当前节点\n * @returns 删除后的 dimensionTree\n */\nexport const deleteDimensionTreeByCallback = <T extends DimensionTree>(\n dimensionTree?: T,\n callback?: (dimension: Dimension, index: number, dimensions: (Dimension | DimensionGroup)[]) => boolean,\n) => {\n if (!dimensionTree) {\n return dimensionTree\n }\n const stack: (Dimension | DimensionGroup)[] = [...dimensionTree].reverse()\n const parents = new Map<Dimension | DimensionGroup, (Dimension | DimensionGroup)[]>()\n\n dimensionTree.forEach((node) => {\n parents.set(node, dimensionTree)\n })\n\n const nodesToProcess: (Dimension | DimensionGroup)[] = []\n const visited = new Set<Dimension | DimensionGroup>()\n\n while (stack.length > 0) {\n const node = stack[stack.length - 1]\n\n if (isDimensionGroup(node) && node.children && !visited.has(node)) {\n visited.add(node)\n const children = node.children.slice().reverse()\n for (const child of children) {\n parents.set(child, node.children)\n stack.push(child)\n }\n } else {\n stack.pop()\n nodesToProcess.push(node)\n }\n }\n\n for (const node of nodesToProcess) {\n const parentList = parents.get(node)\n\n if (parentList) {\n const index = parentList.indexOf(node)\n if (isDimension(node)) {\n if (callback?.(node, index, parentList)) {\n parentList.splice(index, 1)\n }\n }\n }\n }\n\n return dimensionTree\n}\n","import { deleteDimensionTreeByCallback } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension } from 'src/types'\n\nexport const deleteTooltipAndLabelDimension: AdvancedPipe = (advancedVSeed) => {\n const deleteBy = (dimension: Dimension) => dimension.encoding === 'tooltip' || dimension.encoding === 'label'\n\n const dimensionTree = deleteDimensionTreeByCallback(advancedVSeed.dimensions, deleteBy)\n\n return {\n ...advancedVSeed,\n dimensions: dimensionTree,\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, VSeed } from 'src/types'\n\nexport const colorAdapter = (ordinalPipe: SpecPipe, linearPipe: SpecPipe): SpecPipe => {\n return (spec, context) => {\n const { advancedVSeed, vseed } = context\n if (isLinearColor(advancedVSeed, vseed)) {\n return linearPipe(spec, context)\n }\n return ordinalPipe(spec, context)\n }\n}\n\nexport const isLinearColor = <T extends AdvancedVSeed, U extends VSeed>(advancedVSeed: T, vseed: U) => {\n console.log(vseed)\n const { encoding } = advancedVSeed\n const measures = vseed.measures || advancedVSeed.measures\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, U extends VSeed>(\n advancedVSeed: T,\n vseed: U,\n): string | undefined => {\n if (isLinearColor(advancedVSeed, vseed)) {\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, 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 const colorMeasureId = getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed)\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: false,\n colorMeasureId,\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 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\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\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: false,\n foldMeasureValue: `${FoldMeasureValue}${groupId}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\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 { isPlainObject, mapValues, pipe } from 'remeda'\n\n// 递归类型,将所有 null 替换为 undefined\ntype NullToUndefined<T> = T extends null\n ? undefined\n : T extends (infer U)[]\n ? NullToUndefined<U>[]\n : T extends object\n ? { [K in keyof T]: NullToUndefined<T[K]> }\n : T\n\nexport const replaceNullToUndefined = <T>(obj: T): NullToUndefined<T> => {\n if (obj === null) {\n return undefined as NullToUndefined<T>\n }\n if (Array.isArray(obj)) {\n // 递归处理数组元素\n return obj.map(replaceNullToUndefined) as NullToUndefined<T>\n }\n if (isPlainObject(obj)) {\n // 使用 remeda 的 mapValues 递归处理对象属性\n return pipe(\n obj as object,\n mapValues((value) => replaceNullToUndefined(value)),\n ) as NullToUndefined<T>\n }\n return obj as NullToUndefined<T>\n}\n","import { pick } from 'remeda'\nimport { replaceNullToUndefined } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed, Config } from 'src/types'\n\nexport const lineConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const pickedConfig = pick(vseed, [\n 'backgroundColor',\n 'color',\n 'label',\n 'legend',\n 'tooltip',\n 'xAxis',\n 'yAxis',\n 'crosshairLine',\n ]) as Config['line']\n\n const config = replaceNullToUndefined(pickedConfig)\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n\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\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\n","import { pick } from 'remeda'\nimport { replaceNullToUndefined } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed } from 'src/types'\n\nexport const markStyle: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n\n const pickedMarkStyle = pick(vseed, [\n 'barStyle',\n 'pointStyle',\n 'lineStyle',\n 'areaStyle',\n ]) as AdvancedVSeed['markStyle']\n\n const markStyle = replaceNullToUndefined(pickedMarkStyle)\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 deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const lineAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForLine, buildMeasures],\n [\n encodingForLine,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\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, vseed } = 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, vseed) ? 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 { findAllMeasures } from 'src/pipeline/utils'\nimport type { Dimensions, MeasureTree } from 'src/types'\n\nexport const defaultTitleText = (measures: MeasureTree, dimensions: Dimensions, idList: string[] = []) => {\n const allMeasures = findAllMeasures(measures)\n return idList\n .map((id) => {\n const alias = [...allMeasures, ...dimensions].find((f) => f.id === id)?.alias || ''\n return alias\n })\n .join(' & ')\n}\n","import type { ICartesianBandAxisSpec, ISpec } from '@visactor/vchart'\nimport type { SpecPipe, XBandAxis } from 'src/types'\nimport { defaultTitleText } from './title/defaultTitleText'\n\nexport const xBand: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { measures, dimensions, encoding } = advancedVSeed\n const config = advancedVSeed.config?.[chartType as 'column']?.xAxis as XBandAxis\n\n if (!result.axes) {\n result.axes = []\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 || defaultTitleText(measures, dimensions, encoding.x as string[]),\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 { isEmpty, isNullish } from 'remeda'\nimport { autoFormatter } from 'src/pipeline/utils'\nimport type { Formatter, NumFormat } from 'src/types'\n\nexport const createLinearFormat = (\n value: string | number,\n autoFormat: boolean | undefined,\n numFormat: NumFormat,\n formatter: Formatter,\n) => {\n if (isNullish(autoFormat) && isEmpty(numFormat)) {\n return autoFormatter(value)\n }\n\n if (autoFormat === true) {\n return autoFormatter(value)\n }\n\n if (!isEmpty(numFormat)) {\n return formatter(value)\n }\n\n return String(value)\n}\n\nexport const createLinearPercentFormat = (\n value: string | number,\n autoFormat: boolean | undefined,\n numFormat: NumFormat,\n formatter: Formatter,\n percentFormatter: Formatter,\n) => {\n if (isNullish(autoFormat) && isEmpty(numFormat)) {\n return percentFormatter(value)\n }\n\n if (autoFormat === true) {\n return percentFormatter(value)\n }\n\n if (!isEmpty(numFormat)) {\n return formatter(value)\n }\n\n return String(value)\n}\n","import type { ISpec } from '@visactor/vchart'\nimport {\n createNumFormatter,\n isAreaPercent,\n isBarPercent,\n isColumnPercent,\n LINEAR_AXIS_INNER_OFFSET_TOP,\n} from 'src/pipeline/utils'\nimport type { SpecPipe, YLinearAxis } from 'src/types'\nimport { createLinearFormat, createLinearPercentFormat } from './format/linearFormat'\nimport { defaultTitleText } from './title/defaultTitleText'\n\nexport const yLinear: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { measures, dimensions, encoding } = advancedVSeed\n const config = advancedVSeed.config?.[chartType as 'column']?.yAxis as YLinearAxis\n\n if (!result.axes) {\n result.axes = []\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 autoFormat,\n numFormat = {},\n } = config\n\n const formatter = createNumFormatter(numFormat)\n const percentFormatter = createNumFormatter({\n type: 'percent',\n })\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 if (isBarPercent(vseed) || isColumnPercent(vseed) || isAreaPercent(vseed)) {\n return createLinearPercentFormat(value, autoFormat, numFormat, formatter, percentFormatter)\n }\n return createLinearFormat(value, autoFormat, numFormat, formatter)\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 || defaultTitleText(measures, dimensions, encoding.y as string[]),\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 labelColor,\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: labelColor || 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: labelColor || labelFontColor,\n fontWeight: labelFontWeight,\n },\n },\n background: {\n state: {\n selectedHover: {\n fill: labelColor || 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, labelColor, 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 handlerText: {\n visible: true,\n style: {\n fill: labelColor || 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, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed, vseed)) {\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'\nimport { isEmpty, isNullish } from 'remeda'\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 (isNullish(pointStyle) || isEmpty(pointStyle)) {\n return result\n }\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, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed, vseed)) {\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 { isRadar } from 'src/pipeline/utils'\nimport type { VSeed } from 'src/types'\n\nexport const getCurveType = (vseed: VSeed, lineSmooth: boolean = false): string => {\n if (!lineSmooth) {\n return 'linear'\n }\n\n /**\n * Tip: 长期来看, 由VChart封装好雷达图与面积图的曲线类型差异, 是一个更好的选择.\n */\n return isRadar(vseed) ? 'catmullRomClosed' : 'monotone'\n}\n\nexport const getCurveTension = (vseed: VSeed, lineSmooth: boolean = false): number => {\n if (!lineSmooth) {\n return 0\n }\n\n /**\n * Tip: 长期来看, 由VChart封装好雷达图与面积图的曲线类型差异, 是一个更好的选择.\n */\n return isRadar(vseed) ? 0.4 : 0\n}\n","import type { IAreaChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, LineStyle, SpecPipe } from 'src/types'\nimport { isEmpty, isNullish } from 'remeda'\nimport { getCurveTension, getCurveType } from './curve'\n\nexport const lineStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle } = advancedVSeed\n const { lineStyle } = markStyle\n const result = {\n ...spec,\n line: {\n style: {},\n },\n } as IAreaChartSpec\n\n if (isNullish(lineStyle) || isEmpty(lineStyle)) {\n return result\n }\n\n const lineStyles = (Array.isArray(lineStyle) ? lineStyle : [lineStyle]) as LineStyle[]\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 = getCurveType(context.vseed, lineSmooth)\n const curveTension = getCurveTension(context.vseed, lineSmooth)\n\n return {\n ...result,\n [`custom${index + 1}`]: {\n // 优先级: 后者覆盖前者\n level: index + 1,\n filter: (\n _: Datum,\n node: {\n renderNode: {\n context: {\n data: Datum[]\n }\n }\n },\n ) => {\n const lineData = node.renderNode.context.data\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 curveTension: curveTension,\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 { IArcLabelSpec, ILineChartSpec } from '@visactor/vchart'\nimport type { ILineLikeLabelSpec } from '@visactor/vchart/esm/series/mixin/interface'\nimport { createFormatter, createFormatterByMeasure, findMeasureById } from '../../../../utils'\nimport type {\n Datum,\n Dimensions,\n Encoding,\n FoldInfo,\n Formatter,\n Label,\n Measure,\n Measures,\n NumFormat,\n SpecPipe,\n} from 'src/types'\nimport { merge, uniqueBy } from 'remeda'\n\nexport const label: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { chartType, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { label: Label }\n const foldInfo = datasetReshapeInfo[0].foldInfo as FoldInfo\n\n const { label } = baseConfig\n\n result.label = buildLabel<ILineLikeLabelSpec>(\n label,\n vseed.measures,\n vseed.dimensions,\n advancedVSeed.measures,\n encoding as Encoding,\n [foldInfo],\n )\n\n return result\n}\n\nexport const generateMeasureValue = (\n value: number | string,\n measure: Measure,\n labelAutoFormat?: boolean,\n numFormat: NumFormat = {},\n) => {\n const format = merge(numFormat, measure.numFormat || measure.format)\n const mergedMeasure = { ...measure, numFormat: format, autoFormat: labelAutoFormat || measure.autoFormat }\n\n const formatter = createFormatterByMeasure(mergedMeasure)\n return formatter(value)\n}\n\nexport const generateMeasurePercent = (value: number | string, sum: number, formatter: Formatter) => {\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 percentValue = num / sum\n return formatter(percentValue)\n}\n\nexport const buildLabel = <T extends ILineLikeLabelSpec | IArcLabelSpec>(\n label: Label,\n vseedMeasures: Measures = [],\n vseedDimensions: Dimensions = [],\n advancedVSeedMeasures: Measures,\n encoding: Encoding,\n foldInfoList: FoldInfo[],\n): T => {\n const {\n enable,\n wrap,\n showValue,\n showValuePercent,\n labelOverlap,\n labelColorSmartInvert,\n labelColor,\n labelFontSize,\n labelFontWeight,\n labelBackgroundColor,\n labelPosition,\n autoFormat,\n numFormat = {},\n } = label\n\n const labelDims = uniqueBy(\n (vseedDimensions || []).filter((item) => encoding.label?.includes(item.id)),\n (item) => item.id,\n )\n const labelMeas = uniqueBy(\n (vseedMeasures || []).filter((item) => encoding.label?.includes(item.id)),\n (item) => item.id,\n )\n\n const percentFormat: NumFormat = merge(numFormat, {\n type: 'percent',\n } as NumFormat)\n\n const percentFormatter = createFormatter(percentFormat)\n\n const result = {\n visible: enable,\n formatMethod: (_, datum: Datum) => {\n const result = []\n\n const dimLabels = labelDims.map((item) => item.alias || item.id)\n const meaLabels = labelMeas.map((item) =>\n generateMeasureValue(datum[item.id] as number | string, item, autoFormat, numFormat),\n )\n\n result.push(...dimLabels)\n\n foldInfoList.forEach((foldInfo) => {\n const { measureId, measureValue, statistics } = foldInfo\n const measure = findMeasureById(advancedVSeedMeasures, datum[measureId] as string)\n if (measure) {\n const measureValueLabel = generateMeasureValue(\n datum[measureValue] as number | string,\n measure,\n autoFormat,\n numFormat,\n )\n const measurePercentLabel = generateMeasurePercent(\n datum[measureValue] as number | string,\n statistics.sum,\n percentFormatter,\n )\n if (showValue) {\n result.push(measureValueLabel)\n }\n if (showValuePercent) {\n result.push(measurePercentLabel)\n }\n }\n })\n\n result.push(...meaLabels)\n\n if (wrap) {\n return result\n }\n return result.join(' ')\n },\n position: labelPosition,\n style: {\n fill: labelColor,\n fontSize: labelFontSize,\n fontWeight: labelFontWeight,\n background: labelBackgroundColor,\n },\n smartInvert: labelColorSmartInvert,\n } as T\n\n if (labelOverlap) {\n result.overlap = {\n hideOnHit: true,\n clampForce: true,\n }\n }\n\n return result\n}\n","import { pipe, uniqueBy } from 'remeda'\nimport { createFormatterByMeasure, findAllMeasures, findMeasureById } from '../../../../utils'\nimport type { Datum, Dimensions, FoldInfo, 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, vseed } = context\n const { measures, datasetReshapeInfo, chartType, 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(\n encoding.tooltip || [],\n dimensions,\n findAllMeasures(vseed.measures),\n foldInfo,\n unfoldInfo,\n ),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(measures, foldInfo, unfoldInfo),\n },\n }\n return result\n}\n\nexport const createDimensionContent = (measures: Measures, foldInfo: FoldInfo, unfoldInfo: UnfoldInfo) => {\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 const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n },\n ]\n}\n\nexport const createMarkContent = (\n tooltip: string[],\n dimensions: Dimensions,\n measures: Measures,\n foldInfo: FoldInfo,\n unfoldInfo: UnfoldInfo,\n) => {\n const dims = pipe(\n dimensions.filter((item) => tooltip.includes(item.id)),\n uniqueBy((item) => item.id),\n uniqueBy((item) => item.alias),\n )\n const meas = pipe(\n measures.filter((item) => tooltip.includes(item.id)),\n uniqueBy((item) => item.id),\n uniqueBy((item) => item.alias),\n )\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 const formatter = createFormatterByMeasure(measure)\n return formatter(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 formatter = createFormatterByMeasure(measure)\n return formatter(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 { Spec, 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 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 animationAppear: {\n duration: 600,\n type: 'all',\n direction: 'row',\n },\n }\n}\n\nexport const pivotIndicatorsAsRow: SpecPipe = (spec): Spec => {\n const result = { ...spec } as PivotChartConstructorOptions\n\n return {\n ...result,\n indicatorsAsCol: false,\n }\n}\n\nexport const pivotIndicatorsAsCol: SpecPipe = (spec): 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 { isCombination, isPivot } from 'src/pipeline/utils'\nimport type { SpecPipe } from 'src/types'\n\nexport const pivotGridStyle: SpecPipe = (spec, context) => {\n const { vseed } = context\n\n const onlyCombination = !isPivot(vseed) && isCombination(vseed)\n\n const result = { ...spec } as PivotChartConstructorOptions\n const transparent = 'rgba(0,0,0,0)'\n\n const borderColor = '#e3e5eb'\n const bodyFontColor = '#141414'\n const headerFontColor = '#21252c'\n const headerBackgroundColor = 'rgba(0,0,0,0)'\n const hoverHeaderBackgroundColor = onlyCombination ? transparent : '#D9DDE4'\n const hoverHeaderInlineBackgroundColor = onlyCombination ? transparent : '#D9DDE455'\n\n return {\n ...result,\n theme: {\n underlayBackgroundColor: transparent,\n bodyStyle: {\n borderColor,\n color: bodyFontColor,\n borderLineWidth: [1, 1, 1, 1],\n bgColor: transparent,\n hover: {\n cellBgColor: 'transparent',\n },\n },\n headerStyle: {\n borderColor,\n fontSize: 12,\n borderLineWidth: 1,\n color: headerFontColor,\n textAlign: 'center',\n bgColor: headerBackgroundColor,\n hover: {\n cellBgColor: hoverHeaderBackgroundColor,\n inlineRowBgColor: hoverHeaderInlineBackgroundColor || undefined,\n inlineColumnBgColor: hoverHeaderInlineBackgroundColor || undefined,\n },\n },\n rowHeaderStyle: {\n borderColor,\n fontSize: 12,\n color: headerFontColor,\n borderLineWidth: 1,\n bgColor: headerBackgroundColor,\n hover: {\n cellBgColor: hoverHeaderBackgroundColor,\n inlineRowBgColor: hoverHeaderInlineBackgroundColor || undefined,\n inlineColumnBgColor: hoverHeaderInlineBackgroundColor || undefined,\n },\n },\n cornerHeaderStyle: {\n borderColor,\n textAlign: 'center',\n fontSize: 12,\n color: headerFontColor,\n fontWeight: 'bold',\n borderLineWidth: 1,\n bgColor: headerBackgroundColor,\n frameStyle: {\n borderColor,\n borderLineWidth: [1, 0, 0, 1],\n },\n hover: {\n cellBgColor: hoverHeaderBackgroundColor,\n inlineRowBgColor: hoverHeaderInlineBackgroundColor || undefined,\n inlineColumnBgColor: hoverHeaderInlineBackgroundColor || undefined,\n },\n },\n cornerRightTopCellStyle: {\n borderColor,\n borderLineWidth: 0,\n frameStyle: {\n borderColor,\n borderLineWidth: [1, 1, 0, 1],\n },\n bgColor: headerBackgroundColor,\n hover: {\n cellBgColor: hoverHeaderBackgroundColor,\n },\n },\n cornerLeftBottomCellStyle: {\n borderColor,\n borderLineWidth: [1, 0, 1, 1],\n bgColor: headerBackgroundColor,\n frameStyle: {\n borderColor,\n borderLineWidth: [1, 0, 1, 1],\n },\n hover: {\n cellBgColor: hoverHeaderBackgroundColor,\n },\n },\n cornerRightBottomCellStyle: {\n borderColor,\n borderLineWidth: 0,\n bgColor: headerBackgroundColor,\n frameStyle: {\n borderColor,\n borderLineWidth: [1, 1, 1, 1],\n },\n hover: {\n cellBgColor: hoverHeaderBackgroundColor,\n },\n },\n rightFrozenStyle: {\n borderColor,\n borderLineWidth: 1,\n bgColor: headerBackgroundColor,\n hover: {\n cellBgColor: hoverHeaderBackgroundColor,\n },\n },\n bottomFrozenStyle: {\n borderColor,\n borderLineWidth: 1,\n bgColor: headerBackgroundColor,\n hover: {\n cellBgColor: hoverHeaderBackgroundColor,\n },\n },\n selectionStyle: {\n cellBgColor: '',\n cellBorderColor: '',\n },\n frameStyle: {\n borderColor,\n cornerRadius: 4,\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 { Spec, SpecPipe } from 'src/types'\n\nexport const datasetPivot: SpecPipe = (spec, context): Spec => {\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 labelColor,\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: labelColor || 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: labelColor || labelFontColor,\n fontWeight: labelFontWeight,\n },\n },\n background: {\n state: {\n selectedHover: {\n fill: labelColor || 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.statistics.colorMin))\n const min = Math.min(...datasetReshapeInfo.map((d) => d.foldInfo.statistics.colorMax))\n const { legend, color } = baseConfig\n const { colorScheme, linearColorScheme } = color\n\n const {\n enable,\n position = 'bottom',\n labelFontColor,\n labelColor,\n labelFontSize = 12,\n labelFontWeight = 400,\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: 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 handlerText: {\n visible: true,\n style: {\n fill: labelColor || 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}\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'\nimport { addColorToEncoding } from './color'\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, measures.length > 1)\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 = encoding.color\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureName) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\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 addColorToEncoding(dimensions, encoding, isMultiMeasure)\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 = encoding.color\n }\n\n // tooltip\n encoding.tooltip = unique(dimensions.map((item) => item.id))\n encoding.tooltip = encoding.tooltip.filter((d) => d !== MeasureName)\n\n // label\n encoding.label = unique(dimensions.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = encoding.label.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 // label\n const label = unique(measures.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = unique([...(encoding.label || []), ...label])\n\n // tooltip\n const tooltip = unique(measures.filter((item) => item.encoding === 'tooltip').map((item) => item.id))\n encoding.tooltip = unique([...(encoding.tooltip || []), ...label, ...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 deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const columnAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForColumn, buildMeasures],\n [\n encodingForColumn,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\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, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed, vseed)) {\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'\nimport { isEmpty, isNullish } from 'remeda'\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 (isNullish(barStyle) || isEmpty(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 dy = textPosition?.includes('bottom') ? -1 * textFontSize! : textFontSize\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 & { _scaleConfig?: { bandPosition?: number } }) => {\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 bandPosition = context?._scaleConfig?.bandPosition || 0\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 const startX = Math.min(...xyList.map((item) => item.x)) - (outerPadding || 4)\n const endX = Math.max(...xyList.map((item) => item.x)) + (outerPadding || 4)\n\n const width = endX - startX + xBandWidth\n const middleX = (endX + startX) / 2 + xBandWidth * (0.5 - bandPosition)\n\n const minX = middleX - width / 2\n const maxX = middleX + width / 2\n\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 startY = Math.min(...xyList.map((item) => item.y)) - (outerPadding || 4)\n const endY = Math.max(...xyList.map((item) => item.y)) + (outerPadding || 4)\n const width = endY - startY + yBandWidth\n const middleY = (endY + startY) / 2 + yBandWidth * (0.5 - bandPosition)\n\n const minY = middleY - width / 2\n const maxY = middleY + width / 2\n\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: dy,\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: dy,\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}\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 deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const columnParallelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForColumn, buildMeasures],\n [\n encodingForColumn,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\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 { isDeepEqual } from 'remeda'\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, encoding } = advancedVSeed\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n const sameDimensionsMode = isDeepEqual(encoding.x, encoding.color)\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}\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 deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const columnPercentAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForColumn, buildMeasures],\n [\n encodingForColumn,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n sortXBandAxis,\n sortLegend,\n columnPercentConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IAreaChartSpec, IBarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const percent: SpecPipe = (spec) => {\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}\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'\nimport { addColorToEncoding } from './color'\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, measures.length > 1)\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 = encoding.color\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureName) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\n // y\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 // color\n addColorToEncoding(dimensions, encoding, isMultiMeasure)\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 = encoding.color\n }\n\n // tooltip\n encoding.tooltip = unique(dimensions.map((item) => item.id))\n encoding.tooltip = encoding.tooltip.filter((d) => d !== MeasureName)\n\n // label\n encoding.label = unique(dimensions.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = encoding.label.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 // label\n const label = unique(measures.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = unique([...(encoding.label || []), ...label])\n\n // tooltip\n const tooltip = unique(measures.filter((item) => item.encoding === 'tooltip').map((item) => item.id))\n encoding.tooltip = unique([...(encoding.tooltip || []), ...label, ...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 deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const barAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForBar, buildMeasures],\n [\n encodingForBar,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\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 type { SpecPipe, XLinearAxis } from 'src/types'\nimport {\n createNumFormatter,\n isAreaPercent,\n isBarPercent,\n isColumnPercent,\n LINEAR_AXIS_INNER_OFFSET_TOP,\n} from 'src/pipeline/utils'\nimport { createLinearFormat, createLinearPercentFormat } from './format/linearFormat'\nimport { defaultTitleText } from './title/defaultTitleText'\n\nexport const xLinear: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { encoding, dimensions, measures } = advancedVSeed\n const { chartType } = vseed\n const config = advancedVSeed.config?.[chartType as 'bar']?.xAxis as XLinearAxis\n\n if (!result.axes) {\n result.axes = []\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 autoFormat,\n numFormat = {},\n } = config\n\n const formatter = createNumFormatter(numFormat)\n const percentFormatter = createNumFormatter({\n type: 'percent',\n })\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 if (isBarPercent(vseed) || isColumnPercent(vseed) || isAreaPercent(vseed)) {\n return createLinearPercentFormat(value, autoFormat, numFormat, formatter, percentFormatter)\n }\n return createLinearFormat(value, autoFormat, numFormat, formatter)\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 || defaultTitleText(measures, dimensions, encoding.x as string[]),\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'\nimport { defaultTitleText } from './title/defaultTitleText'\n\nexport const yBand: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { measures, dimensions, encoding } = advancedVSeed\n const config = advancedVSeed.config?.[chartType as 'bar']?.yAxis as XBandAxis\n\n if (!result.axes) {\n result.axes = []\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 || defaultTitleText(measures, dimensions, encoding.y as string[]),\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}\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 deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const barParallelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForBar, buildMeasures],\n [\n encodingForBar,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\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 { isDeepEqual } from 'remeda'\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, encoding } = advancedVSeed\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n const sameDimensionsMode = isDeepEqual(encoding.y, encoding.color)\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}\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 deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const barPercentAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForBar, buildMeasures],\n [\n encodingForBar,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\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}\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 deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const areaAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForLine, buildMeasures],\n [\n encodingForLine,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\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, vseed } = 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, vseed) ? 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, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed, vseed)) {\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, LineStyle, SpecPipe } from 'src/types'\nimport { groupBy, isEmpty, isNullish } from 'remeda'\nimport { getCurveTension, getCurveType } from './curve'\n\nexport const areaStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle, datasetReshapeInfo, dataset } = advancedVSeed\n const { areaStyle, lineStyle } = 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 (isNullish(areaStyle) || isEmpty(areaStyle)) {\n return result\n }\n\n const areaStyles = (Array.isArray(areaStyle) ? areaStyle : [areaStyle]) as AreaStyle[]\n const lineStyles = (Array.isArray(lineStyle) ? lineStyle : [lineStyle]) as LineStyle[]\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 const curveType = getCurveType(context.vseed, lineStyles[index]?.lineSmooth)\n const curveTension = getCurveTension(context.vseed, lineStyles[index]?.lineSmooth)\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 curveType,\n curveTension,\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}\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 deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const areaPercentAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForLine, buildMeasures],\n [\n encodingForLine,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\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}\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'\nimport { addColorToEncoding } from './color'\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 = encoding.color\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 addColorToEncoding(dimensions, encoding, false)\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 // label\n encoding.label = unique(dimensions.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = encoding.label.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.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 // size\n encoding.size = unique(measures.filter((item) => item.encoding === 'size').map((item) => item.id))\n\n // label\n const label = unique(measures.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = unique([...(encoding.label || []), ...label])\n\n // tooltip\n const tooltip = unique(measures.filter((item) => item.encoding === 'tooltip').map((item) => item.id))\n encoding.tooltip = unique([...(encoding.tooltip || []), ...label, ...tooltip])\n}\n","import type { AdvancedPipe, MeasureGroup, Measures, MeasureTree, Scatter, ScatterMeasures } from 'src/types'\nimport { isMeasureTreeWithParentId, isMeasureTreeWithChildren } from './utils'\nimport { clone } from 'remeda'\nimport { DEFAULT_PARENT_ID } from 'src/pipeline/utils/constant'\n\nexport const buildMeasuresForScatter: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context as {\n vseed: Scatter\n }\n\n // 带Children的指标树, 不进行任何处理\n if (isMeasureTreeWithChildren(advancedVSeed.measures)) {\n return advancedVSeed\n }\n // 带parentId的指标树, 转换为带children的指标树\n if (isMeasureTreeWithParentId(advancedVSeed.measures)) {\n advancedVSeed.measures = generateMeasuresByParentId(advancedVSeed.measures as Measures)\n return advancedVSeed\n }\n\n /**\n * 既不是带Children的指标树, 也不是带parentId的指标树, 则自动生成指标\n */\n\n const scatterMeasures = vseed.scatterMeasures\n ? clone(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 const id = item.parentId || DEFAULT_PARENT_ID\n\n if (!scatterMeasures.find((d) => d.id === id)) {\n scatterMeasures.push({\n id,\n yMeasures: [],\n xMeasures: [],\n })\n }\n const scatterChart = scatterMeasures.find((d) => d.id === id)\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].filter(Boolean)\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 { pick } from 'remeda'\nimport { replaceNullToUndefined } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed, Config } from 'src/types'\n\nexport const scatterConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const pickedConfig = pick(vseed, [\n 'backgroundColor',\n 'color',\n 'label',\n 'legend',\n 'tooltip',\n 'xAxis',\n 'yAxis',\n 'sizeRange',\n 'size',\n 'crosshairLine',\n ]) as Config['line']\n\n const config = replaceNullToUndefined(pickedConfig)\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n","import { uniqueBy } from 'remeda'\nimport {\n dataReshapeByEncoding,\n FoldXMeasureId,\n FoldXMeasureValue,\n FoldYMeasureId,\n FoldYMeasureValue,\n} 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.length > 2) {\n throw new Error('measures can not be more than 2 groups in scatter')\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, vseed),\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, vseed),\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 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 > 2) {\n throw new Error('measures can not be more than 2 groups in scatter')\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, vseed),\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, vseed),\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 deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\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(\n [defaultEncodingForScatter, buildMeasuresForScatter],\n [\n encodingForScatter,\n buildMeasuresForScatter,\n deleteEncodingForMeasure(['tooltip', 'label', 'size']),\n deleteTooltipAndLabelDimension,\n ],\n ),\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 { IScatterChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const scatterSize: SpecPipe = (spec, context) => {\n const result = { ...spec } as IScatterChartSpec\n const { advancedVSeed } = context\n const { chartType, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as {\n sizeRange: number | number[]\n size?: number | number[]\n }\n const hasSizeEncoding = encoding?.size?.[0]\n if (!hasSizeEncoding) {\n return result\n }\n\n const size = baseConfig.size ?? baseConfig.sizeRange\n\n result.size = {\n type: 'linear',\n range: Array.isArray(size) ? size : [size, size],\n } as IScatterChartSpec['size']\n\n result.sizeField = encoding?.size?.[0] || undefined\n\n return result\n}\n","import type { IScatterChartSpec } from '@visactor/vchart'\nimport type { Encoding, FoldInfo, Label, SpecPipe } from 'src/types'\nimport { buildLabel } from './label'\nimport type { ILineLikeLabelSpec } from '@visactor/vchart/esm/series/mixin/interface'\n\nexport const labelScatter: SpecPipe = (spec, context) => {\n const result = { ...spec } as IScatterChartSpec\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { chartType, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { label: Label }\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n\n const { label } = baseConfig\n\n result.label = buildLabel<ILineLikeLabelSpec>(\n label,\n vseed.measures,\n vseed.dimensions,\n advancedVSeed.measures,\n encoding as Encoding,\n foldInfoList,\n )\n\n return result\n}\n","import { uniqueBy } from 'remeda'\nimport { createFormatterByMeasure, findAllMeasures, 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, vseed } = context\n const { 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(\n encoding.tooltip || [],\n dimensions,\n findAllMeasures(vseed.measures),\n locale,\n foldInfoList,\n ),\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 = uniqueBy(\n dimensions.filter((item) => tooltip.includes(item.id)),\n (item) => item.id,\n )\n const meas = uniqueBy(\n measures.filter((item) => tooltip.includes(item.id)),\n (item) => item.id,\n )\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 const formatter = createFormatterByMeasure(measure)\n return formatter(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 const formatter = createFormatterByMeasure(measure)\n return formatter(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 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 labelScatter,\n scatterSize,\n} from '../pipes'\n\nconst scatter: SpecPipeline = [\n initScatter,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetScatter,\n progressive,\n xLinear,\n yLinear,\n scatterSize,\n labelScatter,\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 scatterSize,\n labelScatter,\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}\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'\nimport { addColorToEncoding } from './color'\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, measures.length > 1)\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 = encoding.color\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureName) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\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 addColorToEncoding(dimensions, encoding, isMultiMeasure)\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 = encoding.color\n }\n\n // tooltip\n encoding.tooltip = unique(dimensions.map((item) => item.id))\n encoding.tooltip = encoding.tooltip.filter((d) => d !== MeasureName)\n\n // label\n encoding.label = unique(dimensions.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = encoding.label.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 // label\n const label = unique(measures.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = unique([...(encoding.label || []), ...label])\n\n // tooltip\n const tooltip = unique(measures.filter((item) => item.encoding === 'tooltip').map((item) => item.id))\n encoding.tooltip = unique([...(encoding.tooltip || []), ...label, ...tooltip])\n}\n","import type { AdvancedPipe, DualAxis, DualMeasures, MeasureGroup, Measures, MeasureTree } from 'src/types'\nimport { isMeasureTreeWithParentId, isMeasureTreeWithChildren } from './utils'\nimport { clone } from 'remeda'\nimport { DEFAULT_PARENT_ID } from 'src/pipeline/utils/constant'\n\nexport const buildMeasuresForDualAxis: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context as {\n vseed: DualAxis\n }\n\n // 带Children的指标树, 不进行任何处理\n if (isMeasureTreeWithChildren(advancedVSeed.measures)) {\n return advancedVSeed\n }\n // 带parentId的指标树, 转换为带children的指标树\n if (isMeasureTreeWithParentId(advancedVSeed.measures)) {\n advancedVSeed.measures = generateMeasuresByParentId(advancedVSeed.measures as Measures)\n return advancedVSeed\n }\n\n /**\n * 既不是带Children的指标树, 也不是带parentId的指标树, 则自动生成指标\n */\n const dualMeasures = vseed.dualMeasures\n ? clone(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 const id = item.parentId || DEFAULT_PARENT_ID\n if (!dualMeasures.find((d) => d.id === id)) {\n dualMeasures.push({\n id,\n primaryMeasures: [],\n secondaryMeasures: [],\n })\n }\n\n const dualChart = dualMeasures.find((d) => d.id === id)\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].filter(Boolean)\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 { uniqueBy } from 'remeda'\nimport { 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 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.length > 2) {\n throw new Error('measures can not be more than 2 groups in dualAxis')\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\n if (primaryMeasures && primaryMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(primaryMeasures.children, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: FoldPrimaryMeasureValue,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n },\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(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(secondaryMeasures.children, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: FoldSecondaryMeasureValue,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n },\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 { uniqueBy } from 'remeda'\nimport { 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 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 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 > 2) {\n throw new Error('measures can not be more than 2 groups in dualAxis')\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(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(primaryMeasures.children, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n },\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(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(secondaryMeasures.children, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: `${FoldSecondaryMeasureValue}${index}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n },\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 { replaceNullToUndefined } from 'src/pipeline/utils'\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 pickedConfig = pick(vseed, [\n // common\n 'backgroundColor',\n 'color',\n 'label',\n 'legend',\n 'tooltip',\n 'xAxis',\n\n // only for dualAxis\n 'dualChartType',\n 'alignTicks',\n 'primaryYAxis',\n 'secondaryYAxis',\n 'crosshairLine',\n 'crosshairRect',\n ]) as Config['dualAxis']\n\n const config = replaceNullToUndefined(pickedConfig)\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n","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 deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const dualAxisAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForDualAxis, buildMeasuresForDualAxis],\n [\n encodingForDualAxis,\n buildMeasuresForDualAxis,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\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 labelLayout: 'region',\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, vseed } = 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, vseed) ? 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 result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX\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 result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX\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 { Encoding, FoldInfo, Label, SpecPipe } from 'src/types'\nimport { buildLabel } from './label'\nimport { DUAL_AXIS_LABEL_Z_INDEX } from 'src/pipeline/utils/constant'\nimport type { ILineLikeLabelSpec } from '@visactor/vchart/esm/series/mixin/interface'\n\nexport const labelPrimary: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo, encoding } = advancedVSeed\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { label: Label }\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n result.label = buildLabel<ILineLikeLabelSpec>(\n baseConfig.label,\n vseed.measures,\n vseed.dimensions,\n advancedVSeed.measures,\n encoding as Encoding,\n [foldInfoList[0]],\n )\n result.label.zIndex = DUAL_AXIS_LABEL_Z_INDEX\n return result\n}\n\nexport const labelSecondary: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo, encoding } = advancedVSeed\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { label: Label }\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n\n result.label = buildLabel<ILineLikeLabelSpec>(\n baseConfig.label,\n vseed.measures,\n vseed.dimensions,\n advancedVSeed.measures,\n encoding as Encoding,\n [foldInfoList[1]],\n )\n result.label.zIndex = DUAL_AXIS_LABEL_Z_INDEX\n return result\n}\n","import { isNullish } from 'remeda'\nimport { createDimensionContent, createMarkContent } from './tooltip'\nimport type { FoldInfo, SpecPipe, Tooltip, UnfoldInfo } from 'src/types'\nimport { findAllMeasures } from 'src/pipeline/utils'\n\nexport const tooltipPrimary: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { measures, datasetReshapeInfo, chartType, 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(\n encoding.tooltip || [],\n dimensions,\n findAllMeasures(vseed.measures),\n foldInfoList[0],\n unfoldInfo,\n ),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(measures, foldInfoList[0], unfoldInfo),\n },\n }\n return result\n}\n\nexport const tooltipSecondary: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { measures, datasetReshapeInfo, chartType, 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(\n encoding.tooltip || [],\n dimensions,\n findAllMeasures(vseed.measures),\n foldInfoList[1],\n unfoldInfo,\n ),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(measures, foldInfoList[1], unfoldInfo),\n },\n }\n return result\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { LINEAR_AXIS_INNER_OFFSET_TOP } from '../../../../utils/constant'\nimport { createNumFormatter } from '../../../../utils'\nimport type { SpecPipe, YLinearAxis } from 'src/types'\nimport { isEmpty, isNullish } from 'remeda'\nimport { createLinearFormat } from './format/linearFormat'\nimport { defaultTitleText } from './title/defaultTitleText'\n\nexport const yLinearPrimary: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { datasetReshapeInfo, encoding, measures, dimensions } = 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 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\n autoFormat,\n numFormat = {},\n } = yAxisConfig\n\n const formatter = createNumFormatter(numFormat)\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 createLinearFormat(value, autoFormat, numFormat, formatter)\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 || defaultTitleText(measures, dimensions, encoding.y as string[]),\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 { createNumFormatter } from '../../../../utils'\nimport type { SpecPipe, YLinearAxis } from 'src/types'\nimport { isEmpty, isNullish } from 'remeda'\nimport { createLinearFormat } from './format/linearFormat'\nimport { defaultTitleText } from './title/defaultTitleText'\n\nexport const yLinearSecondary: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { datasetReshapeInfo, measures, dimensions, encoding } = 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 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 numFormat = {},\n autoFormat,\n } = yAxisConfig\n\n const formatter = createNumFormatter(numFormat)\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 createLinearFormat(value, autoFormat, numFormat, formatter)\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 || defaultTitleText(measures, dimensions, encoding.y as string[]),\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 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 annotationAreaBand,\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 annotationAreaBand,\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 annotationAreaBand,\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'\nimport { addColorToEncoding } from './color'\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, measures.length > 1)\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 = encoding.color\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureName) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\n // color\n addColorToEncoding(dimensions, encoding, isMultiMeasure)\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 // label\n encoding.label = unique(dimensions.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = encoding.label.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 // label\n const label = unique(measures.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = unique([...(encoding.label || []), ...label])\n\n // tooltip\n const tooltip = unique(measures.filter((item) => item.encoding === 'tooltip').map((item) => item.id))\n encoding.tooltip = unique([...(encoding.tooltip || []), ...label, ...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 deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const pieAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForPie, buildMeasures],\n [\n encodingForPie,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\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, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed, vseed)) {\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 { IArcLabelSpec, IPieChartSpec } from '@visactor/vchart'\nimport type { Encoding, FoldInfo, PieLabel, SpecPipe } from 'src/types'\nimport { buildLabel } from './label'\n\nexport const labelPie: SpecPipe = (spec, context) => {\n const result = { ...spec } as IPieChartSpec\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { chartType, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { label: PieLabel }\n const foldInfo = datasetReshapeInfo[0].foldInfo as FoldInfo\n\n const { label } = baseConfig\n\n result.label = buildLabel<IArcLabelSpec>(\n label,\n vseed.measures,\n vseed.dimensions,\n advancedVSeed.measures,\n encoding as Encoding,\n [foldInfo],\n )\n if (label.labelLayout) {\n result.label.layout = {\n align: label.labelLayout,\n }\n }\n return result\n}\n","import type { SpecPipe } from 'src/types'\n\nexport const pivotHideIndicatorName: SpecPipe = (spec) => {\n return {\n ...spec,\n hideIndicatorName: true,\n }\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n backgroundColor,\n color,\n datasetXY,\n datasetPivot,\n initPie,\n initPivot,\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 labelPie,\n pivotHideIndicatorName,\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 labelPie,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotPie: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n pivotHideIndicatorName,\n datasetPivot,\n pivotIndicators([\n initPie,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n colorPieStyleFill(pieStyle),\n labelPie,\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}\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 deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const donutAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForPie, buildMeasures],\n [\n encodingForPie,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\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 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 labelPie,\n pivotHideIndicatorName,\n} from '../pipes'\n\nconst donut: SpecPipeline = [\n initDonut,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n labelPie,\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 pivotHideIndicatorName,\n datasetPivot,\n pivotIndicators([\n initDonut,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n labelPie,\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}\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'\nimport { addColorToEncoding } from './color'\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, measures.length > 1)\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 = encoding.color\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureName) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\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 addColorToEncoding(dimensions, encoding, isMultiMeasure)\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 = encoding.color\n }\n\n // tooltip\n encoding.tooltip = unique(dimensions.map((item) => item.id))\n encoding.tooltip = encoding.tooltip.filter((d) => d !== MeasureName)\n\n // label\n encoding.label = unique(dimensions.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = encoding.label.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 // label\n const label = unique(measures.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = unique([...(encoding.label || []), ...label])\n\n // tooltip\n const tooltip = unique(measures.filter((item) => item.encoding === 'tooltip').map((item) => item.id))\n encoding.tooltip = unique([...(encoding.tooltip || []), ...label, ...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 deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const roseAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForRose, buildMeasures],\n [\n encodingForRose,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\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 radiusAxis: SpecPipe = (spec) => {\n const result = { ...spec } as IRoseChartSpec\n\n if (!result.axes) {\n result.axes = []\n }\n\n result.axes.push({\n type: 'linear',\n orient: 'radius',\n visible: false,\n zero: true,\n nice: false,\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, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed, vseed)) {\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 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 progressive,\n linearColor,\n colorAdapter,\n pivotColorLegend,\n colorLegend,\n roseStyle,\n colorRoseStyleFill,\n labelPie,\n pivotHideIndicatorName,\n} from '../pipes'\n\nconst rose: SpecPipeline = [\n initRose,\n stackCornerRadius,\n stackInverse,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n radiusAxis,\n verticalCrosshairRect,\n colorRoseStyleFill(roseStyle),\n colorAdapter(discreteLegend, colorLegend),\n labelPie,\n tooltip,\n]\n\nconst pivotRose: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n pivotHideIndicatorName,\n datasetPivot,\n pivotIndicators([\n initRose,\n stackCornerRadius,\n stackInverse,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n radiusAxis,\n verticalCrosshairRect,\n colorRoseStyleFill(roseStyle),\n labelPie,\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}\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 deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const roseParallelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForRose, buildMeasures],\n [\n encodingForRose,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n roseParallelConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport { isDeepEqual } from 'remeda'\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, encoding } = advancedVSeed\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n const sameDimensionsMode = isDeepEqual(encoding.angle, encoding.color)\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 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 progressive,\n pivotColorLegend,\n colorAdapter,\n linearColor,\n colorLegend,\n roseStyle,\n colorRoseStyleFill,\n labelPie,\n pivotHideIndicatorName,\n} from '../pipes'\n\nconst roseParallel: SpecPipeline = [\n initRoseParallel,\n stackCornerRadius,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n radiusAxis,\n colorRoseStyleFill(roseStyle),\n colorAdapter(discreteLegend, colorLegend),\n labelPie,\n tooltip,\n verticalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotRoseParallel: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n pivotHideIndicatorName,\n datasetPivot,\n pivotIndicators([\n initRoseParallel,\n stackCornerRadius,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n radiusAxis,\n verticalCrosshairRect,\n colorRoseStyleFill(roseStyle),\n labelPie,\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}\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'\nimport { addColorToEncoding } from './color'\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, measures.length > 1)\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, isMultiMeasure: boolean) => {\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 addColorToEncoding(dimensions, encoding, isMultiMeasure)\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 // label\n encoding.label = unique(dimensions.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = encoding.label.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 // label\n const label = unique(measures.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = unique([...(encoding.label || []), ...label])\n\n // tooltip\n const tooltip = unique(measures.filter((item) => item.encoding === 'tooltip').map((item) => item.id))\n encoding.tooltip = unique([...(encoding.tooltip || []), ...label, ...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 deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const radarAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForRadar, buildMeasures],\n [\n encodingForRadar,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\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, vseed } = 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, vseed) ? 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) => {\n const result = { ...spec } as IRoseChartSpec\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) => {\n const result = { ...spec } as IRoseChartSpec\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 pivotHideIndicatorName,\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 pivotHideIndicatorName,\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}\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'\nimport { addColorToEncoding } from './color'\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, measures.length > 1)\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 = encoding.color\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureName) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\n // color\n addColorToEncoding(dimensions, encoding, isMultiMeasure)\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 // label\n encoding.label = unique(dimensions.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = encoding.label.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 // label\n const label = unique(measures.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = unique([...(encoding.label || []), ...label])\n\n // tooltip\n const tooltip = unique(measures.filter((item) => item.encoding === 'tooltip').map((item) => item.id))\n encoding.tooltip = unique([...(encoding.tooltip || []), ...label, ...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 deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const funnelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForFunnel, buildMeasures],\n [\n encodingForFunnel,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\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, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed, vseed)) {\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 pivotHideIndicatorName,\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 pivotHideIndicatorName,\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}\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'\nimport { addColorToEncoding } from './color'\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, measures.length > 1)\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 = encoding.color\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureName) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\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 addColorToEncoding(dimensions, encoding, isMultiMeasure)\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 = encoding.color\n }\n // tooltip\n encoding.tooltip = unique(dimensions.map((item) => item.id))\n encoding.tooltip = encoding.tooltip.filter((d) => d !== MeasureName)\n // label\n encoding.label = unique(dimensions.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = encoding.label.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 // label\n const label = unique(measures.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = unique([...(encoding.label || []), ...label])\n\n // tooltip\n const tooltip = unique(measures.filter((item) => item.encoding === 'tooltip').map((item) => item.id))\n encoding.tooltip = unique([...(encoding.tooltip || []), ...label, ...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 deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const heatmapAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForHeatmap, buildMeasures],\n [encodingForHeatmap, buildMeasures, deleteEncodingForMeasure(['tooltip', 'label']), deleteTooltipAndLabelDimension],\n ),\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'\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, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed, vseed)) {\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 { uniqueBy } from 'remeda'\nimport { createFormatterByMeasure, findAllMeasures, 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, vseed } = context\n const { 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, findAllMeasures(vseed.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 = uniqueBy(\n dimensions.filter((item) => tooltip.includes(item.id)),\n (item) => item.id,\n )\n const meas = uniqueBy(\n measures.filter((item) => tooltip.includes(item.id)),\n (item) => item.id,\n )\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 const formatter = createFormatterByMeasure(measure)\n return formatter(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 const formatter = createFormatterByMeasure(measure)\n return formatter(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 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 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 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}\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 wrap: true,\n showValue: true,\n showValuePercent: false,\n labelColorSmartInvert: false,\n labelOverlap: 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 labelColor: '#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: {\n ...linearAxis,\n },\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: {\n ...linearAxis,\n },\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: {\n ...linearAxis,\n },\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 sizeRange: [8, 24],\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 label: {\n ...baseConfig.label,\n showValuePercent: true,\n labelLayout: 'labelLine',\n },\n },\n donut: {\n ...baseConfig,\n label: {\n ...baseConfig.label,\n showValuePercent: true,\n labelLayout: 'labelLine',\n },\n },\n radar: {\n ...baseConfig,\n },\n rose: {\n ...baseConfig,\n label: {\n ...baseConfig.label,\n showValuePercent: true,\n },\n },\n roseParallel: {\n ...baseConfig,\n label: {\n ...baseConfig.label,\n showValuePercent: true,\n },\n },\n // other\n funnel: {\n ...baseConfig,\n },\n heatmap: {\n ...baseConfig,\n label: {\n ...baseConfig.label,\n labelColorSmartInvert: true,\n },\n },\n },\n }\n}\n","import type {\n BackgroundColor,\n Color,\n CustomThemeConfig,\n Label,\n Legend,\n TableConfig,\n Tooltip,\n YBandAxis,\n YLinearAxis,\n} from 'src/types'\n\nexport const darkTheme = (): CustomThemeConfig => {\n const linearAxis: YLinearAxis = {\n nice: true,\n zero: true,\n label: {\n visible: true,\n labelAngle: 0,\n labelColor: '#E2E3E6',\n labelFontSize: 12,\n labelFontWeight: 400,\n },\n title: {\n visible: false,\n titleText: '',\n titleColor: '#FDFDFD',\n titleFontSize: 12,\n titleFontWeight: 400,\n },\n grid: {\n visible: true,\n gridColor: '#404349',\n gridWidth: 0.5,\n },\n tick: {\n visible: false,\n tickInside: false,\n tickSize: 4,\n tickColor: '#4B4F54',\n },\n line: {\n visible: false,\n lineColor: '#4B4F54',\n lineWidth: 1,\n },\n }\n const bandAxis: YBandAxis = {\n labelAutoHide: true,\n labelAutoHideGap: 4,\n labelAutoLimit: true,\n labelAutoLimitLength: 80,\n labelAutoRotate: false,\n labelAutoRotateAngleRange: [0, -45, -90],\n label: {\n visible: true,\n labelAngle: 0,\n labelColor: '#E2E3E6',\n labelFontSize: 12,\n labelFontWeight: 400,\n },\n title: {\n visible: false,\n titleText: '',\n titleColor: '#FDFDFD',\n titleFontSize: 12,\n titleFontWeight: 400,\n },\n grid: {\n visible: false,\n gridColor: '#404349',\n gridWidth: 0.5,\n },\n tick: {\n visible: false,\n tickInside: false,\n tickSize: 4,\n tickColor: '#4B4F54',\n },\n line: {\n visible: true,\n lineColor: '#4B4F54',\n lineWidth: 1,\n },\n }\n const barBandAxis: YBandAxis = {\n ...bandAxis,\n labelAutoHide: false,\n labelAutoHideGap: 1,\n labelAutoLimit: false,\n labelAutoLimitLength: undefined,\n labelAutoRotate: false,\n labelAutoRotateAngleRange: [0, -45, -90],\n }\n const crosshairLine = {\n visible: true,\n labelVisible: true,\n lineColor: '#E2E3E6',\n labelColor: '#4B4F54',\n labelBackgroundColor: '#ffffff',\n }\n const crosshairRect = {\n visible: true,\n labelVisible: true,\n lineColor: '#E2E3E6',\n labelColor: '#4B4F54',\n labelBackgroundColor: '#ffffff',\n }\n\n const baseConfig: {\n backgroundColor?: BackgroundColor\n color?: Color\n label?: Label\n tooltip?: Tooltip\n legend?: Legend\n } = {\n backgroundColor: 'transparent',\n color: {\n 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 wrap: true,\n showValue: true,\n showValuePercent: false,\n labelColorSmartInvert: false,\n labelOverlap: 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 labelColor: '#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 sizeRange: [8, 24],\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 label: {\n ...baseConfig.label,\n showValuePercent: true,\n labelLayout: 'labelLine',\n },\n },\n donut: {\n ...baseConfig,\n label: {\n ...baseConfig.label,\n showValuePercent: true,\n labelLayout: 'labelLine',\n },\n },\n radar: {\n ...baseConfig,\n },\n rose: {\n ...baseConfig,\n label: {\n ...baseConfig.label,\n showValuePercent: true,\n },\n },\n roseParallel: {\n ...baseConfig,\n label: {\n ...baseConfig.label,\n showValuePercent: true,\n },\n },\n // other\n funnel: {\n ...baseConfig,\n },\n heatmap: {\n ...baseConfig,\n label: {\n ...baseConfig.label,\n labelColorSmartInvert: true,\n },\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 { 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 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 数值格式化比例, 不能为0\n * @default 1\n * @example\n * - 100000 转换为 10万, ratio:10000, symbol:\"万\"\n * - 100000 转换为 10K, ratio:1000, symbol:\"K\"\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 */\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 numFormat: zNumFormat.default({}),\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\n .array(\n zMeasure.omit({\n encoding: true,\n parentId: true,\n }),\n )\n .or(\n zMeasure.omit({\n parentId: true,\n encoding: true,\n }),\n )\n .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\n .array(\n zMeasure.omit({\n parentId: true,\n encoding: true,\n }),\n )\n .or(zMeasure)\n .optional(),\n\n yMeasures: z\n .array(\n zMeasure.omit({\n parentId: true,\n encoding: true,\n }),\n )\n .or(zMeasure)\n .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 statistics: z.object({\n min: z.number(),\n max: z.number(),\n sum: z.number(),\n count: z.number(),\n colorMin: z.number(),\n colorMax: z.number(),\n }),\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\n/**\n * @description 仅VSeed内AdvancedVSeed使用此结构, 其余场景请使用DimensionEncodingEnum、MeasureEncodingEnum\n */\nexport const EncodingEnum = {\n x: 'x',\n y: 'y',\n angle: 'angle',\n radius: 'radius',\n detail: 'detail',\n\n color: 'color',\n size: 'size',\n tooltip: 'tooltip',\n label: 'label',\n\n row: 'row',\n column: 'column',\n\n group: 'group',\n} as const\n","import { z } from 'zod'\n\nexport const zDimensionEncoding = z.enum([\n 'xAxis',\n 'yAxis',\n 'angle',\n 'color',\n 'detail',\n 'tooltip',\n 'label',\n 'row',\n 'column',\n])\n\nexport const DimensionEncodingEnum = {\n xAxis: 'xAxis',\n yAxis: 'yAxis',\n angle: 'angle',\n color: 'color',\n detail: 'detail',\n tooltip: 'tooltip',\n label: 'label',\n row: 'row',\n column: 'column',\n} as const\n","import { z } from 'zod'\n\nexport const zMeasureEncoding = z.enum([\n 'primaryYAxis',\n 'secondaryYAxis',\n 'xAxis',\n 'yAxis',\n 'angle',\n 'radius',\n 'size',\n 'color',\n 'detail',\n 'column',\n 'label',\n 'tooltip',\n])\n\nexport const MeasureEncodingEnum = {\n primaryYAxis: 'primaryYAxis',\n secondaryYAxis: 'secondaryYAxis',\n xAxis: 'xAxis',\n yAxis: 'yAxis',\n angle: 'angle',\n radius: 'radius',\n size: 'size',\n color: 'color',\n detail: 'detail',\n column: 'column',\n label: 'label',\n tooltip: 'tooltip',\n} as const\n","import { z } from 'zod'\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 { zNumFormat } from '../../format'\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 numFormat: zNumFormat.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\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","import { z } from 'zod'\nimport { zNumFormat } from '../../format'\n\nexport const zLabel = z.object({\n enable: z.boolean().nullish(),\n wrap: z.boolean().nullish(),\n showValue: z.boolean().nullish(),\n showValuePercent: z.boolean().nullish(),\n autoFormat: z.boolean().nullish(),\n numFormat: zNumFormat.nullish(),\n labelFontSize: z.number().nullish(),\n labelFontWeight: z.number().or(z.string()).nullish(),\n labelBackgroundColor: z.string().nullish(),\n labelColor: z.string().nullish(),\n labelColorSmartInvert: z.boolean().nullish(),\n labelPosition: z.string().nullish(),\n labelOverlap: z.boolean().nullish(),\n})\n","import { z } from 'zod'\nimport { zLabel } from './zLabel'\n\nexport const zPieLabel = zLabel.extend({\n labelLayout: z.union([z.literal('arc'), z.literal('labelLine'), z.literal('edge')]).nullish(),\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 /**\n * @description 图例字体颜色\n */\n labelColor?: string\n\n /**\n * @description 图例字体大小\n * @example labelFontSize: 10\n */\n labelFontSize?: number\n\n /**\n * @description 图例字体颜色\n * @deprecated use labelColor instead\n */\n labelFontColor?: string\n\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 labelColor: z.string().default('#fff').nullish(),\n labelFontSize: z.number().default(12).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, zXLinearAxis, zYLinearAxis } from './axes'\nimport { zCrosshairLine, zCrosshairRect } from './crosshair'\nimport { zStackCornerRadius } from './stackCornerRadius/stackCornerRadius'\nimport { zBackgroundColor } from './backgroundColor/backgroundColor'\nimport { zColor } from './color/color'\nimport { zLabel, zPieLabel } from './label'\nimport { zLegend } from './legend/legend'\nimport { zTooltip } from './tooltip/tooltip'\nimport { zDualChartType } from '../chartType'\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 size: z.number().or(z.array(z.number())).nullish(),\n sizeRange: z.number().or(z.array(z.number())).nullish(),\n})\n\n// polar\nexport const zRoseConfig = z.object({\n backgroundColor: zBackgroundColor.nullish(),\n label: zPieLabel.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: zPieLabel.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 = zAreaConfig\nexport const zHeatmapConfig = zAreaConfig\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'\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\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 size: z.number().or(z.array(z.number())).nullish(),\n sizeRange: z.number().or(z.array(z.number())).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 zLegend,\n zMeasureTree,\n zPieLabel,\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: zPieLabel.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 zLegend,\n zMeasureTree,\n zPieLabel,\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: zPieLabel.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 { zDualAxis, zFunnel, zHeatmap, zPivotTable, zRadar, zRoseParallel, zScatter, zTable } 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":["Object","__webpack_require__","e","Symbol","execPipeline","pipeline","context","initialValue","prev","cur","Intl","translateMap","value","segments","values","text","segment","index","translatedText","isNullish","console","locale","intl","buildAdvanced","builder","start","performance","Date","chartType","Error","Builder","advancedVSeed","end","buildSpec","spec","build","preorderTraverse","tree","callback","stack","node","stop","children","i","child","measureDepth","measures","depth","Math","isMeasureTreeWithChildren","measure","isMeasureTreeWithParentId","normalizeMeasureTree","createEmptyMeasureGroup","currentGroup","measureGroups","item","ANNOTATION_Z_INDEX","LINEAR_AXIS_INNER_OFFSET_TOP","DUAL_AXIS_CHART_COLUMN_Z_INDEX","DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX","DUAL_AXIS_LABEL_Z_INDEX","DEFAULT_PARENT_ID","ChartTypeEnum","isTable","vseed","isPivotTable","isRadar","isAreaPercent","isColumnPercent","isBarPercent","isVTable","isVChart","isPivotChart","isPivot","isCombination","dimensions","dimension","parentIds","unique","getColorItems","datasetReshapeInfo","colorItems","d","colorIdMap","getColorIdMap","advanced","customPipe","themeKey","checkVSeed","dataset","isEmpty","Array","initAdvancedVSeed","isMeasure","isMeasureGroup","isMeasures","defaultMeasures","clonedMeasures","clone","top100dataset","key","undefined","isDimension","isDimensionGroup","findMeasureById","id","result","findFirstMeasure","findAllMeasures","defaultDimensions","clonedDimensions","newDimensions","dim","records","tableConfig","config","pick","theme","customTheme","chartConfigTheme","chartConfig","mergedConfig","mergeDeep","_k","mergeArray","chartCustomTheme","arr","themeItem","isString","isNumber","isObjectType","merge","tableAdvancedPipeline","initTable","backgroundColor","dimensionTreeToColumns","columns","treeTreeToColumns","field","groupNode","title","props","createNumFormatter","format","type","ratio","thousandSeparator","prefix","suffix","symbol","fractionDigits","significantDigits","roundingMode","roundingPriority","numFormatterOptions","numFormatter","num","Number","typeSymbol","String","numStr","parts","autoNumFormatter","createFormatter","autoFormatter","createFormatterByMeasure","v","numFormat","autoFormat","formatterFormat","measureTreeToColumns","fieldFormat","formatter","datum","bodyStyle","themeConfig","borderColor","fontColor","fontSize","hoverCellBgColor","hoverInlineColor","headerStyle","themConfig","frameStyle","selectionStyle","tableSpecPipeline","registerTable","ORIGINAL_DATA","Separator","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","allowEmptyFold","foldInfo","Infinity","ids","j","omit","alias","valueNumber","reshapePivotTable","newDatasets","pivotTableConfig","pivotTableAdvancedPipeline","initPivotTable","pivotColumns","pivotRows","rows","pivotIndicators","col","row","table","foldMeasureId","rowHeaderStyle","cornerHeaderStyle","hoverCellColor","dataConfig","aggregationRules","AggregationType","pivotTableSpecPipeline","registerPivotTable","encodingAdapter","noEncodingPipeline","hasEncodingPipeline","addColorToEncoding","isMultiMeasure","defaultEncodingForLine","encodingForLine","color","label","tooltip","buildMeasures","generateMeasuresByParentId","basicMeasuresToMeasureTree","measureTree","parent","deleteMeasureTreeByCallback","parents","Map","nodesToProcess","visited","Set","parentList","deleteEncodingForMeasure","encodingKeys","deleteDimensionTreeByCallback","dimensionTree","deleteTooltipAndLabelDimension","pivotAdapter","pivotPipeline","unfoldDimensions","separator","colorItemAsId","unfoldInfo","x","y","detail","angle","angleDimensions","xDimensions","yDimensions","colorDimensions","detailDimensions","applyEncoding","colorItem","colorId","dataReshapeByEncoding","foldMeasureName","foldMeasureValue","foldedDataset","finalDataset","colorAdapter","ordinalPipe","linearPipe","isLinearColor","measureIdList","getColorMeasureId","reshapeWithEncoding","uniqueBy","pivotReshapeWithEncoding","datasets","measureGroup","groupId","newSubDataset","sortXBandAxis","sortAxis","xField","axisOrderResult","calcOrder","sortConfig","order","orderBy","res","sort","a","b","aValue","bValue","sortLegend","nameMap","pre","orderRes","itemNameOrId","replaceNullToUndefined","obj","isPlainObject","pipe","mapValues","lineConfig","columnConfig","pieConfig","areaConfig","areaPercentConfig","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","fuzzyMatchedList","linearColor","linearColorScheme","datasetXY","analysis","orderMapping","fields","progressive","defaultTitleText","idList","allMeasures","f","xBand","visible","tick","grid","line","labelAutoHide","labelAutoHideGap","labelAutoLimit","labelAutoLimitLength","labelAutoRotate","labelAutoRotateAngleRange","bandAxis","sampling","createLinearFormat","createLinearPercentFormat","percentFormatter","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","items","colorLegend","colorPointStyleFill","stylePipe","selector","vchartDatum","vchartKeys","k","selectors","isValueSelector","isMeasureSelector","op","selectorValueArr","isDimensionSelector","isPartialDatumSelector","pointStyle","customMap","pointStyles","style","pointBorderColor","pointBorderStyle","pointBorderWidth","pointColor","pointColorOpacity","pointSize","pointVisible","pointStateDimensionHover","point","pointStateHover","colorLineStyleFill","getCurveType","lineSmooth","getCurveTension","lineStyle","lineStyles","lineColorOpacity","lineWidth","lineVisible","dashSegment","curveType","curveTension","_","dashGap","buildLabel","generateMeasureValue","labelAutoFormat","generateMeasurePercent","sum","vseedDimensions","advancedVSeedMeasures","foldInfoList","wrap","showValue","showValuePercent","labelOverlap","labelColorSmartInvert","labelPosition","labelDims","labelMeas","dimLabels","meaLabels","statistics","measureValueLabel","measurePercentLabel","createMarkContent","createDimensionContent","encodingColor","dims","meas","dimContent","colorName","originalData","isSubset","sub","annotationPoint","markPoint","annotationPointList","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","newMarkLine","annotationHorizontalLine","annotationHorizontalLineList","yValue","yValueArr","annotationArea","annotationAreaList","markArea","areaColor","areaColorOpacity","areaBorderColor","areaBorderRadius","areaBorderWidth","outerPadding","isBottom","xyList","positionData","yAxisHelper","xAxisHelper","yScale","minX","maxX","minY","maxY","xScale","initPivot","pivotIndicatorsAsRow","pivotIndicatorsAsCol","pivotGridStyle","onlyCombination","transparent","headerFontColor","headerBackgroundColor","hoverHeaderBackgroundColor","hoverHeaderInlineBackgroundColor","chartPipeline","indicators","reshapeInfo","newDataset","newDatasetReshapeInfo","chartSpec","datasetPivot","pivotRowDimensions","rowDimensions","pivotColumnDimensions","columnDimensions","pivotDiscreteLegend","colorSpecified","legends","pivotColorLegend","legendPosition","pivotLine","lineSpecPipeline","registerLine","defaultEncodingForColumn","encodingForColumn","onlyMeasureName","columnAdvancedPipeline","initColumn","stackCornerRadius","stackInverse","verticalCrosshairRect","rectColor","colorBarStyleFill","barStyle","showStroke","barStyles","barBorderColor","barBorderStyle","barBorderWidth","barColor","barColorOpacity","barRadius","barVisible","annotationAreaBand","dy","bandPosition","xBandWidth","startX","endX","width","middleX","yBandWidth","startY","endY","middleY","column","pivotColumn","columnSpecPipeline","registerColumn","columnParallelAdvancedPipeline","initColumnParallel","sameDimensionsMode","isDeepEqual","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","groupBy","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","Boolean","isX","isY","scatterConfig","reshapeWithScatterEncoding","unfoldInfoList","pivotReshapeWithScatterEncoding","datasetList","scatterAdvancedPipeline","initScatter","datasetScatter","scatterSize","size","labelScatter","tooltipScatter","meaContent","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","initDualAxisPrimary","initDualAxisSecondary","dualChartTypePrimary","primary","secondary","bothColumn","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","labelPie","pivotHideIndicatorName","pie","pivotPie","pieSpecPipeline","registerPie","donutAdvancedPipeline","initDonut","donut","pivotDonut","donutSpecPipeline","registerDonut","defaultEncodingForRose","encodingForRose","roseAdvancedPipeline","initRose","hasNegativeValue","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","colorCellStyleFill","cellStyle","tooltipHeatmap","initHeatmap","heatmap","pivotHeatmap","heatmapSpecPipeline","registerHeatmap","lightTheme","barBandAxis","crosshairLine","crosshairRect","darkTheme","registerCustomTheme","registerLightTheme","registerDarkTheme","registerAll","updateAdvanced","advancedPipe","updateSpec","specPipe","zChartType","z","zDualChartType","zDatum","zDataset","zDimension","zDimensionGroup","zDimensions","zDimensionTree","zNumFormat","zMeasure","zMeasureGroup","zMeasures","zMeasureTree","zDualMeasure","zDualMeasures","zScatterMeasure","zScatterMeasures","zFoldInfo","zUnfoldInfo","zDatasetReshapeInfo","zEncoding","EncodingEnum","zDimensionEncoding","DimensionEncodingEnum","zMeasureEncoding","MeasureEncodingEnum","zXBandAxis","zYBandAxis","zXLinearAxis","zYLinearAxis","zCrosshairLine","zCrosshairRect","zStackCornerRadius","zBackgroundColor","zColor","zLinearColor","zLabel","zPieLabel","zLegend","zColorLegend","zTooltip","zTableConfig","zPivotTableConfig","zLineConfig","zColumnConfig","zColumnParallelConfig","zColumnPercentConfig","zBarConfig","zBarParallelConfig","zBarPercentConfig","zAreaConfig","zAreaPercentConfig","zDualAxisConfig","zScatterConfig","zRoseConfig","zRoseParallelConfig","zPieConfig","zDonutConfig","zRadarConfig","zFunnelConfig","zHeatmapConfig","zConfig","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.cjs","sources":["webpack://@visactor/vseed/../../node_modules/.pnpm/@visactor+vtable@1.19.10-alpha.1/node_modules/@visactor/vtable/es/ts-types/new-data-set.js","webpack://@visactor/vseed/webpack/runtime/create_fake_namespace_object","webpack://@visactor/vseed/webpack/runtime/define_property_getters","webpack://@visactor/vseed/webpack/runtime/has_own_property","webpack://@visactor/vseed/webpack/runtime/make_namespace_object","webpack://@visactor/vseed/./src/pipeline/utils/pipeline.ts","webpack://@visactor/vseed/./src/i18n/i18n.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/pipeline/utils/tree/traverse.ts","webpack://@visactor/vseed/./src/pipeline/utils/measures/depth.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/utils.ts","webpack://@visactor/vseed/./src/pipeline/utils/constant.ts","webpack://@visactor/vseed/./src/pipeline/utils/chatType.ts","webpack://@visactor/vseed/./src/builder/builder/advanced/colorItems.ts","webpack://@visactor/vseed/./src/builder/builder/builder.ts","webpack://@visactor/vseed/./src/pipeline/utils/valid/checkVSeed.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/init/initAdvancedVSeed.ts","webpack://@visactor/vseed/./src/pipeline/utils/measures/typeGuard.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/default/defaultMeasures.ts","webpack://@visactor/vseed/./src/pipeline/utils/dimensions/typeGuard.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/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/utils/format/createFormatterByMeasure.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/./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/adapter/encodingAdapter.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/color/addColorToEncoding.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/line.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/buildMeasures.ts","webpack://@visactor/vseed/./src/pipeline/utils/measures/delete.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/deleteEncodingForMeasure.ts","webpack://@visactor/vseed/./src/pipeline/utils/dimensions/delete.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/dimensions/deleteTooltipAndLabelDimensions.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/utils/replaceNullToUndefined.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/title/defaultTitleText.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/xBand.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/format/linearFormat.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/curve/curve.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/config/scatter.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/size/scatterSize.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/label/labelScatter.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/pipes/label/labelPie.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/pivotChart/pivotHideIndicatorName.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/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/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/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/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/encoding/zDimensionEncoding.ts","webpack://@visactor/vseed/./src/types/properties/encoding/zMeasureEncoding.ts","webpack://@visactor/vseed/./src/types/properties/config/axes/zBandAxis.ts","webpack://@visactor/vseed/./src/types/properties/config/axes/zLinearAxis.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/zLabel.ts","webpack://@visactor/vseed/./src/types/properties/config/label/zPieLabel.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/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":["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","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n __webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => { def[key] = () => (value[key]) });\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","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 { isNullish } from 'remeda'\nimport * as translateMap from './i18nData.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 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\nexport { intl }\n","import type { AdvancedPipelineContext, AdvancedVSeed } from 'src/types'\nimport { execPipeline } from '../../pipeline'\nimport { Builder } from './builder'\nimport { intl } from 'src/i18n'\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 if (builder.vseed.locale) {\n intl.setLocale(builder.vseed.locale)\n }\n\n try {\n const advancedVSeed = execPipeline<AdvancedVSeed, AdvancedPipelineContext>(pipeline, context)\n builder.advancedVSeed = advancedVSeed\n return advancedVSeed\n } catch (e) {\n console.error(e)\n throw new Error(`buildAdvanced error: ${(e as Error).message}.\\ndetails 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'\nimport { intl } from 'src/i18n'\n\nexport const buildSpec = (builder: Builder, advancedVSeed: AdvancedVSeed): Spec => {\n const start = typeof performance !== 'undefined' ? performance.now() : Date.now()\n\n const { chartType } = builder.vseed\n\n const pipeline = Builder.getSpecPipeline(chartType)\n if (!pipeline) {\n throw new Error(\n `please invoke registerAll or register ${chartType} before build, no spec pipeline for chartType ${chartType}`,\n )\n }\n\n const context: SpecPipelineContext = {\n vseed: builder.vseed,\n advancedVSeed,\n }\n if (builder.vseed.locale) {\n intl.setLocale(builder.vseed.locale)\n }\n\n try {\n const spec = execPipeline<Spec, SpecPipelineContext>(pipeline, context)\n builder.spec = spec\n return spec\n } catch (e) {\n console.error(e)\n throw new Error(`buildSpec error: ${(e as Error).message}.\\ndetails 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 const advancedVSeed = builder.buildAdvanced()\n if (!advancedVSeed) {\n throw new Error('advancedVSeed is null')\n }\n const spec = builder.buildSpec(advancedVSeed)\n return spec\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/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 { MeasureGroup, MeasureTree } from 'src/types'\n\n/**\n * @description 检查是否为指标树, 指标树深度大于1. 如果存在一个指标为组, 即有children配置, 则认为是指标树.\n * @param vseed vseed\n * @returns\n */\nexport const isMeasureTreeWithChildren = <T extends MeasureTree>(measures?: T) => {\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 = <T extends MeasureTree>(measures?: T) => {\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","// 标注层 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// 双轴图 标注层 ZIndex\nexport const DUAL_AXIS_LABEL_Z_INDEX = 1002\n// 默认父级id\nexport const DEFAULT_PARENT_ID = '__DefaultParentId__'\n\n// 图表类型枚举\nexport const 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} as const\n","import { type Dimensions, type DimensionGroup, type DimensionTree, type VSeed, type Measure } from 'src/types'\nimport { measureDepth } from './measures'\nimport { isMeasureTreeWithChildren, isMeasureTreeWithParentId } from '../advanced/chart/pipes/measures/utils'\nimport { unique } from 'remeda'\nimport { ChartTypeEnum, DEFAULT_PARENT_ID } from './constant'\n\nexport const isTable = (vseed: VSeed) => {\n return vseed.chartType === ChartTypeEnum.Table\n}\nexport const isPivotTable = (vseed: VSeed) => {\n return vseed.chartType === ChartTypeEnum.PivotTable\n}\nexport const isRadar = (vseed: VSeed) => {\n return vseed.chartType === ChartTypeEnum.Radar\n}\nexport const isAreaPercent = (vseed: VSeed) => {\n return vseed.chartType === ChartTypeEnum.AreaPercent\n}\nexport const isColumnPercent = (vseed: VSeed) => {\n return vseed.chartType === ChartTypeEnum.ColumnPercent\n}\nexport const isBarPercent = (vseed: VSeed) => {\n return vseed.chartType === ChartTypeEnum.BarPercent\n}\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}\n\n/**\n * @description 透视图表或组合图\n * - 透视图表定义: 存在 column 或 row的 encoding\n * - 组合图表定义: 存在多组指标的情况\n * - 透视组合图表: 存在 column 或 row的 encoding 且 存在多组指标的情况\n * 上述三者都只能使用 VTable.PivotChart 绘制\n */\nexport const isPivotChart = (vseed: VSeed) => {\n if (isVTable(vseed)) {\n return false\n }\n\n if (isPivot(vseed)) {\n return true\n }\n\n return isCombination(vseed)\n}\n\n/**\n * @description 存在column 或 row的encoding\n */\nexport const isPivot = (vseed: VSeed) => {\n const { dimensions = [] } = vseed as {\n dimensions: Dimensions\n }\n\n return dimensions && dimensions.some((dimension) => dimension.encoding === 'row' || dimension.encoding === 'column')\n}\n/**\n * @description 不存在column 或 row的encoding, 但是有多组指标的情况\n */\nexport const isCombination = (vseed: VSeed) => {\n if (isMeasureTreeWithParentId(vseed.measures)) {\n const parentIds = vseed.measures?.map((measure: Measure) => measure.parentId || DEFAULT_PARENT_ID)\n return parentIds && unique(parentIds).length > 1\n }\n\n if (vseed.chartType === 'dualAxis' || vseed.chartType === 'scatter') {\n if (vseed.chartType === 'scatter') {\n if (isMeasureTreeWithChildren(vseed.measures)) {\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.measures)) {\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 = [] } = vseed as {\n measures: DimensionTree\n dimensions: Dimensions\n }\n\n const hasMeasureGroup = measures && measures.some((measure: DimensionGroup) => measure && measure.children)\n\n return hasMeasureGroup\n}\n","import { unique } from 'remeda'\nimport type { Builder } from '../builder'\nimport { isPivotTable, isTable } from 'src/pipeline'\n\nexport const getColorItems = (builder: Builder): { id: string; alias: string }[] => {\n const advancedVSeed = builder.advancedVSeed\n\n if (!advancedVSeed || isTable(builder.vseed) || isPivotTable(builder.vseed)) {\n return []\n }\n\n const { datasetReshapeInfo } = advancedVSeed\n const colorItems = unique(datasetReshapeInfo.flatMap((d) => d.unfoldInfo.colorItems))\n const colorIdMap = datasetReshapeInfo.reduce<Record<string, string>>((prev, cur) => {\n return { ...prev, ...cur.unfoldInfo.colorIdMap }\n }, {})\n\n return colorItems.map((d) => ({\n id: d,\n alias: colorIdMap[d],\n }))\n}\n\nexport const getColorIdMap = (builder: Builder): Record<string, string> => {\n const advancedVSeed = builder.advancedVSeed\n\n if (!advancedVSeed || isTable(builder.vseed) || isPivotTable(builder.vseed)) {\n return {}\n }\n\n const { datasetReshapeInfo } = advancedVSeed\n const colorIdMap = datasetReshapeInfo.reduce<Record<string, 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 || 'light']\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 { isEmpty } from 'remeda'\nimport type { VSeed } from 'src/types'\n\nexport const checkVSeed = (vseed: VSeed) => {\n const { chartType, dataset, dimensions, measures } = vseed\n if (!chartType) {\n throw new Error('chartType is required')\n }\n if (!dataset || isEmpty(dataset)) {\n throw new Error('dataset is required, and must be an array')\n }\n if (dimensions && !Array.isArray(dimensions)) {\n throw new Error('dimensions must be an array')\n }\n if (measures && !Array.isArray(measures)) {\n throw new Error('measures must be an array')\n }\n}\n","import { checkVSeed } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed } from 'src/types'\n\nexport const initAdvancedVSeed: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType, locale } = vseed\n\n checkVSeed(vseed)\n\n return {\n ...advancedVSeed,\n chartType,\n locale: locale || 'zh-CN',\n } as AdvancedVSeed\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 { clone } from 'remeda'\nimport { isMeasure, preorderTraverse } from 'src/pipeline/utils'\nimport 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 const clonedMeasures = clone(measures)\n preorderTraverse(clonedMeasures, (node) => {\n if (isMeasure(node)) {\n node.alias = node.alias || node.id\n }\n return false\n })\n return {\n ...advancedVSeed,\n measures: clonedMeasures,\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 type { Dimension, DimensionGroup } from 'src/types'\n\nexport const isDimension = (dimension: Dimension | DimensionGroup): dimension is Dimension => {\n return !('children' in dimension)\n}\n\nexport const isDimensionGroup = (dimension: Dimension | DimensionGroup): dimension is DimensionGroup => {\n return 'children' in dimension\n}\n\n// export const isDimensions = (dimensions: Dimension[] | DimensionGroup[]): dimensions is Dimension[] => {\n// return dimensions.every(isDimension)\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 { clone } from 'remeda'\nimport { findAllMeasures, isDimension, preorderTraverse } 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 const clonedDimensions = clone(dimensions)\n preorderTraverse(clonedDimensions, (node) => {\n if (isDimension(node)) {\n node.alias = node.alias || node.id\n }\n return false\n })\n return {\n ...advancedVSeed,\n dimensions: clonedDimensions,\n }\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 cellInnerBorder: false,\n underlayBackgroundColor: backgroundColor,\n },\n } as ListTableConstructorOptions\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?: Partial<NumFormat>, locale: Locale = intl.getLocale()): Formatter => {\n const {\n type = 'number',\n ratio = 1,\n thousandSeparator = true,\n prefix = '',\n suffix = '',\n symbol = '',\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, useGrouping: thousandSeparator })\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 const validSymbol = symbol ?? ''\n\n // add symbol, typeSymbol, prefix and suffix\n return `${prefix}${numStr}${typeSymbol}${validSymbol}${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 useGrouping: true,\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'\nimport { intl } from 'src/i18n'\n\nexport const createFormatter = (format: Partial<NumFormat>, locale?: Locale): Formatter => {\n return createNumFormatter(format, locale)\n}\n\nexport const autoFormatter = (value?: number | string, locale: Locale = intl.getLocale()): string => {\n return autoNumFormatter(value, locale)\n}\n","import type { Formatter, Measure } from 'src/types'\nimport { autoFormatter, createFormatter } from './createFormatter'\nimport { isEmpty, isNullish } from 'remeda'\n\nexport const createFormatterByMeasure = (measure?: Measure): Formatter => {\n if (!measure) {\n return (v) => String(v)\n }\n const { numFormat, format, autoFormat } = measure\n\n const formatterFormat = numFormat || format || {}\n\n if (autoFormat === true) {\n return autoFormatter\n }\n\n if (isNullish(autoFormat) && isEmpty(formatterFormat)) {\n return autoFormatter\n }\n\n if (!isEmpty(formatterFormat)) {\n return createFormatter(formatterFormat)\n }\n\n return (v) => String(v)\n}\n","import type { ColumnsDefine, ListTableConstructorOptions } from '@visactor/vtable'\nimport type { FieldFormat } from '@visactor/vtable/es/ts-types'\nimport { createFormatterByMeasure, isMeasure } from 'src/pipeline/utils'\nimport type { MeasureGroup, Measure, MeasureTree, SpecPipe, Datum } from 'src/types'\n\nexport const measureTreeToColumns: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const measures = (advancedVSeed as unknown as { measures: MeasureTree }).measures\n const result = { ...spec } as ListTableConstructorOptions\n\n const eachNode = (node: Measure | MeasureGroup) => {\n if (isMeasure(node)) {\n return {\n width: 'auto',\n fieldFormat: fieldFormat(node),\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 = (node: Measure): FieldFormat => {\n const formatter = createFormatterByMeasure(node)\n\n return (datum: Datum) => {\n const { id } = node\n const value = datum[id] as number | string | undefined\n return formatter(value)\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: borderColor,\n borderLineWidth: [0, 0, 1, 0],\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: 1,\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 {\n initTable,\n dimensionTreeToColumns,\n measureTreeToColumns,\n bodyStyle,\n headerStyle,\n frameStyle,\n selectionStyle,\n} 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}\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 allowEmptyFold?: boolean\n },\n): {\n dataset: Dataset\n foldInfo: FoldInfo\n} => {\n const { measureId, measureName, measureValue, colorMeasureId, allowEmptyFold = true } = options || {}\n\n const foldInfo: FoldInfo = {\n measureId,\n measureName,\n measureValue,\n statistics: {\n max: -Infinity,\n min: Infinity,\n sum: 0,\n count: 0,\n colorMin: Infinity,\n colorMax: -Infinity,\n },\n foldMap: {},\n }\n\n if (!allowEmptyFold && measures.length === 0) {\n return {\n dataset,\n foldInfo,\n }\n }\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 const valueNumber = Number(value)\n foldInfo.statistics.colorMin = Math.min(foldInfo.statistics.colorMin, valueNumber)\n foldInfo.statistics.colorMax = Math.max(foldInfo.statistics.colorMax, valueNumber)\n }\n\n const valueNumber = Number(datum[id])\n foldInfo.statistics.min = Math.min(foldInfo.statistics.min, valueNumber)\n foldInfo.statistics.max = Math.max(foldInfo.statistics.max, valueNumber)\n foldInfo.statistics.sum += valueNumber\n foldInfo.statistics.count++\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 allowEmptyFold: false,\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 cellInnerBorder: false,\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 { isNumber } from 'remeda'\nimport { intl } from 'src/i18n'\nimport { createFormatterByMeasure, findMeasureById } from 'src/pipeline/utils'\nimport type { Datum, FoldInfo, MeasureTree, SpecPipe } from 'src/types'\n\nexport const pivotIndicators: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { 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),\n },\n ] as unknown as PivotChartConstructorOptions['indicators'],\n }\n}\n\nconst fieldFormat = (measures: MeasureTree, foldInfo: FoldInfo): FieldFormat => {\n return (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 measure = findMeasureById(measures, measureId)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n }\n}\n","import type { BaseTableConstructorOptions } from '@visactor/vtable/es/ts-types'\nimport type { SpecPipe, TableConfig } from 'src/types'\n\nexport const rowHeaderStyle: SpecPipe = (spec, context) => {\n const result = { ...spec } as BaseTableConstructorOptions\n const { advancedVSeed } = context\n const { 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: borderColor,\n borderLineWidth: [0, 1, 0, 0],\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: borderColor,\n borderLineWidth: [0, 1, 1, 0],\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 { 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}\n","import { checkVSeed } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed } from 'src/types'\n\nexport const initAdvancedVSeed: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType, locale } = vseed\n\n checkVSeed(vseed)\n\n return {\n ...advancedVSeed,\n chartType,\n locale: locale || 'zh-CN',\n } as AdvancedVSeed\n}\n","import { clone } from 'remeda'\nimport type { AdvancedPipe, Datum } from 'src/types'\nimport { isMeasure, preorderTraverse } from 'src/pipeline/utils'\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 const clonedMeasures = clone(measures)\n preorderTraverse(clonedMeasures, (node) => {\n if (isMeasure(node)) {\n node.alias = node.alias || node.id\n }\n return false\n })\n return {\n ...advancedVSeed,\n measures: clonedMeasures,\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 { clone } from 'remeda'\nimport { 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: clone(dimensions.map((dim) => ({ ...dim, alias: dim.alias || dim.id }))),\n }\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 type { Dimensions, Encoding } from 'src/types'\n\n/**\n * @description 为 encoding 添加 color 编码, 多指标场景, 会将 MeasureName 也添加到 color 编码中.\n * @param dimensions\n * @param encoding\n * @param isMultiMeasure\n */\nexport const addColorToEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\n encoding.color = unique(dimensions.filter((item) => item.encoding === 'color').map((item) => item.id))\n const measureName = dimensions.find((item) => item.id === MeasureName)\n if (isMultiMeasure && measureName && !measureName.encoding) {\n encoding.color.push(MeasureName)\n }\n if (encoding.color.length === 0) {\n encoding.color = [MeasureName]\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'\nimport { addColorToEncoding } from './color'\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, measures.length > 1)\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, isMultiMeasure: boolean) => {\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 addColorToEncoding(dimensions, encoding, isMultiMeasure)\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 // label\n encoding.label = unique(dimensions.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = encoding.label.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 // label\n const label = unique(measures.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = unique([...(encoding.label || []), ...label])\n\n // tooltip\n const tooltip = unique(measures.filter((item) => item.encoding === 'tooltip').map((item) => item.id))\n encoding.tooltip = unique([...(encoding.tooltip || []), ...label, ...tooltip])\n}\n","import type { AdvancedPipe, AdvancedVSeed, MeasureGroup, Measures, MeasureTree } from 'src/types'\nimport { isMeasureTreeWithChildren, isMeasureTreeWithParentId, normalizeMeasureTree } from './utils'\nimport { isPivotChart } from 'src/pipeline/utils'\nimport { DEFAULT_PARENT_ID } from 'src/pipeline/utils/constant'\n\nexport const buildMeasures: AdvancedPipe = (advancedVSeed) => {\n // 带Children的指标树, 不进行任何处理\n if (isMeasureTreeWithChildren(advancedVSeed.measures)) {\n advancedVSeed.measures = normalizeMeasureTree(advancedVSeed.measures as MeasureTree)\n return advancedVSeed\n }\n // 带parentId的指标树, 转换为带children的指标树\n if (isMeasureTreeWithParentId(advancedVSeed.measures)) {\n advancedVSeed.measures = generateMeasuresByParentId(advancedVSeed.measures as Measures)\n return advancedVSeed\n }\n\n /**\n * 透视图表, 自动生成指标树\n */\n if (isPivotChart(advancedVSeed as AdvancedVSeed)) {\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 const parent = measureTree.find((item) => item.id === measure.parentId)\n if (parent && 'children' in parent) {\n parent.children = parent.children || []\n parent.children.push(measure)\n } else if (measure.parentId) {\n measureTree.push({\n id: measure.parentId,\n children: [measure],\n })\n } else {\n measureTree.push({\n id: DEFAULT_PARENT_ID,\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 { Measure, MeasureGroup, MeasureTree } from 'src/types'\nimport { isMeasure, isMeasureGroup } from './typeGuard'\n\n/**\n * @description 删除 measureTree 中符合 callback 条件的节点\n * @param measureTree 待删除的 measureTree\n * @param callback 回调函数,用于判断是否删除当前节点\n * @returns 删除后的 measureTree\n */\nexport const deleteMeasureTreeByCallback = <T extends MeasureTree>(\n measureTree?: T,\n callback?: (measure: Measure, index: number, measures: (Measure | MeasureGroup)[]) => boolean,\n) => {\n if (!measureTree) {\n return measureTree\n }\n const stack: (Measure | MeasureGroup)[] = [...measureTree].reverse()\n const parents = new Map<Measure | MeasureGroup, (Measure | MeasureGroup)[]>()\n\n measureTree.forEach((node) => {\n parents.set(node, measureTree)\n })\n\n const nodesToProcess: (Measure | MeasureGroup)[] = []\n const visited = new Set<Measure | MeasureGroup>()\n\n while (stack.length > 0) {\n const node = stack[stack.length - 1]\n\n if (isMeasureGroup(node) && node.children && !visited.has(node)) {\n visited.add(node)\n const children = node.children.slice().reverse()\n for (const child of children) {\n parents.set(child, node.children)\n stack.push(child)\n }\n } else {\n stack.pop()\n nodesToProcess.push(node)\n }\n }\n\n for (const node of nodesToProcess) {\n const parentList = parents.get(node)\n\n if (parentList) {\n const index = parentList.indexOf(node)\n if (isMeasure(node)) {\n if (callback?.(node, index, parentList)) {\n parentList.splice(index, 1)\n }\n }\n }\n }\n\n return measureTree\n}\n","import { deleteMeasureTreeByCallback } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Measure } from 'src/types'\n\nexport const deleteEncodingForMeasure = (encodingKeys: string[]): AdvancedPipe => {\n return (advancedVSeed) => {\n const deleteBy = (measure: Measure) => encodingKeys.includes(measure.encoding as string)\n\n const measureTree = deleteMeasureTreeByCallback(advancedVSeed.measures, deleteBy)\n\n return {\n ...advancedVSeed,\n measures: measureTree,\n }\n }\n}\n","import type { Dimension, DimensionGroup, DimensionTree } from 'src/types'\nimport { isDimension, isDimensionGroup } from './typeGuard'\n\n/**\n * @description 删除 dimensionTree 中符合 callback 条件的节点\n * @param dimensionTree 待删除的 dimensionTree\n * @param callback 回调函数,用于判断是否删除当前节点\n * @returns 删除后的 dimensionTree\n */\nexport const deleteDimensionTreeByCallback = <T extends DimensionTree>(\n dimensionTree?: T,\n callback?: (dimension: Dimension, index: number, dimensions: (Dimension | DimensionGroup)[]) => boolean,\n) => {\n if (!dimensionTree) {\n return dimensionTree\n }\n const stack: (Dimension | DimensionGroup)[] = [...dimensionTree].reverse()\n const parents = new Map<Dimension | DimensionGroup, (Dimension | DimensionGroup)[]>()\n\n dimensionTree.forEach((node) => {\n parents.set(node, dimensionTree)\n })\n\n const nodesToProcess: (Dimension | DimensionGroup)[] = []\n const visited = new Set<Dimension | DimensionGroup>()\n\n while (stack.length > 0) {\n const node = stack[stack.length - 1]\n\n if (isDimensionGroup(node) && node.children && !visited.has(node)) {\n visited.add(node)\n const children = node.children.slice().reverse()\n for (const child of children) {\n parents.set(child, node.children)\n stack.push(child)\n }\n } else {\n stack.pop()\n nodesToProcess.push(node)\n }\n }\n\n for (const node of nodesToProcess) {\n const parentList = parents.get(node)\n\n if (parentList) {\n const index = parentList.indexOf(node)\n if (isDimension(node)) {\n if (callback?.(node, index, parentList)) {\n parentList.splice(index, 1)\n }\n }\n }\n }\n\n return dimensionTree\n}\n","import { deleteDimensionTreeByCallback } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension } from 'src/types'\n\nexport const deleteTooltipAndLabelDimension: AdvancedPipe = (advancedVSeed) => {\n const deleteBy = (dimension: Dimension) => dimension.encoding === 'tooltip' || dimension.encoding === 'label'\n\n const dimensionTree = deleteDimensionTreeByCallback(advancedVSeed.dimensions, deleteBy)\n\n return {\n ...advancedVSeed,\n dimensions: dimensionTree,\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, VSeed } from 'src/types'\n\nexport const colorAdapter = (ordinalPipe: SpecPipe, linearPipe: SpecPipe): SpecPipe => {\n return (spec, context) => {\n const { advancedVSeed, vseed } = context\n if (isLinearColor(advancedVSeed, vseed)) {\n return linearPipe(spec, context)\n }\n return ordinalPipe(spec, context)\n }\n}\n\nexport const isLinearColor = <T extends AdvancedVSeed, U extends VSeed>(advancedVSeed: T, vseed: U) => {\n console.log(vseed)\n const { encoding } = advancedVSeed\n const measures = vseed.measures || advancedVSeed.measures\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, U extends VSeed>(\n advancedVSeed: T,\n vseed: U,\n): string | undefined => {\n if (isLinearColor(advancedVSeed, vseed)) {\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, 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 const colorMeasureId = getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed)\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: false,\n colorMeasureId,\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 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\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\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: false,\n foldMeasureValue: `${FoldMeasureValue}${groupId}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\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 { isPlainObject, mapValues, pipe } from 'remeda'\n\n// 递归类型,将所有 null 替换为 undefined\ntype NullToUndefined<T> = T extends null\n ? undefined\n : T extends (infer U)[]\n ? NullToUndefined<U>[]\n : T extends object\n ? { [K in keyof T]: NullToUndefined<T[K]> }\n : T\n\nexport const replaceNullToUndefined = <T>(obj: T): NullToUndefined<T> => {\n if (obj === null) {\n return undefined as NullToUndefined<T>\n }\n if (Array.isArray(obj)) {\n // 递归处理数组元素\n return obj.map(replaceNullToUndefined) as NullToUndefined<T>\n }\n if (isPlainObject(obj)) {\n // 使用 remeda 的 mapValues 递归处理对象属性\n return pipe(\n obj as object,\n mapValues((value) => replaceNullToUndefined(value)),\n ) as NullToUndefined<T>\n }\n return obj as NullToUndefined<T>\n}\n","import { pick } from 'remeda'\nimport { replaceNullToUndefined } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed, Config } from 'src/types'\n\nexport const lineConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const pickedConfig = pick(vseed, [\n 'backgroundColor',\n 'color',\n 'label',\n 'legend',\n 'tooltip',\n 'xAxis',\n 'yAxis',\n 'crosshairLine',\n ]) as Config['line']\n\n const config = replaceNullToUndefined(pickedConfig)\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n\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\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\n","import { pick } from 'remeda'\nimport { replaceNullToUndefined } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed } from 'src/types'\n\nexport const markStyle: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n\n const pickedMarkStyle = pick(vseed, [\n 'barStyle',\n 'pointStyle',\n 'lineStyle',\n 'areaStyle',\n ]) as AdvancedVSeed['markStyle']\n\n const markStyle = replaceNullToUndefined(pickedMarkStyle)\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 deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const lineAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForLine, buildMeasures],\n [\n encodingForLine,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\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, vseed } = 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, vseed) ? 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 { findAllMeasures } from 'src/pipeline/utils'\nimport type { Dimensions, MeasureTree } from 'src/types'\n\nexport const defaultTitleText = (measures: MeasureTree, dimensions: Dimensions, idList: string[] = []) => {\n const allMeasures = findAllMeasures(measures)\n return idList\n .map((id) => {\n const alias = [...allMeasures, ...dimensions].find((f) => f.id === id)?.alias || ''\n return alias\n })\n .join(' & ')\n}\n","import type { ICartesianBandAxisSpec, ISpec } from '@visactor/vchart'\nimport type { SpecPipe, XBandAxis } from 'src/types'\nimport { defaultTitleText } from './title/defaultTitleText'\n\nexport const xBand: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { measures, dimensions, encoding } = advancedVSeed\n const config = advancedVSeed.config?.[chartType as 'column']?.xAxis as XBandAxis\n\n if (!result.axes) {\n result.axes = []\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 || defaultTitleText(measures, dimensions, encoding.x as string[]),\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 { isEmpty, isNullish } from 'remeda'\nimport { autoFormatter } from 'src/pipeline/utils'\nimport type { Formatter, NumFormat } from 'src/types'\n\nexport const createLinearFormat = (\n value: string | number,\n autoFormat: boolean | undefined,\n numFormat: NumFormat,\n formatter: Formatter,\n) => {\n if (isNullish(autoFormat) && isEmpty(numFormat)) {\n return autoFormatter(value)\n }\n\n if (autoFormat === true) {\n return autoFormatter(value)\n }\n\n if (!isEmpty(numFormat)) {\n return formatter(value)\n }\n\n return String(value)\n}\n\nexport const createLinearPercentFormat = (\n value: string | number,\n autoFormat: boolean | undefined,\n numFormat: NumFormat,\n formatter: Formatter,\n percentFormatter: Formatter,\n) => {\n if (isNullish(autoFormat) && isEmpty(numFormat)) {\n return percentFormatter(value)\n }\n\n if (autoFormat === true) {\n return percentFormatter(value)\n }\n\n if (!isEmpty(numFormat)) {\n return formatter(value)\n }\n\n return String(value)\n}\n","import type { ISpec } from '@visactor/vchart'\nimport {\n createNumFormatter,\n isAreaPercent,\n isBarPercent,\n isColumnPercent,\n LINEAR_AXIS_INNER_OFFSET_TOP,\n} from 'src/pipeline/utils'\nimport type { SpecPipe, YLinearAxis } from 'src/types'\nimport { createLinearFormat, createLinearPercentFormat } from './format/linearFormat'\nimport { defaultTitleText } from './title/defaultTitleText'\n\nexport const yLinear: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { measures, dimensions, encoding } = advancedVSeed\n const config = advancedVSeed.config?.[chartType as 'column']?.yAxis as YLinearAxis\n\n if (!result.axes) {\n result.axes = []\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 autoFormat,\n numFormat = {},\n } = config\n\n const formatter = createNumFormatter(numFormat)\n const percentFormatter = createNumFormatter({\n type: 'percent',\n })\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 if (isBarPercent(vseed) || isColumnPercent(vseed) || isAreaPercent(vseed)) {\n return createLinearPercentFormat(value, autoFormat, numFormat, formatter, percentFormatter)\n }\n return createLinearFormat(value, autoFormat, numFormat, formatter)\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 || defaultTitleText(measures, dimensions, encoding.y as string[]),\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 labelColor,\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: labelColor || 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: labelColor || labelFontColor,\n fontWeight: labelFontWeight,\n },\n },\n background: {\n state: {\n selectedHover: {\n fill: labelColor || 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, labelColor, 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 handlerText: {\n visible: true,\n style: {\n fill: labelColor || 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, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed, vseed)) {\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'\nimport { isEmpty, isNullish } from 'remeda'\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 (isNullish(pointStyle) || isEmpty(pointStyle)) {\n return result\n }\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, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed, vseed)) {\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 { isRadar } from 'src/pipeline/utils'\nimport type { VSeed } from 'src/types'\n\nexport const getCurveType = (vseed: VSeed, lineSmooth: boolean = false): string => {\n if (!lineSmooth) {\n return 'linear'\n }\n\n /**\n * Tip: 长期来看, 由VChart封装好雷达图与面积图的曲线类型差异, 是一个更好的选择.\n */\n return isRadar(vseed) ? 'catmullRomClosed' : 'monotone'\n}\n\nexport const getCurveTension = (vseed: VSeed, lineSmooth: boolean = false): number => {\n if (!lineSmooth) {\n return 0\n }\n\n /**\n * Tip: 长期来看, 由VChart封装好雷达图与面积图的曲线类型差异, 是一个更好的选择.\n */\n return isRadar(vseed) ? 0.4 : 0\n}\n","import type { IAreaChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, LineStyle, SpecPipe } from 'src/types'\nimport { isEmpty, isNullish } from 'remeda'\nimport { getCurveTension, getCurveType } from './curve'\n\nexport const lineStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle } = advancedVSeed\n const { lineStyle } = markStyle\n const result = {\n ...spec,\n line: {\n style: {},\n },\n } as IAreaChartSpec\n\n if (isNullish(lineStyle) || isEmpty(lineStyle)) {\n return result\n }\n\n const lineStyles = (Array.isArray(lineStyle) ? lineStyle : [lineStyle]) as LineStyle[]\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 = getCurveType(context.vseed, lineSmooth)\n const curveTension = getCurveTension(context.vseed, lineSmooth)\n\n return {\n ...result,\n [`custom${index + 1}`]: {\n // 优先级: 后者覆盖前者\n level: index + 1,\n filter: (\n _: Datum,\n node: {\n renderNode: {\n context: {\n data: Datum[]\n }\n }\n },\n ) => {\n const lineData = node.renderNode.context.data\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 curveTension: curveTension,\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 { IArcLabelSpec, ILineChartSpec } from '@visactor/vchart'\nimport type { ILineLikeLabelSpec } from '@visactor/vchart/esm/series/mixin/interface'\nimport { createFormatter, createFormatterByMeasure, findMeasureById } from '../../../../utils'\nimport type {\n Datum,\n Dimensions,\n Encoding,\n FoldInfo,\n Formatter,\n Label,\n Measure,\n Measures,\n NumFormat,\n SpecPipe,\n} from 'src/types'\nimport { merge, uniqueBy } from 'remeda'\n\nexport const label: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { chartType, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { label: Label }\n const foldInfo = datasetReshapeInfo[0].foldInfo as FoldInfo\n\n const { label } = baseConfig\n\n result.label = buildLabel<ILineLikeLabelSpec>(\n label,\n vseed.measures,\n vseed.dimensions,\n advancedVSeed.measures,\n encoding as Encoding,\n [foldInfo],\n )\n\n return result\n}\n\nexport const generateMeasureValue = (\n value: number | string,\n measure: Measure,\n labelAutoFormat?: boolean,\n numFormat: NumFormat = {},\n) => {\n const format = merge(numFormat, measure.numFormat || measure.format)\n const mergedMeasure = { ...measure, numFormat: format, autoFormat: labelAutoFormat || measure.autoFormat }\n\n const formatter = createFormatterByMeasure(mergedMeasure)\n return formatter(value)\n}\n\nexport const generateMeasurePercent = (value: number | string, sum: number, formatter: Formatter) => {\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 percentValue = num / sum\n return formatter(percentValue)\n}\n\nexport const buildLabel = <T extends ILineLikeLabelSpec | IArcLabelSpec>(\n label: Label,\n vseedMeasures: Measures = [],\n vseedDimensions: Dimensions = [],\n advancedVSeedMeasures: Measures,\n encoding: Encoding,\n foldInfoList: FoldInfo[],\n): T => {\n const {\n enable,\n wrap,\n showValue,\n showValuePercent,\n labelOverlap,\n labelColorSmartInvert,\n labelColor,\n labelFontSize,\n labelFontWeight,\n labelBackgroundColor,\n labelPosition,\n autoFormat,\n numFormat = {},\n } = label\n\n const labelDims = uniqueBy(\n (vseedDimensions || []).filter((item) => encoding.label?.includes(item.id)),\n (item) => item.id,\n )\n const labelMeas = uniqueBy(\n (vseedMeasures || []).filter((item) => encoding.label?.includes(item.id)),\n (item) => item.id,\n )\n\n const percentFormat: NumFormat = merge(numFormat, {\n type: 'percent',\n } as NumFormat)\n\n const percentFormatter = createFormatter(percentFormat)\n\n const result = {\n visible: enable,\n formatMethod: (_, datum: Datum) => {\n const result = []\n\n const dimLabels = labelDims.map((item) => item.alias || item.id)\n const meaLabels = labelMeas.map((item) =>\n generateMeasureValue(datum[item.id] as number | string, item, autoFormat, numFormat),\n )\n\n result.push(...dimLabels)\n\n foldInfoList.forEach((foldInfo) => {\n const { measureId, measureValue, statistics } = foldInfo\n const measure = findMeasureById(advancedVSeedMeasures, datum[measureId] as string)\n if (measure) {\n const measureValueLabel = generateMeasureValue(\n datum[measureValue] as number | string,\n measure,\n autoFormat,\n numFormat,\n )\n const measurePercentLabel = generateMeasurePercent(\n datum[measureValue] as number | string,\n statistics.sum,\n percentFormatter,\n )\n if (showValue) {\n result.push(measureValueLabel)\n }\n if (showValuePercent) {\n result.push(measurePercentLabel)\n }\n }\n })\n\n result.push(...meaLabels)\n\n if (wrap) {\n return result\n }\n return result.join(' ')\n },\n position: labelPosition,\n style: {\n fill: labelColor,\n fontSize: labelFontSize,\n fontWeight: labelFontWeight,\n background: labelBackgroundColor,\n },\n smartInvert: labelColorSmartInvert,\n } as T\n\n if (labelOverlap) {\n result.overlap = {\n hideOnHit: true,\n clampForce: true,\n }\n }\n\n return result\n}\n","import { pipe, uniqueBy } from 'remeda'\nimport { createFormatterByMeasure, findAllMeasures, findMeasureById } from '../../../../utils'\nimport type { Datum, Dimensions, FoldInfo, 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, vseed } = context\n const { measures, datasetReshapeInfo, chartType, 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(\n encoding.tooltip || [],\n dimensions,\n findAllMeasures(vseed.measures),\n foldInfo,\n unfoldInfo,\n ),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(measures, foldInfo, unfoldInfo),\n },\n }\n return result\n}\n\nexport const createDimensionContent = (measures: Measures, foldInfo: FoldInfo, unfoldInfo: UnfoldInfo) => {\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 const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n },\n ]\n}\n\nexport const createMarkContent = (\n tooltip: string[],\n dimensions: Dimensions,\n measures: Measures,\n foldInfo: FoldInfo,\n unfoldInfo: UnfoldInfo,\n) => {\n const dims = pipe(\n dimensions.filter((item) => tooltip.includes(item.id)),\n uniqueBy((item) => item.id),\n uniqueBy((item) => item.alias),\n )\n const meas = pipe(\n measures.filter((item) => tooltip.includes(item.id)),\n uniqueBy((item) => item.id),\n uniqueBy((item) => item.alias),\n )\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 const formatter = createFormatterByMeasure(measure)\n return formatter(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 formatter = createFormatterByMeasure(measure)\n return formatter(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 { Spec, 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 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 animationAppear: {\n duration: 600,\n type: 'all',\n direction: 'row',\n },\n }\n}\n\nexport const pivotIndicatorsAsRow: SpecPipe = (spec): Spec => {\n const result = { ...spec } as PivotChartConstructorOptions\n\n return {\n ...result,\n indicatorsAsCol: false,\n }\n}\n\nexport const pivotIndicatorsAsCol: SpecPipe = (spec): 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 { isCombination, isPivot } from 'src/pipeline/utils'\nimport type { SpecPipe } from 'src/types'\n\nexport const pivotGridStyle: SpecPipe = (spec, context) => {\n const { vseed } = context\n\n const onlyCombination = !isPivot(vseed) && isCombination(vseed)\n\n const result = { ...spec } as PivotChartConstructorOptions\n const transparent = 'rgba(0,0,0,0)'\n\n const borderColor = '#e3e5eb'\n const bodyFontColor = '#141414'\n const headerFontColor = '#21252c'\n const headerBackgroundColor = 'rgba(0,0,0,0)'\n const hoverHeaderBackgroundColor = onlyCombination ? transparent : '#D9DDE4'\n const hoverHeaderInlineBackgroundColor = onlyCombination ? transparent : '#D9DDE455'\n\n return {\n ...result,\n theme: {\n underlayBackgroundColor: transparent,\n bodyStyle: {\n borderColor,\n color: bodyFontColor,\n borderLineWidth: [1, 1, 1, 1],\n bgColor: transparent,\n hover: {\n cellBgColor: 'transparent',\n },\n },\n headerStyle: {\n borderColor,\n fontSize: 12,\n borderLineWidth: 1,\n color: headerFontColor,\n textAlign: 'center',\n bgColor: headerBackgroundColor,\n hover: {\n cellBgColor: hoverHeaderBackgroundColor,\n inlineRowBgColor: hoverHeaderInlineBackgroundColor || undefined,\n inlineColumnBgColor: hoverHeaderInlineBackgroundColor || undefined,\n },\n },\n rowHeaderStyle: {\n borderColor,\n fontSize: 12,\n color: headerFontColor,\n borderLineWidth: 1,\n bgColor: headerBackgroundColor,\n hover: {\n cellBgColor: hoverHeaderBackgroundColor,\n inlineRowBgColor: hoverHeaderInlineBackgroundColor || undefined,\n inlineColumnBgColor: hoverHeaderInlineBackgroundColor || undefined,\n },\n },\n cornerHeaderStyle: {\n borderColor,\n textAlign: 'center',\n fontSize: 12,\n color: headerFontColor,\n fontWeight: 'bold',\n borderLineWidth: 1,\n bgColor: headerBackgroundColor,\n frameStyle: {\n borderColor,\n borderLineWidth: [1, 0, 0, 1],\n },\n hover: {\n cellBgColor: hoverHeaderBackgroundColor,\n inlineRowBgColor: hoverHeaderInlineBackgroundColor || undefined,\n inlineColumnBgColor: hoverHeaderInlineBackgroundColor || undefined,\n },\n },\n cornerRightTopCellStyle: {\n borderColor,\n borderLineWidth: 0,\n frameStyle: {\n borderColor,\n borderLineWidth: [1, 1, 0, 1],\n },\n bgColor: headerBackgroundColor,\n hover: {\n cellBgColor: hoverHeaderBackgroundColor,\n },\n },\n cornerLeftBottomCellStyle: {\n borderColor,\n borderLineWidth: [1, 0, 1, 1],\n bgColor: headerBackgroundColor,\n frameStyle: {\n borderColor,\n borderLineWidth: [1, 0, 1, 1],\n },\n hover: {\n cellBgColor: hoverHeaderBackgroundColor,\n },\n },\n cornerRightBottomCellStyle: {\n borderColor,\n borderLineWidth: 0,\n bgColor: headerBackgroundColor,\n frameStyle: {\n borderColor,\n borderLineWidth: [1, 1, 1, 1],\n },\n hover: {\n cellBgColor: hoverHeaderBackgroundColor,\n },\n },\n rightFrozenStyle: {\n borderColor,\n borderLineWidth: 1,\n bgColor: headerBackgroundColor,\n hover: {\n cellBgColor: hoverHeaderBackgroundColor,\n },\n },\n bottomFrozenStyle: {\n borderColor,\n borderLineWidth: 1,\n bgColor: headerBackgroundColor,\n hover: {\n cellBgColor: hoverHeaderBackgroundColor,\n },\n },\n selectionStyle: {\n cellBgColor: '',\n cellBorderColor: '',\n },\n frameStyle: {\n borderColor,\n cornerRadius: 4,\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 { Spec, SpecPipe } from 'src/types'\n\nexport const datasetPivot: SpecPipe = (spec, context): Spec => {\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 labelColor,\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: labelColor || 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: labelColor || labelFontColor,\n fontWeight: labelFontWeight,\n },\n },\n background: {\n state: {\n selectedHover: {\n fill: labelColor || 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.statistics.colorMin))\n const min = Math.min(...datasetReshapeInfo.map((d) => d.foldInfo.statistics.colorMax))\n const { legend, color } = baseConfig\n const { colorScheme, linearColorScheme } = color\n\n const {\n enable,\n position = 'bottom',\n labelFontColor,\n labelColor,\n labelFontSize = 12,\n labelFontWeight = 400,\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: 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 handlerText: {\n visible: true,\n style: {\n fill: labelColor || 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}\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'\nimport { addColorToEncoding } from './color'\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, measures.length > 1)\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 = encoding.color\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureName) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\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 addColorToEncoding(dimensions, encoding, isMultiMeasure)\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 = encoding.color\n }\n\n // tooltip\n encoding.tooltip = unique(dimensions.map((item) => item.id))\n encoding.tooltip = encoding.tooltip.filter((d) => d !== MeasureName)\n\n // label\n encoding.label = unique(dimensions.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = encoding.label.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 // label\n const label = unique(measures.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = unique([...(encoding.label || []), ...label])\n\n // tooltip\n const tooltip = unique(measures.filter((item) => item.encoding === 'tooltip').map((item) => item.id))\n encoding.tooltip = unique([...(encoding.tooltip || []), ...label, ...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 deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const columnAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForColumn, buildMeasures],\n [\n encodingForColumn,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\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, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed, vseed)) {\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'\nimport { isEmpty, isNullish } from 'remeda'\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 (isNullish(barStyle) || isEmpty(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 dy = textPosition?.includes('bottom') ? -1 * textFontSize! : textFontSize\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 & { _scaleConfig?: { bandPosition?: number } }) => {\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 bandPosition = context?._scaleConfig?.bandPosition || 0\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 const startX = Math.min(...xyList.map((item) => item.x)) - (outerPadding || 4)\n const endX = Math.max(...xyList.map((item) => item.x)) + (outerPadding || 4)\n\n const width = endX - startX + xBandWidth\n const middleX = (endX + startX) / 2 + xBandWidth * (0.5 - bandPosition)\n\n const minX = middleX - width / 2\n const maxX = middleX + width / 2\n\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 startY = Math.min(...xyList.map((item) => item.y)) - (outerPadding || 4)\n const endY = Math.max(...xyList.map((item) => item.y)) + (outerPadding || 4)\n const width = endY - startY + yBandWidth\n const middleY = (endY + startY) / 2 + yBandWidth * (0.5 - bandPosition)\n\n const minY = middleY - width / 2\n const maxY = middleY + width / 2\n\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: dy,\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: dy,\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}\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 deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const columnParallelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForColumn, buildMeasures],\n [\n encodingForColumn,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\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 { isDeepEqual } from 'remeda'\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, encoding } = advancedVSeed\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n const sameDimensionsMode = isDeepEqual(encoding.x, encoding.color)\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}\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 deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const columnPercentAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForColumn, buildMeasures],\n [\n encodingForColumn,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n sortXBandAxis,\n sortLegend,\n columnPercentConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IAreaChartSpec, IBarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const percent: SpecPipe = (spec) => {\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}\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'\nimport { addColorToEncoding } from './color'\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, measures.length > 1)\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 = encoding.color\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureName) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\n // y\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 // color\n addColorToEncoding(dimensions, encoding, isMultiMeasure)\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 = encoding.color\n }\n\n // tooltip\n encoding.tooltip = unique(dimensions.map((item) => item.id))\n encoding.tooltip = encoding.tooltip.filter((d) => d !== MeasureName)\n\n // label\n encoding.label = unique(dimensions.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = encoding.label.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 // label\n const label = unique(measures.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = unique([...(encoding.label || []), ...label])\n\n // tooltip\n const tooltip = unique(measures.filter((item) => item.encoding === 'tooltip').map((item) => item.id))\n encoding.tooltip = unique([...(encoding.tooltip || []), ...label, ...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 deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const barAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForBar, buildMeasures],\n [\n encodingForBar,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\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 type { SpecPipe, XLinearAxis } from 'src/types'\nimport {\n createNumFormatter,\n isAreaPercent,\n isBarPercent,\n isColumnPercent,\n LINEAR_AXIS_INNER_OFFSET_TOP,\n} from 'src/pipeline/utils'\nimport { createLinearFormat, createLinearPercentFormat } from './format/linearFormat'\nimport { defaultTitleText } from './title/defaultTitleText'\n\nexport const xLinear: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { encoding, dimensions, measures } = advancedVSeed\n const { chartType } = vseed\n const config = advancedVSeed.config?.[chartType as 'bar']?.xAxis as XLinearAxis\n\n if (!result.axes) {\n result.axes = []\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 autoFormat,\n numFormat = {},\n } = config\n\n const formatter = createNumFormatter(numFormat)\n const percentFormatter = createNumFormatter({\n type: 'percent',\n })\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 if (isBarPercent(vseed) || isColumnPercent(vseed) || isAreaPercent(vseed)) {\n return createLinearPercentFormat(value, autoFormat, numFormat, formatter, percentFormatter)\n }\n return createLinearFormat(value, autoFormat, numFormat, formatter)\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 || defaultTitleText(measures, dimensions, encoding.x as string[]),\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'\nimport { defaultTitleText } from './title/defaultTitleText'\n\nexport const yBand: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { measures, dimensions, encoding } = advancedVSeed\n const config = advancedVSeed.config?.[chartType as 'bar']?.yAxis as XBandAxis\n\n if (!result.axes) {\n result.axes = []\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 || defaultTitleText(measures, dimensions, encoding.y as string[]),\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}\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 deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const barParallelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForBar, buildMeasures],\n [\n encodingForBar,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\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 { isDeepEqual } from 'remeda'\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, encoding } = advancedVSeed\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n const sameDimensionsMode = isDeepEqual(encoding.y, encoding.color)\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}\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 deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const barPercentAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForBar, buildMeasures],\n [\n encodingForBar,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\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}\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 deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const areaAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForLine, buildMeasures],\n [\n encodingForLine,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\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, vseed } = 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, vseed) ? 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, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed, vseed)) {\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, LineStyle, SpecPipe } from 'src/types'\nimport { groupBy, isEmpty, isNullish } from 'remeda'\nimport { getCurveTension, getCurveType } from './curve'\n\nexport const areaStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle, datasetReshapeInfo, dataset } = advancedVSeed\n const { areaStyle, lineStyle } = 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 (isNullish(areaStyle) || isEmpty(areaStyle)) {\n return result\n }\n\n const areaStyles = (Array.isArray(areaStyle) ? areaStyle : [areaStyle]) as AreaStyle[]\n const lineStyles = (Array.isArray(lineStyle) ? lineStyle : [lineStyle]) as LineStyle[]\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 const curveType = getCurveType(context.vseed, lineStyles[index]?.lineSmooth)\n const curveTension = getCurveTension(context.vseed, lineStyles[index]?.lineSmooth)\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 curveType,\n curveTension,\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}\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 deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const areaPercentAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForLine, buildMeasures],\n [\n encodingForLine,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\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}\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'\nimport { addColorToEncoding } from './color'\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 = encoding.color\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 addColorToEncoding(dimensions, encoding, false)\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 // label\n encoding.label = unique(dimensions.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = encoding.label.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.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 // size\n encoding.size = unique(measures.filter((item) => item.encoding === 'size').map((item) => item.id))\n\n // label\n const label = unique(measures.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = unique([...(encoding.label || []), ...label])\n\n // tooltip\n const tooltip = unique(measures.filter((item) => item.encoding === 'tooltip').map((item) => item.id))\n encoding.tooltip = unique([...(encoding.tooltip || []), ...label, ...tooltip])\n}\n","import type { AdvancedPipe, MeasureGroup, Measures, MeasureTree, Scatter, ScatterMeasures } from 'src/types'\nimport { isMeasureTreeWithParentId, isMeasureTreeWithChildren } from './utils'\nimport { clone } from 'remeda'\nimport { DEFAULT_PARENT_ID } from 'src/pipeline/utils/constant'\n\nexport const buildMeasuresForScatter: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context as {\n vseed: Scatter\n }\n\n // 带Children的指标树, 不进行任何处理\n if (isMeasureTreeWithChildren(advancedVSeed.measures)) {\n return advancedVSeed\n }\n // 带parentId的指标树, 转换为带children的指标树\n if (isMeasureTreeWithParentId(advancedVSeed.measures)) {\n advancedVSeed.measures = generateMeasuresByParentId(advancedVSeed.measures as Measures)\n return advancedVSeed\n }\n\n /**\n * 既不是带Children的指标树, 也不是带parentId的指标树, 则自动生成指标\n */\n\n const scatterMeasures = vseed.scatterMeasures\n ? clone(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 const id = item.parentId || DEFAULT_PARENT_ID\n\n if (!scatterMeasures.find((d) => d.id === id)) {\n scatterMeasures.push({\n id,\n yMeasures: [],\n xMeasures: [],\n })\n }\n const scatterChart = scatterMeasures.find((d) => d.id === id)\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].filter(Boolean)\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 { pick } from 'remeda'\nimport { replaceNullToUndefined } from 'src/pipeline/utils'\nimport type { AdvancedPipe, AdvancedVSeed, Config } from 'src/types'\n\nexport const scatterConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const pickedConfig = pick(vseed, [\n 'backgroundColor',\n 'color',\n 'label',\n 'legend',\n 'tooltip',\n 'xAxis',\n 'yAxis',\n 'sizeRange',\n 'size',\n 'crosshairLine',\n ]) as Config['line']\n\n const config = replaceNullToUndefined(pickedConfig)\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n","import { uniqueBy } from 'remeda'\nimport {\n dataReshapeByEncoding,\n FoldXMeasureId,\n FoldXMeasureValue,\n FoldYMeasureId,\n FoldYMeasureValue,\n} 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.length > 2) {\n throw new Error('measures can not be more than 2 groups in scatter')\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, vseed),\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, vseed),\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 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 > 2) {\n throw new Error('measures can not be more than 2 groups in scatter')\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, vseed),\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, vseed),\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 deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\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(\n [defaultEncodingForScatter, buildMeasuresForScatter],\n [\n encodingForScatter,\n buildMeasuresForScatter,\n deleteEncodingForMeasure(['tooltip', 'label', 'size']),\n deleteTooltipAndLabelDimension,\n ],\n ),\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 { IScatterChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const scatterSize: SpecPipe = (spec, context) => {\n const result = { ...spec } as IScatterChartSpec\n const { advancedVSeed } = context\n const { chartType, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as {\n sizeRange: number | number[]\n size?: number | number[]\n }\n const hasSizeEncoding = encoding?.size?.[0]\n if (!hasSizeEncoding) {\n return result\n }\n\n const size = baseConfig.size ?? baseConfig.sizeRange\n\n result.size = {\n type: 'linear',\n range: Array.isArray(size) ? size : [size, size],\n } as IScatterChartSpec['size']\n\n result.sizeField = encoding?.size?.[0] || undefined\n\n return result\n}\n","import type { IScatterChartSpec } from '@visactor/vchart'\nimport type { Encoding, FoldInfo, Label, SpecPipe } from 'src/types'\nimport { buildLabel } from './label'\nimport type { ILineLikeLabelSpec } from '@visactor/vchart/esm/series/mixin/interface'\n\nexport const labelScatter: SpecPipe = (spec, context) => {\n const result = { ...spec } as IScatterChartSpec\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { chartType, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { label: Label }\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n\n const { label } = baseConfig\n\n result.label = buildLabel<ILineLikeLabelSpec>(\n label,\n vseed.measures,\n vseed.dimensions,\n advancedVSeed.measures,\n encoding as Encoding,\n foldInfoList,\n )\n\n return result\n}\n","import { uniqueBy } from 'remeda'\nimport { createFormatterByMeasure, findAllMeasures, 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, vseed } = context\n const { 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(\n encoding.tooltip || [],\n dimensions,\n findAllMeasures(vseed.measures),\n locale,\n foldInfoList,\n ),\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 = uniqueBy(\n dimensions.filter((item) => tooltip.includes(item.id)),\n (item) => item.id,\n )\n const meas = uniqueBy(\n measures.filter((item) => tooltip.includes(item.id)),\n (item) => item.id,\n )\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 const formatter = createFormatterByMeasure(measure)\n return formatter(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 const formatter = createFormatterByMeasure(measure)\n return formatter(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 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 labelScatter,\n scatterSize,\n} from '../pipes'\n\nconst scatter: SpecPipeline = [\n initScatter,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetScatter,\n progressive,\n xLinear,\n yLinear,\n scatterSize,\n labelScatter,\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 scatterSize,\n labelScatter,\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}\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'\nimport { addColorToEncoding } from './color'\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, measures.length > 1)\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 = encoding.color\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureName) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\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 addColorToEncoding(dimensions, encoding, isMultiMeasure)\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 = encoding.color\n }\n\n // tooltip\n encoding.tooltip = unique(dimensions.map((item) => item.id))\n encoding.tooltip = encoding.tooltip.filter((d) => d !== MeasureName)\n\n // label\n encoding.label = unique(dimensions.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = encoding.label.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 // label\n const label = unique(measures.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = unique([...(encoding.label || []), ...label])\n\n // tooltip\n const tooltip = unique(measures.filter((item) => item.encoding === 'tooltip').map((item) => item.id))\n encoding.tooltip = unique([...(encoding.tooltip || []), ...label, ...tooltip])\n}\n","import type { AdvancedPipe, DualAxis, DualMeasures, MeasureGroup, Measures, MeasureTree } from 'src/types'\nimport { isMeasureTreeWithParentId, isMeasureTreeWithChildren } from './utils'\nimport { clone } from 'remeda'\nimport { DEFAULT_PARENT_ID } from 'src/pipeline/utils/constant'\n\nexport const buildMeasuresForDualAxis: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context as {\n vseed: DualAxis\n }\n\n // 带Children的指标树, 不进行任何处理\n if (isMeasureTreeWithChildren(advancedVSeed.measures)) {\n return advancedVSeed\n }\n // 带parentId的指标树, 转换为带children的指标树\n if (isMeasureTreeWithParentId(advancedVSeed.measures)) {\n advancedVSeed.measures = generateMeasuresByParentId(advancedVSeed.measures as Measures)\n return advancedVSeed\n }\n\n /**\n * 既不是带Children的指标树, 也不是带parentId的指标树, 则自动生成指标\n */\n const dualMeasures = vseed.dualMeasures\n ? clone(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 const id = item.parentId || DEFAULT_PARENT_ID\n if (!dualMeasures.find((d) => d.id === id)) {\n dualMeasures.push({\n id,\n primaryMeasures: [],\n secondaryMeasures: [],\n })\n }\n\n const dualChart = dualMeasures.find((d) => d.id === id)\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].filter(Boolean)\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 { uniqueBy } from 'remeda'\nimport { 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 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.length > 2) {\n throw new Error('measures can not be more than 2 groups in dualAxis')\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\n if (primaryMeasures && primaryMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(primaryMeasures.children, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: FoldPrimaryMeasureValue,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n },\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(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(secondaryMeasures.children, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: FoldSecondaryMeasureValue,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n },\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 { uniqueBy } from 'remeda'\nimport { 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 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 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 > 2) {\n throw new Error('measures can not be more than 2 groups in dualAxis')\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(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(primaryMeasures.children, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n },\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(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(secondaryMeasures.children, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: `${FoldSecondaryMeasureValue}${index}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n },\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 { replaceNullToUndefined } from 'src/pipeline/utils'\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 pickedConfig = pick(vseed, [\n // common\n 'backgroundColor',\n 'color',\n 'label',\n 'legend',\n 'tooltip',\n 'xAxis',\n\n // only for dualAxis\n 'dualChartType',\n 'alignTicks',\n 'primaryYAxis',\n 'secondaryYAxis',\n 'crosshairLine',\n 'crosshairRect',\n ]) as Config['dualAxis']\n\n const config = replaceNullToUndefined(pickedConfig)\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n","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 deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const dualAxisAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForDualAxis, buildMeasuresForDualAxis],\n [\n encodingForDualAxis,\n buildMeasuresForDualAxis,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\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 labelLayout: 'region',\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, vseed } = 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, vseed) ? 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 result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX\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 result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX\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 { Encoding, FoldInfo, Label, SpecPipe } from 'src/types'\nimport { buildLabel } from './label'\nimport { DUAL_AXIS_LABEL_Z_INDEX } from 'src/pipeline/utils/constant'\nimport type { ILineLikeLabelSpec } from '@visactor/vchart/esm/series/mixin/interface'\n\nexport const labelPrimary: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo, encoding } = advancedVSeed\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { label: Label }\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n result.label = buildLabel<ILineLikeLabelSpec>(\n baseConfig.label,\n vseed.measures,\n vseed.dimensions,\n advancedVSeed.measures,\n encoding as Encoding,\n [foldInfoList[0]],\n )\n result.label.zIndex = DUAL_AXIS_LABEL_Z_INDEX\n return result\n}\n\nexport const labelSecondary: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo, encoding } = advancedVSeed\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { label: Label }\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n\n result.label = buildLabel<ILineLikeLabelSpec>(\n baseConfig.label,\n vseed.measures,\n vseed.dimensions,\n advancedVSeed.measures,\n encoding as Encoding,\n [foldInfoList[1]],\n )\n result.label.zIndex = DUAL_AXIS_LABEL_Z_INDEX\n return result\n}\n","import { isNullish } from 'remeda'\nimport { createDimensionContent, createMarkContent } from './tooltip'\nimport type { FoldInfo, SpecPipe, Tooltip, UnfoldInfo } from 'src/types'\nimport { findAllMeasures } from 'src/pipeline/utils'\n\nexport const tooltipPrimary: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { measures, datasetReshapeInfo, chartType, 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(\n encoding.tooltip || [],\n dimensions,\n findAllMeasures(vseed.measures),\n foldInfoList[0],\n unfoldInfo,\n ),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(measures, foldInfoList[0], unfoldInfo),\n },\n }\n return result\n}\n\nexport const tooltipSecondary: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { measures, datasetReshapeInfo, chartType, 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(\n encoding.tooltip || [],\n dimensions,\n findAllMeasures(vseed.measures),\n foldInfoList[1],\n unfoldInfo,\n ),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(measures, foldInfoList[1], unfoldInfo),\n },\n }\n return result\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { LINEAR_AXIS_INNER_OFFSET_TOP } from '../../../../utils/constant'\nimport { createNumFormatter } from '../../../../utils'\nimport type { SpecPipe, YLinearAxis } from 'src/types'\nimport { isEmpty, isNullish } from 'remeda'\nimport { createLinearFormat } from './format/linearFormat'\nimport { defaultTitleText } from './title/defaultTitleText'\n\nexport const yLinearPrimary: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { datasetReshapeInfo, encoding, measures, dimensions } = 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 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\n autoFormat,\n numFormat = {},\n } = yAxisConfig\n\n const formatter = createNumFormatter(numFormat)\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 createLinearFormat(value, autoFormat, numFormat, formatter)\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 || defaultTitleText(measures, dimensions, encoding.y as string[]),\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 { createNumFormatter } from '../../../../utils'\nimport type { SpecPipe, YLinearAxis } from 'src/types'\nimport { isEmpty, isNullish } from 'remeda'\nimport { createLinearFormat } from './format/linearFormat'\nimport { defaultTitleText } from './title/defaultTitleText'\n\nexport const yLinearSecondary: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { datasetReshapeInfo, measures, dimensions, encoding } = 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 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 numFormat = {},\n autoFormat,\n } = yAxisConfig\n\n const formatter = createNumFormatter(numFormat)\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 createLinearFormat(value, autoFormat, numFormat, formatter)\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 || defaultTitleText(measures, dimensions, encoding.y as string[]),\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 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 annotationAreaBand,\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 annotationAreaBand,\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 annotationAreaBand,\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'\nimport { addColorToEncoding } from './color'\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, measures.length > 1)\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 = encoding.color\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureName) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\n // color\n addColorToEncoding(dimensions, encoding, isMultiMeasure)\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 // label\n encoding.label = unique(dimensions.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = encoding.label.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 // label\n const label = unique(measures.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = unique([...(encoding.label || []), ...label])\n\n // tooltip\n const tooltip = unique(measures.filter((item) => item.encoding === 'tooltip').map((item) => item.id))\n encoding.tooltip = unique([...(encoding.tooltip || []), ...label, ...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 deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const pieAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForPie, buildMeasures],\n [\n encodingForPie,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\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, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed, vseed)) {\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 { IArcLabelSpec, IPieChartSpec } from '@visactor/vchart'\nimport type { Encoding, FoldInfo, PieLabel, SpecPipe } from 'src/types'\nimport { buildLabel } from './label'\n\nexport const labelPie: SpecPipe = (spec, context) => {\n const result = { ...spec } as IPieChartSpec\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { chartType, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { label: PieLabel }\n const foldInfo = datasetReshapeInfo[0].foldInfo as FoldInfo\n\n const { label } = baseConfig\n\n result.label = buildLabel<IArcLabelSpec>(\n label,\n vseed.measures,\n vseed.dimensions,\n advancedVSeed.measures,\n encoding as Encoding,\n [foldInfo],\n )\n if (label.labelLayout) {\n result.label.layout = {\n align: label.labelLayout,\n }\n }\n return result\n}\n","import type { SpecPipe } from 'src/types'\n\nexport const pivotHideIndicatorName: SpecPipe = (spec) => {\n return {\n ...spec,\n hideIndicatorName: true,\n }\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n backgroundColor,\n color,\n datasetXY,\n datasetPivot,\n initPie,\n initPivot,\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 labelPie,\n pivotHideIndicatorName,\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 labelPie,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotPie: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n pivotHideIndicatorName,\n datasetPivot,\n pivotIndicators([\n initPie,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n colorPieStyleFill(pieStyle),\n labelPie,\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}\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 deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const donutAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForPie, buildMeasures],\n [\n encodingForPie,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\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 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 labelPie,\n pivotHideIndicatorName,\n} from '../pipes'\n\nconst donut: SpecPipeline = [\n initDonut,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n labelPie,\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 pivotHideIndicatorName,\n datasetPivot,\n pivotIndicators([\n initDonut,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n labelPie,\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}\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'\nimport { addColorToEncoding } from './color'\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, measures.length > 1)\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 = encoding.color\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureName) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\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 addColorToEncoding(dimensions, encoding, isMultiMeasure)\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 = encoding.color\n }\n\n // tooltip\n encoding.tooltip = unique(dimensions.map((item) => item.id))\n encoding.tooltip = encoding.tooltip.filter((d) => d !== MeasureName)\n\n // label\n encoding.label = unique(dimensions.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = encoding.label.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 // label\n const label = unique(measures.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = unique([...(encoding.label || []), ...label])\n\n // tooltip\n const tooltip = unique(measures.filter((item) => item.encoding === 'tooltip').map((item) => item.id))\n encoding.tooltip = unique([...(encoding.tooltip || []), ...label, ...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 deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const roseAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForRose, buildMeasures],\n [\n encodingForRose,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\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 radiusAxis: SpecPipe = (spec) => {\n const result = { ...spec } as IRoseChartSpec\n\n if (!result.axes) {\n result.axes = []\n }\n\n result.axes.push({\n type: 'linear',\n orient: 'radius',\n visible: false,\n zero: true,\n nice: false,\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, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed, vseed)) {\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 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 progressive,\n linearColor,\n colorAdapter,\n pivotColorLegend,\n colorLegend,\n roseStyle,\n colorRoseStyleFill,\n labelPie,\n pivotHideIndicatorName,\n} from '../pipes'\n\nconst rose: SpecPipeline = [\n initRose,\n stackCornerRadius,\n stackInverse,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n radiusAxis,\n verticalCrosshairRect,\n colorRoseStyleFill(roseStyle),\n colorAdapter(discreteLegend, colorLegend),\n labelPie,\n tooltip,\n]\n\nconst pivotRose: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n pivotHideIndicatorName,\n datasetPivot,\n pivotIndicators([\n initRose,\n stackCornerRadius,\n stackInverse,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n radiusAxis,\n verticalCrosshairRect,\n colorRoseStyleFill(roseStyle),\n labelPie,\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}\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 deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const roseParallelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForRose, buildMeasures],\n [\n encodingForRose,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n roseParallelConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport { isDeepEqual } from 'remeda'\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, encoding } = advancedVSeed\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n const sameDimensionsMode = isDeepEqual(encoding.angle, encoding.color)\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 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 progressive,\n pivotColorLegend,\n colorAdapter,\n linearColor,\n colorLegend,\n roseStyle,\n colorRoseStyleFill,\n labelPie,\n pivotHideIndicatorName,\n} from '../pipes'\n\nconst roseParallel: SpecPipeline = [\n initRoseParallel,\n stackCornerRadius,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n radiusAxis,\n colorRoseStyleFill(roseStyle),\n colorAdapter(discreteLegend, colorLegend),\n labelPie,\n tooltip,\n verticalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotRoseParallel: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n pivotHideIndicatorName,\n datasetPivot,\n pivotIndicators([\n initRoseParallel,\n stackCornerRadius,\n colorAdapter(color, linearColor),\n backgroundColor,\n datasetXY,\n progressive,\n radiusAxis,\n verticalCrosshairRect,\n colorRoseStyleFill(roseStyle),\n labelPie,\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}\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'\nimport { addColorToEncoding } from './color'\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, measures.length > 1)\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, isMultiMeasure: boolean) => {\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 addColorToEncoding(dimensions, encoding, isMultiMeasure)\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 // label\n encoding.label = unique(dimensions.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = encoding.label.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 // label\n const label = unique(measures.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = unique([...(encoding.label || []), ...label])\n\n // tooltip\n const tooltip = unique(measures.filter((item) => item.encoding === 'tooltip').map((item) => item.id))\n encoding.tooltip = unique([...(encoding.tooltip || []), ...label, ...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 deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const radarAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForRadar, buildMeasures],\n [\n encodingForRadar,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\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, vseed } = 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, vseed) ? 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) => {\n const result = { ...spec } as IRoseChartSpec\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) => {\n const result = { ...spec } as IRoseChartSpec\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 pivotHideIndicatorName,\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 pivotHideIndicatorName,\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}\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'\nimport { addColorToEncoding } from './color'\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, measures.length > 1)\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 = encoding.color\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureName) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\n // color\n addColorToEncoding(dimensions, encoding, isMultiMeasure)\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 // label\n encoding.label = unique(dimensions.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = encoding.label.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 // label\n const label = unique(measures.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = unique([...(encoding.label || []), ...label])\n\n // tooltip\n const tooltip = unique(measures.filter((item) => item.encoding === 'tooltip').map((item) => item.id))\n encoding.tooltip = unique([...(encoding.tooltip || []), ...label, ...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 deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const funnelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForFunnel, buildMeasures],\n [\n encodingForFunnel,\n buildMeasures,\n deleteEncodingForMeasure(['tooltip', 'label', 'color']),\n deleteTooltipAndLabelDimension,\n ],\n ),\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, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed, vseed)) {\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 pivotHideIndicatorName,\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 pivotHideIndicatorName,\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}\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'\nimport { addColorToEncoding } from './color'\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, measures.length > 1)\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 = encoding.color\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureName) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\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 addColorToEncoding(dimensions, encoding, isMultiMeasure)\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 = encoding.color\n }\n // tooltip\n encoding.tooltip = unique(dimensions.map((item) => item.id))\n encoding.tooltip = encoding.tooltip.filter((d) => d !== MeasureName)\n // label\n encoding.label = unique(dimensions.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = encoding.label.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 // label\n const label = unique(measures.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = unique([...(encoding.label || []), ...label])\n\n // tooltip\n const tooltip = unique(measures.filter((item) => item.encoding === 'tooltip').map((item) => item.id))\n encoding.tooltip = unique([...(encoding.tooltip || []), ...label, ...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 deleteEncodingForMeasure,\n deleteTooltipAndLabelDimension,\n} from '../pipes'\n\nexport const heatmapAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureName,\n\n encodingAdapter(\n [defaultEncodingForHeatmap, buildMeasures],\n [encodingForHeatmap, buildMeasures, deleteEncodingForMeasure(['tooltip', 'label']), deleteTooltipAndLabelDimension],\n ),\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'\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, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (isLinearColor(advancedVSeed, vseed)) {\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 { uniqueBy } from 'remeda'\nimport { createFormatterByMeasure, findAllMeasures, 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, vseed } = context\n const { 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, findAllMeasures(vseed.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 = uniqueBy(\n dimensions.filter((item) => tooltip.includes(item.id)),\n (item) => item.id,\n )\n const meas = uniqueBy(\n measures.filter((item) => tooltip.includes(item.id)),\n (item) => item.id,\n )\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 const formatter = createFormatterByMeasure(measure)\n return formatter(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 const formatter = createFormatterByMeasure(measure)\n return formatter(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 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 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 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}\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 wrap: true,\n showValue: true,\n showValuePercent: false,\n labelColorSmartInvert: false,\n labelOverlap: 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 labelColor: '#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: {\n ...linearAxis,\n },\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: {\n ...linearAxis,\n },\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: {\n ...linearAxis,\n },\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 sizeRange: [8, 24],\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 label: {\n ...baseConfig.label,\n showValuePercent: true,\n labelLayout: 'labelLine',\n },\n },\n donut: {\n ...baseConfig,\n label: {\n ...baseConfig.label,\n showValuePercent: true,\n labelLayout: 'labelLine',\n },\n },\n radar: {\n ...baseConfig,\n },\n rose: {\n ...baseConfig,\n label: {\n ...baseConfig.label,\n showValuePercent: true,\n },\n },\n roseParallel: {\n ...baseConfig,\n label: {\n ...baseConfig.label,\n showValuePercent: true,\n },\n },\n // other\n funnel: {\n ...baseConfig,\n },\n heatmap: {\n ...baseConfig,\n label: {\n ...baseConfig.label,\n labelColorSmartInvert: true,\n },\n },\n },\n }\n}\n","import type {\n BackgroundColor,\n Color,\n CustomThemeConfig,\n Label,\n Legend,\n TableConfig,\n Tooltip,\n YBandAxis,\n YLinearAxis,\n} from 'src/types'\n\nexport const darkTheme = (): CustomThemeConfig => {\n const linearAxis: YLinearAxis = {\n nice: true,\n zero: true,\n label: {\n visible: true,\n labelAngle: 0,\n labelColor: '#E2E3E6',\n labelFontSize: 12,\n labelFontWeight: 400,\n },\n title: {\n visible: false,\n titleText: '',\n titleColor: '#FDFDFD',\n titleFontSize: 12,\n titleFontWeight: 400,\n },\n grid: {\n visible: true,\n gridColor: '#404349',\n gridWidth: 0.5,\n },\n tick: {\n visible: false,\n tickInside: false,\n tickSize: 4,\n tickColor: '#4B4F54',\n },\n line: {\n visible: false,\n lineColor: '#4B4F54',\n lineWidth: 1,\n },\n }\n const bandAxis: YBandAxis = {\n labelAutoHide: true,\n labelAutoHideGap: 4,\n labelAutoLimit: true,\n labelAutoLimitLength: 80,\n labelAutoRotate: false,\n labelAutoRotateAngleRange: [0, -45, -90],\n label: {\n visible: true,\n labelAngle: 0,\n labelColor: '#E2E3E6',\n labelFontSize: 12,\n labelFontWeight: 400,\n },\n title: {\n visible: false,\n titleText: '',\n titleColor: '#FDFDFD',\n titleFontSize: 12,\n titleFontWeight: 400,\n },\n grid: {\n visible: false,\n gridColor: '#404349',\n gridWidth: 0.5,\n },\n tick: {\n visible: false,\n tickInside: false,\n tickSize: 4,\n tickColor: '#4B4F54',\n },\n line: {\n visible: true,\n lineColor: '#4B4F54',\n lineWidth: 1,\n },\n }\n const barBandAxis: YBandAxis = {\n ...bandAxis,\n labelAutoHide: false,\n labelAutoHideGap: 1,\n labelAutoLimit: false,\n labelAutoLimitLength: undefined,\n labelAutoRotate: false,\n labelAutoRotateAngleRange: [0, -45, -90],\n }\n const crosshairLine = {\n visible: true,\n labelVisible: true,\n lineColor: '#E2E3E6',\n labelColor: '#4B4F54',\n labelBackgroundColor: '#ffffff',\n }\n const crosshairRect = {\n visible: true,\n labelVisible: true,\n lineColor: '#E2E3E6',\n labelColor: '#4B4F54',\n labelBackgroundColor: '#ffffff',\n }\n\n const baseConfig: {\n backgroundColor?: BackgroundColor\n color?: Color\n label?: Label\n tooltip?: Tooltip\n legend?: Legend\n } = {\n backgroundColor: 'transparent',\n color: {\n 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 wrap: true,\n showValue: true,\n showValuePercent: false,\n labelColorSmartInvert: false,\n labelOverlap: 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 labelColor: '#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 sizeRange: [8, 24],\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 label: {\n ...baseConfig.label,\n showValuePercent: true,\n labelLayout: 'labelLine',\n },\n },\n donut: {\n ...baseConfig,\n label: {\n ...baseConfig.label,\n showValuePercent: true,\n labelLayout: 'labelLine',\n },\n },\n radar: {\n ...baseConfig,\n },\n rose: {\n ...baseConfig,\n label: {\n ...baseConfig.label,\n showValuePercent: true,\n },\n },\n roseParallel: {\n ...baseConfig,\n label: {\n ...baseConfig.label,\n showValuePercent: true,\n },\n },\n // other\n funnel: {\n ...baseConfig,\n },\n heatmap: {\n ...baseConfig,\n label: {\n ...baseConfig.label,\n labelColorSmartInvert: true,\n },\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 { 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 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 数值格式化比例, 不能为0\n * @default 1\n * @example\n * - 100000 转换为 10万, ratio:10000, symbol:\"万\"\n * - 100000 转换为 10K, ratio:1000, symbol:\"K\"\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 */\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 numFormat: zNumFormat.default({}),\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\n .array(\n zMeasure.omit({\n encoding: true,\n parentId: true,\n }),\n )\n .or(\n zMeasure.omit({\n parentId: true,\n encoding: true,\n }),\n )\n .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\n .array(\n zMeasure.omit({\n parentId: true,\n encoding: true,\n }),\n )\n .or(zMeasure)\n .optional(),\n\n yMeasures: z\n .array(\n zMeasure.omit({\n parentId: true,\n encoding: true,\n }),\n )\n .or(zMeasure)\n .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 statistics: z.object({\n min: z.number(),\n max: z.number(),\n sum: z.number(),\n count: z.number(),\n colorMin: z.number(),\n colorMax: z.number(),\n }),\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\n/**\n * @description 仅VSeed内AdvancedVSeed使用此结构, 其余场景请使用DimensionEncodingEnum、MeasureEncodingEnum\n */\nexport const EncodingEnum = {\n x: 'x',\n y: 'y',\n angle: 'angle',\n radius: 'radius',\n detail: 'detail',\n\n color: 'color',\n size: 'size',\n tooltip: 'tooltip',\n label: 'label',\n\n row: 'row',\n column: 'column',\n\n group: 'group',\n} as const\n","import { z } from 'zod'\n\nexport const zDimensionEncoding = z.enum([\n 'xAxis',\n 'yAxis',\n 'angle',\n 'color',\n 'detail',\n 'tooltip',\n 'label',\n 'row',\n 'column',\n])\n\nexport const DimensionEncodingEnum = {\n xAxis: 'xAxis',\n yAxis: 'yAxis',\n angle: 'angle',\n color: 'color',\n detail: 'detail',\n tooltip: 'tooltip',\n label: 'label',\n row: 'row',\n column: 'column',\n} as const\n","import { z } from 'zod'\n\nexport const zMeasureEncoding = z.enum([\n 'primaryYAxis',\n 'secondaryYAxis',\n 'xAxis',\n 'yAxis',\n 'angle',\n 'radius',\n 'size',\n 'color',\n 'detail',\n 'column',\n 'label',\n 'tooltip',\n])\n\nexport const MeasureEncodingEnum = {\n primaryYAxis: 'primaryYAxis',\n secondaryYAxis: 'secondaryYAxis',\n xAxis: 'xAxis',\n yAxis: 'yAxis',\n angle: 'angle',\n radius: 'radius',\n size: 'size',\n color: 'color',\n detail: 'detail',\n column: 'column',\n label: 'label',\n tooltip: 'tooltip',\n} as const\n","import { z } from 'zod'\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 { zNumFormat } from '../../format'\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 numFormat: zNumFormat.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\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","import { z } from 'zod'\nimport { zNumFormat } from '../../format'\n\nexport const zLabel = z.object({\n enable: z.boolean().nullish(),\n wrap: z.boolean().nullish(),\n showValue: z.boolean().nullish(),\n showValuePercent: z.boolean().nullish(),\n autoFormat: z.boolean().nullish(),\n numFormat: zNumFormat.nullish(),\n labelFontSize: z.number().nullish(),\n labelFontWeight: z.number().or(z.string()).nullish(),\n labelBackgroundColor: z.string().nullish(),\n labelColor: z.string().nullish(),\n labelColorSmartInvert: z.boolean().nullish(),\n labelPosition: z.string().nullish(),\n labelOverlap: z.boolean().nullish(),\n})\n","import { z } from 'zod'\nimport { zLabel } from './zLabel'\n\nexport const zPieLabel = zLabel.extend({\n labelLayout: z.union([z.literal('arc'), z.literal('labelLine'), z.literal('edge')]).nullish(),\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 /**\n * @description 图例字体颜色\n */\n labelColor?: string\n\n /**\n * @description 图例字体大小\n * @example labelFontSize: 10\n */\n labelFontSize?: number\n\n /**\n * @description 图例字体颜色\n * @deprecated use labelColor instead\n */\n labelFontColor?: string\n\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 labelColor: z.string().default('#fff').nullish(),\n labelFontSize: z.number().default(12).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, zXLinearAxis, zYLinearAxis } from './axes'\nimport { zCrosshairLine, zCrosshairRect } from './crosshair'\nimport { zStackCornerRadius } from './stackCornerRadius/stackCornerRadius'\nimport { zBackgroundColor } from './backgroundColor/backgroundColor'\nimport { zColor } from './color/color'\nimport { zLabel, zPieLabel } from './label'\nimport { zLegend } from './legend/legend'\nimport { zTooltip } from './tooltip/tooltip'\nimport { zDualChartType } from '../chartType'\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 size: z.number().or(z.array(z.number())).nullish(),\n sizeRange: z.number().or(z.array(z.number())).nullish(),\n})\n\n// polar\nexport const zRoseConfig = z.object({\n backgroundColor: zBackgroundColor.nullish(),\n label: zPieLabel.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: zPieLabel.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 = zAreaConfig\nexport const zHeatmapConfig = zAreaConfig\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'\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\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 size: z.number().or(z.array(z.number())).nullish(),\n sizeRange: z.number().or(z.array(z.number())).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 zLegend,\n zMeasureTree,\n zPieLabel,\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: zPieLabel.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 zLegend,\n zMeasureTree,\n zPieLabel,\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: zPieLabel.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 { zDualAxis, zFunnel, zHeatmap, zPivotTable, zRadar, zRoseParallel, zScatter, zTable } 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":["Object","__webpack_require__","e","Symbol","execPipeline","pipeline","context","initialValue","prev","cur","Intl","translateMap","value","segments","values","text","segment","index","translatedText","isNullish","console","locale","intl","buildAdvanced","builder","start","performance","Date","chartType","Error","Builder","advancedVSeed","end","buildSpec","spec","build","preorderTraverse","tree","callback","stack","node","stop","children","i","child","measureDepth","measures","depth","Math","isMeasureTreeWithChildren","measure","isMeasureTreeWithParentId","normalizeMeasureTree","createEmptyMeasureGroup","currentGroup","measureGroups","item","ANNOTATION_Z_INDEX","LINEAR_AXIS_INNER_OFFSET_TOP","DUAL_AXIS_CHART_COLUMN_Z_INDEX","DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX","DUAL_AXIS_LABEL_Z_INDEX","DEFAULT_PARENT_ID","ChartTypeEnum","isTable","vseed","isPivotTable","isRadar","isAreaPercent","isColumnPercent","isBarPercent","isVTable","isVChart","isPivotChart","isPivot","isCombination","dimensions","dimension","parentIds","unique","getColorItems","datasetReshapeInfo","colorItems","d","colorIdMap","getColorIdMap","advanced","customPipe","themeKey","checkVSeed","dataset","isEmpty","Array","initAdvancedVSeed","isMeasure","isMeasureGroup","isMeasures","defaultMeasures","clonedMeasures","clone","top100dataset","key","undefined","isDimension","isDimensionGroup","findMeasureById","id","result","findFirstMeasure","findAllMeasures","defaultDimensions","clonedDimensions","newDimensions","dim","records","tableConfig","config","pick","theme","customTheme","chartConfigTheme","chartConfig","mergedConfig","mergeDeep","_k","mergeArray","chartCustomTheme","arr","themeItem","isString","isNumber","isObjectType","merge","tableAdvancedPipeline","initTable","backgroundColor","dimensionTreeToColumns","columns","treeTreeToColumns","field","groupNode","title","props","createNumFormatter","format","type","ratio","thousandSeparator","prefix","suffix","symbol","fractionDigits","significantDigits","roundingMode","roundingPriority","numFormatterOptions","numFormatter","num","Number","typeSymbol","String","numStr","parts","autoNumFormatter","createFormatter","autoFormatter","createFormatterByMeasure","v","numFormat","autoFormat","formatterFormat","measureTreeToColumns","fieldFormat","formatter","datum","bodyStyle","themeConfig","borderColor","fontColor","fontSize","hoverCellBgColor","hoverInlineColor","headerStyle","themConfig","frameStyle","selectionStyle","tableSpecPipeline","registerTable","ORIGINAL_DATA","Separator","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","allowEmptyFold","foldInfo","Infinity","ids","j","omit","alias","valueNumber","reshapePivotTable","newDatasets","pivotTableConfig","pivotTableAdvancedPipeline","initPivotTable","pivotColumns","pivotRows","rows","pivotIndicators","col","row","table","foldMeasureId","rowHeaderStyle","cornerHeaderStyle","hoverCellColor","dataConfig","aggregationRules","AggregationType","pivotTableSpecPipeline","registerPivotTable","encodingAdapter","noEncodingPipeline","hasEncodingPipeline","addColorToEncoding","isMultiMeasure","defaultEncodingForLine","encodingForLine","color","label","tooltip","buildMeasures","generateMeasuresByParentId","basicMeasuresToMeasureTree","measureTree","parent","deleteMeasureTreeByCallback","parents","Map","nodesToProcess","visited","Set","parentList","deleteEncodingForMeasure","encodingKeys","deleteDimensionTreeByCallback","dimensionTree","deleteTooltipAndLabelDimension","pivotAdapter","pivotPipeline","unfoldDimensions","separator","colorItemAsId","unfoldInfo","x","y","detail","angle","angleDimensions","xDimensions","yDimensions","colorDimensions","detailDimensions","applyEncoding","colorItem","colorId","dataReshapeByEncoding","foldMeasureName","foldMeasureValue","foldedDataset","finalDataset","colorAdapter","ordinalPipe","linearPipe","isLinearColor","measureIdList","getColorMeasureId","reshapeWithEncoding","uniqueBy","pivotReshapeWithEncoding","datasets","measureGroup","groupId","newSubDataset","sortXBandAxis","sortAxis","xField","axisOrderResult","calcOrder","sortConfig","order","orderBy","res","sort","a","b","aValue","bValue","sortLegend","nameMap","pre","orderRes","itemNameOrId","replaceNullToUndefined","obj","isPlainObject","pipe","mapValues","lineConfig","columnConfig","pieConfig","areaConfig","areaPercentConfig","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","fuzzyMatchedList","linearColor","linearColorScheme","datasetXY","analysis","orderMapping","fields","progressive","defaultTitleText","idList","allMeasures","f","xBand","visible","tick","grid","line","labelAutoHide","labelAutoHideGap","labelAutoLimit","labelAutoLimitLength","labelAutoRotate","labelAutoRotateAngleRange","bandAxis","sampling","createLinearFormat","createLinearPercentFormat","percentFormatter","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","items","colorLegend","colorPointStyleFill","stylePipe","selector","vchartDatum","vchartKeys","k","selectors","isValueSelector","isMeasureSelector","op","selectorValueArr","isDimensionSelector","isPartialDatumSelector","pointStyle","customMap","pointStyles","style","pointBorderColor","pointBorderStyle","pointBorderWidth","pointColor","pointColorOpacity","pointSize","pointVisible","pointStateDimensionHover","point","pointStateHover","colorLineStyleFill","getCurveType","lineSmooth","getCurveTension","lineStyle","lineStyles","lineColorOpacity","lineWidth","lineVisible","dashSegment","curveType","curveTension","_","dashGap","buildLabel","generateMeasureValue","labelAutoFormat","generateMeasurePercent","sum","vseedDimensions","advancedVSeedMeasures","foldInfoList","wrap","showValue","showValuePercent","labelOverlap","labelColorSmartInvert","labelPosition","labelDims","labelMeas","dimLabels","meaLabels","statistics","measureValueLabel","measurePercentLabel","createMarkContent","createDimensionContent","encodingColor","dims","meas","dimContent","colorName","originalData","isSubset","sub","annotationPoint","markPoint","annotationPointList","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","newMarkLine","annotationHorizontalLine","annotationHorizontalLineList","yValue","yValueArr","annotationArea","annotationAreaList","markArea","areaColor","areaColorOpacity","areaBorderColor","areaBorderRadius","areaBorderWidth","outerPadding","isBottom","xyList","positionData","yAxisHelper","xAxisHelper","yScale","minX","maxX","minY","maxY","xScale","initPivot","pivotIndicatorsAsRow","pivotIndicatorsAsCol","pivotGridStyle","onlyCombination","transparent","headerFontColor","headerBackgroundColor","hoverHeaderBackgroundColor","hoverHeaderInlineBackgroundColor","chartPipeline","indicators","reshapeInfo","newDataset","newDatasetReshapeInfo","chartSpec","datasetPivot","pivotRowDimensions","rowDimensions","pivotColumnDimensions","columnDimensions","pivotDiscreteLegend","colorSpecified","legends","pivotColorLegend","legendPosition","pivotLine","lineSpecPipeline","registerLine","defaultEncodingForColumn","encodingForColumn","onlyMeasureName","columnAdvancedPipeline","initColumn","stackCornerRadius","stackInverse","verticalCrosshairRect","rectColor","colorBarStyleFill","barStyle","showStroke","barStyles","barBorderColor","barBorderStyle","barBorderWidth","barColor","barColorOpacity","barRadius","barVisible","annotationAreaBand","dy","bandPosition","xBandWidth","startX","endX","width","middleX","yBandWidth","startY","endY","middleY","column","pivotColumn","columnSpecPipeline","registerColumn","columnParallelAdvancedPipeline","initColumnParallel","sameDimensionsMode","isDeepEqual","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","groupBy","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","Boolean","isX","isY","scatterConfig","reshapeWithScatterEncoding","unfoldInfoList","pivotReshapeWithScatterEncoding","datasetList","scatterAdvancedPipeline","initScatter","datasetScatter","scatterSize","size","labelScatter","tooltipScatter","meaContent","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","initDualAxisPrimary","initDualAxisSecondary","dualChartTypePrimary","primary","secondary","bothColumn","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","labelPie","pivotHideIndicatorName","pie","pivotPie","pieSpecPipeline","registerPie","donutAdvancedPipeline","initDonut","donut","pivotDonut","donutSpecPipeline","registerDonut","defaultEncodingForRose","encodingForRose","roseAdvancedPipeline","initRose","hasNegativeValue","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","colorCellStyleFill","cellStyle","tooltipHeatmap","initHeatmap","heatmap","pivotHeatmap","heatmapSpecPipeline","registerHeatmap","lightTheme","barBandAxis","crosshairLine","crosshairRect","darkTheme","registerCustomTheme","registerLightTheme","registerDarkTheme","registerAll","updateAdvanced","advancedPipe","updateSpec","specPipe","zChartType","z","zDualChartType","zDatum","zDataset","zDimension","zDimensionGroup","zDimensions","zDimensionTree","zNumFormat","zMeasure","zMeasureGroup","zMeasures","zMeasureTree","zDualMeasure","zDualMeasures","zScatterMeasure","zScatterMeasures","zFoldInfo","zUnfoldInfo","zDatasetReshapeInfo","zEncoding","EncodingEnum","zDimensionEncoding","DimensionEncodingEnum","zMeasureEncoding","MeasureEncodingEnum","zXBandAxis","zYBandAxis","zXLinearAxis","zYLinearAxis","zCrosshairLine","zCrosshairRect","zStackCornerRadius","zBackgroundColor","zColor","zLinearColor","zLabel","zPieLabel","zLegend","zColorLegend","zTooltip","zTableConfig","zPivotTableConfig","zLineConfig","zColumnConfig","zColumnParallelConfig","zColumnPercentConfig","zBarConfig","zBarParallelConfig","zBarPercentConfig","zAreaConfig","zAreaPercentConfig","zDualAxisConfig","zScatterConfig","zRoseConfig","zRoseParallelConfig","zPieConfig","zDonutConfig","zRadarConfig","zFunnelConfig","zHeatmapConfig","zConfig","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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"}