@visactor/vseed 0.0.25 → 0.0.27

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/webpack/runtime/compat_get_default_export","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/advanced/chart/pipes/init/initAdvancedVSeed.ts","webpack://@visactor/vseed/./src/pipeline/utils/pipeline.ts","webpack://@visactor/vseed/./src/pipeline/utils/chatType.ts","webpack://@visactor/vseed/./src/i18n/i18n.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/tree/traverse.ts","webpack://@visactor/vseed/./src/pipeline/utils/measures/find.ts","webpack://@visactor/vseed/./src/pipeline/utils/dimensions/find.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/init/autoMeasures.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/init/autoDimensions.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/init/autoMeasuresBy2M1Group.ts","webpack://@visactor/vseed/./src/dataReshape/constant.ts","webpack://@visactor/vseed/./src/dataReshape/unfoldDimensions.ts","webpack://@visactor/vseed/./src/dataReshape/foldMeasures.ts","webpack://@visactor/vseed/./src/dataReshape/dataReshapeFor2D1M.ts","webpack://@visactor/vseed/./src/dataReshape/dataReshapeFor1D1M.ts","webpack://@visactor/vseed/./src/dataReshape/dataReshapeFor1D2M.ts","webpack://@visactor/vseed/./src/dataReshape/dataReshapeFor1D.ts","webpack://@visactor/vseed/./src/dataReshape/unfoldZeroDimensions.ts","webpack://@visactor/vseed/./src/dataReshape/dataReshapeFor2D1M0Name.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeTo2D1M.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeTo2D1M0Name.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeTo1D1M.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeTo1D2M.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeTo1D.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo2D1M.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo2D1M0Name.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo1D1M.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo1D2M.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo1D.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/encodingXY.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/encodingYX.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/encodingYY.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/encodingXYY.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/encodingRose.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/encodingPie.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/encodingAR.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/encodingFunnel.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/config/config.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/theme/theme.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/pivot/pivotAdapter.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/pipes/analysis/sort.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/line.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/bar.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/barParallel.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/barPercent.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/column.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/columnParallel.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/columnPercent.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/area.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/areaPercent.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/areaRange.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/pie.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/donut.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/rose.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/roseParallel.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/funnel.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/scatter.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/encodingMatrix.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/heatmap.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/radar.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/init/autoMeasures.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/init/autoDimensions.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/init/autoPivotDimensions.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/init/autoPivotMeasures.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/init/initAdvancedVSeed.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/records/records.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipeline/pivotTable.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipeline/table.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/datasetYX.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/datasetXY.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/datasetPivot.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/column.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/bar.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/barParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/area.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/areaRange.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/line.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/columnParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/pie.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/donut.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/rose.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/roseParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/scatter.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/radar.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/funnel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/pivot.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/xBand.ts","webpack://@visactor/vseed/./src/pipeline/utils/constant.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/xLinear.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/yBand.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/yLinear.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/radius.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/angle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/radarAngle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/radarRadius.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/percent/percent.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/stack/stack.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/stack/stackCornerRadius.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/backgroundColor/background.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltip.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/label/label.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/label/labelColorInversion.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/legend/discreteLegend.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/legend/pivotDiscreteLegend.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/legend/colorLegend.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/pivotChart/pivotAdapter.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/pivotChart/pivotIndicators.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/pivotChart/pivotGridStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/pivotChart/pivotColumnDimensions.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/pivotChart/pivotRowDimensions.ts","webpack://@visactor/vseed/./src/dataSelector/selector.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/barStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/pointStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/pointState.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/lineStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/areaStyle.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/annotation/annotationAreaBand.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/crosshair/verticalCrosshairLine.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/crosshair/verticalCrosshairRect.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/crosshair/horizontalCrosshairRect.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/crosshair/horizontalCrosshairLine.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/series/series.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/line.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/column.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/columnParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/columnPercent.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/bar.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/barParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/barPercent.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/area.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/areaPercent.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/areaRange.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/scatter.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/pie.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/donut.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/rose.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/roseParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/radar.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/funnel.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/pipeline/spec/table/pipes/init/table.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/init/pivotTable.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/columns/measuresToColumns.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/bodyStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/theme/headerStyle.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/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/pipeline/spec/table/pipeline/pivotTable.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/builder/builder/advanced/colorItems.ts","webpack://@visactor/vseed/./src/builder/builder/builder.ts","webpack://@visactor/vseed/./src/builder/register/chartType.ts","webpack://@visactor/vseed/./src/theme/light.ts","webpack://@visactor/vseed/./src/theme/dark.ts","webpack://@visactor/vseed/./src/builder/register/theme.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/dataset/dataset.ts","webpack://@visactor/vseed/./src/types/properties/dimensions/dimensions.ts","webpack://@visactor/vseed/./src/types/properties/measures/format/numFormat.ts","webpack://@visactor/vseed/./src/types/properties/measures/measures.ts","webpack://@visactor/vseed/./src/types/properties/datasetReshapeInfo/datasetReshapeInfo.ts","webpack://@visactor/vseed/./src/types/properties/encoding/encoding.ts","webpack://@visactor/vseed/./src/types/properties/config/axes/bandAxis.ts","webpack://@visactor/vseed/./src/types/properties/config/axes/linearAxis.ts","webpack://@visactor/vseed/./src/types/properties/config/crosshair/crosshair.ts","webpack://@visactor/vseed/./src/types/properties/config/stackCornerRadius/stackCornerRadius.ts","webpack://@visactor/vseed/./src/types/properties/config/backgroundColor/backgroundColor.ts","webpack://@visactor/vseed/./src/types/properties/config/color/color.ts","webpack://@visactor/vseed/./src/types/properties/config/label/label.ts","webpack://@visactor/vseed/./src/types/properties/config/legend/legend.ts","webpack://@visactor/vseed/./src/types/properties/config/tooltip/tooltip.ts","webpack://@visactor/vseed/./src/types/properties/config/config.ts","webpack://@visactor/vseed/./src/types/properties/config/axes/axis.ts","webpack://@visactor/vseed/./src/types/properties/theme/customTheme.ts","webpack://@visactor/vseed/./src/types/properties/theme/theme.ts","webpack://@visactor/vseed/./src/types/dataSelector/selector.ts","webpack://@visactor/vseed/./src/types/properties/markStyle/barStyle.ts","webpack://@visactor/vseed/./src/types/properties/markStyle/pointStyle.ts","webpack://@visactor/vseed/./src/types/properties/markStyle/lineStyle.ts","webpack://@visactor/vseed/./src/types/properties/markStyle/areaStyle.ts","webpack://@visactor/vseed/./src/types/properties/markStyle/markStyle.ts","webpack://@visactor/vseed/./src/types/properties/annotation/annotationPoint.ts","webpack://@visactor/vseed/./src/types/properties/annotation/annotationVerticalLine.ts","webpack://@visactor/vseed/./src/types/properties/annotation/annotationHorizontalLine.ts","webpack://@visactor/vseed/./src/types/properties/annotation/annotationArea.ts","webpack://@visactor/vseed/./src/types/properties/annotation/annotation.ts","webpack://@visactor/vseed/./src/types/properties/analysis/sortAxis.ts","webpack://@visactor/vseed/./src/types/properties/analysis/sortLegend.ts","webpack://@visactor/vseed/./src/types/properties/analysis/analysis.ts","webpack://@visactor/vseed/./src/types/i18n/i18n.ts","webpack://@visactor/vseed/./src/types/chartType/table/table.ts","webpack://@visactor/vseed/./src/types/chartType/pivotTable/pivotTable.ts","webpack://@visactor/vseed/./src/types/chartType/line/line.ts","webpack://@visactor/vseed/./src/types/chartType/column/column.ts","webpack://@visactor/vseed/./src/types/chartType/columnParallel/columnParallel.ts","webpack://@visactor/vseed/./src/types/chartType/columnPercent/columnPercent.ts","webpack://@visactor/vseed/./src/types/chartType/bar/bar.ts","webpack://@visactor/vseed/./src/types/chartType/barParallel/barParallel.ts","webpack://@visactor/vseed/./src/types/chartType/barPercent/barPercent.ts","webpack://@visactor/vseed/./src/types/chartType/area/area.ts","webpack://@visactor/vseed/./src/types/chartType/areaPercent/areaPercent.ts","webpack://@visactor/vseed/./src/types/chartType/areaRange/areaRange.ts","webpack://@visactor/vseed/./src/types/chartType/scatter/scatter.ts","webpack://@visactor/vseed/./src/types/chartType/rose/rose.ts","webpack://@visactor/vseed/./src/types/chartType/roseParallel/roseParallel.ts","webpack://@visactor/vseed/./src/types/chartType/pie/pie.ts","webpack://@visactor/vseed/./src/types/chartType/donut/donut.ts","webpack://@visactor/vseed/./src/types/chartType/radar/radar.ts","webpack://@visactor/vseed/./src/types/chartType/funnel/funnel.ts","webpack://@visactor/vseed/./src/types/chartType/heatmap/heatmap.ts","webpack://@visactor/vseed/./src/types/vseed.ts","webpack://@visactor/vseed/./src/types/advancedVSeed.ts"],"sourcesContent":["// getDefaultExport function for compatibility with non-ESM modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};\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 { AdvancedPipe, AdvancedVSeed } from 'src/types'\n\nexport const initAdvancedVSeed: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType, locale } = vseed\n return {\n ...advancedVSeed,\n chartType,\n locale: locale || 'zh-CN',\n } as AdvancedVSeed\n}\n","import type { ExecPipelineType, Pipe } from 'src/types'\n\n/**\n * 执行pipeline, 每个pipe负责构建结果的一部分, 构建完成后得到完整的目标结果\n * @param pipeline pipeline数组, 每个pipe负责构建结果的一部分\n * @param initialValue 初始值\n * @param context 上下文\n * @returns 执行后的结果\n */\nexport const execPipeline: ExecPipelineType = <T, U>(\n pipeline: Array<Pipe<T, U>>,\n context: U,\n initialValue: Partial<T> = {},\n): T => {\n const result = pipeline.reduce((prev, cur) => {\n return cur(prev, context)\n }, initialValue)\n return result as T\n}\n","import type { Dimensions, DimensionGroup, DimensionTree, VSeed } from 'src/types'\n\nexport const isTable = (vseed: VSeed) => {\n return vseed.chartType === 'table'\n}\nexport const isPivotTable = (vseed: VSeed) => {\n return vseed.chartType === 'pivotTable'\n}\nexport const isVTable = (vseed: VSeed) => {\n return ['table', 'pivotTable'].includes(vseed.chartType)\n}\nexport const isVChart = (vseed: VSeed): boolean => {\n return !isVTable(vseed)\n}\nexport const isPivotChart = (vseed: VSeed) => {\n if (isVTable(vseed)) {\n return false\n }\n\n const { measures = [], dimensions = [] } = vseed as {\n measures: DimensionTree\n dimensions: Dimensions\n }\n\n const hasRowOrColumnDimension =\n dimensions &&\n dimensions.some((dimension) => dimension.location === 'rowDimension' || dimension.location === 'columnDimension')\n const hasMeasureGroup = measures && measures.find((measure: DimensionGroup) => measure && measure.children)\n\n return hasRowOrColumnDimension || hasMeasureGroup\n}\n","import { isNullish } from 'remeda'\nimport translateMap from './i18n.json'\nimport type { Locale, TranslateRecordType } from '../types'\n\nclass Intl {\n private static instance: Intl\n\n private translateMap: TranslateRecordType = translateMap as unknown as TranslateRecordType\n private locale: Locale = 'zh-CN'\n\n canTranslate = (value: string) => !!this.translateMap[value]\n\n /**\n * @example i18n`指标名称`\n */\n i18n = (segments: TemplateStringsArray, ...values: Array<number | string>) => {\n const text = segments.map((segment, index) => segment + (values[index] || '')).join('')\n\n const translatedText = this.translateMap?.[text]?.[this.locale]\n if (isNullish(translatedText)) {\n console.warn(`i18n ${this.locale} no translate: ${text}`)\n return text\n }\n return translatedText\n }\n\n setLocale = (locale: Locale): void => {\n this.locale = locale\n }\n\n getLocale: () => Locale = () => this.locale\n\n public static getInstance() {\n if (!Intl.instance) {\n Intl.instance = new Intl()\n }\n\n return Intl.instance\n }\n}\n\nconst intl = Intl.getInstance()\n\nconst i18n = intl.i18n\n\nexport { intl, i18n }\n","import { isNumber } from 'remeda'\nimport { intl } from '../../../i18n'\nimport type { Formatter, Locale, NumFormat } from 'src/types'\n\nexport const createNumFormatter = (format: NumFormat, locale: Locale = intl.getLocale()): Formatter => {\n const {\n type = 'number',\n ratio = 1,\n symbol = '',\n thousandSeparator = true,\n prefix = '',\n suffix = '',\n\n fractionDigits = 2,\n significantDigits,\n roundingMode = 'halfExpand',\n roundingPriority = 'auto',\n } = format || {}\n\n const numFormatterOptions: Intl.NumberFormatOptions = {\n style: 'decimal',\n notation: type === 'scientific' ? 'scientific' : 'standard',\n // @ts-expect-error roundingMode is not in NumberFormatOptions\n roundingMode,\n roundingPriority,\n }\n\n if (isNumber(fractionDigits)) {\n if (fractionDigits >= 0) {\n numFormatterOptions.minimumFractionDigits = fractionDigits\n numFormatterOptions.maximumFractionDigits = fractionDigits\n }\n }\n if (isNumber(significantDigits) && significantDigits > 0) {\n if (significantDigits > 0) {\n numFormatterOptions.minimumSignificantDigits = significantDigits\n numFormatterOptions.maximumSignificantDigits = significantDigits\n }\n }\n\n const numFormatter = new Intl.NumberFormat(locale, numFormatterOptions)\n\n return (value?: number | string) => {\n let num = Number(value)\n let typeSymbol = ''\n if (Number.isNaN(num)) {\n return num.toString()\n }\n\n // apply ratio for percent/permille\n if (type === 'percent') {\n num *= 100\n typeSymbol = '%'\n } else if (type === 'permille') {\n num *= 1000\n typeSymbol = '‰'\n } else if (type === 'number') {\n num = num / (ratio || 1)\n }\n\n // format value\n let numStr = numFormatter.format(num)\n\n // add thousand separator\n if (thousandSeparator) {\n const parts = numStr.split('.')\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')\n numStr = parts.join('.')\n }\n\n // add symbol, typeSymbol, prefix and suffix\n return `${prefix}${numStr}${typeSymbol}${symbol}${suffix}`\n }\n}\n\nexport const autoNumFormatter = (value?: number | string, locale: Locale = intl.getLocale()): string => {\n if (value === undefined || value === null) return String(value)\n const num = Number(value)\n if (Number.isNaN(num)) return String(value)\n\n const numFormatterOptions: Intl.NumberFormatOptions = {\n style: 'decimal',\n notation: 'compact',\n }\n numFormatterOptions.minimumFractionDigits = 0\n numFormatterOptions.maximumFractionDigits = 2\n\n const numFormatter = new Intl.NumberFormat(locale, { ...numFormatterOptions })\n\n return numFormatter.format(Number(value))\n}\n","import type { Formatter, Locale, NumFormat } from 'src/types'\nimport { autoNumFormatter, createNumFormatter } from './createNumFormatter'\n\nexport const createFormatter = (format: Partial<NumFormat>): Formatter => {\n return createNumFormatter(format)\n}\n\nexport const autoFormatter = (value?: number | string, locale?: Locale): string => {\n return autoNumFormatter(value, locale)\n}\n","/**\n * 支持泛型的非递归前序遍历\n * @param tree 根节点数组\n * @param callback 遍历时对每个节点执行的回调,返回 true 时停止遍历\n */\nexport const preorderTraverse = <T extends { id: string }, U extends { id: string; children?: (T | U)[] }>(\n tree: (T | U)[],\n callback: (node: T | U) => boolean,\n) => {\n if (!tree || tree.length === 0) return\n\n const stack: (T | U)[] = [...tree].reverse()\n\n while (stack.length > 0) {\n const node = stack.pop()!\n const stop = callback(node)\n if (stop === true) {\n return\n }\n if (!('children' in node)) {\n continue\n }\n const children = node.children\n if (children && children.length > 0) {\n for (let i = children.length - 1; i >= 0; i--) {\n const child = children[i]\n stack.push(child)\n }\n }\n }\n}\n","import type { Measure, MeasureGroup, MeasureTree } from 'src/types'\nimport { preorderTraverse } from '../tree'\n\nexport const findMeasureById = (measures: MeasureTree = [], id: string): Measure | undefined => {\n if (!measures) return undefined\n let result: Measure | undefined\n preorderTraverse<Measure, MeasureGroup>(measures, (node) => {\n if (!('children' in node)) {\n if (node.id === id) {\n result = node as Measure\n return true\n }\n }\n return false\n })\n return result\n}\n\nexport const findFirstMeasure = (measures: MeasureTree = []): Measure | undefined => {\n if (!measures) return undefined\n let result: Measure | undefined\n preorderTraverse<Measure, MeasureGroup>(measures, (node) => {\n if (!('children' in node)) {\n result = node as Measure\n return true\n }\n return false\n })\n return result\n}\n\nexport const findAllMeasures = (measures: MeasureTree = []): Measure[] => {\n if (!measures) return []\n const result: Measure[] = []\n preorderTraverse<Measure, MeasureGroup>(measures, (node) => {\n if (!('children' in node)) {\n result.push(node as Measure)\n }\n return false\n })\n return result\n}\n","import type { Dimension, DimensionGroup, DimensionTree } from 'src/types'\nimport { preorderTraverse } from '../tree'\n\nexport const findDimensionById = (dimensions: DimensionTree = [], id: string): Dimension | undefined => {\n if (!dimensions) return undefined\n let result: Dimension | undefined\n preorderTraverse<Dimension, DimensionGroup>(dimensions, (node) => {\n if (!('children' in node)) {\n if (node.id === id) {\n result = node as Dimension\n return true\n }\n }\n return false\n })\n return result\n}\n\nexport const findFirstDimension = (dimensions: DimensionTree = []): Dimension | undefined => {\n if (!dimensions) return undefined\n let result: Dimension | undefined\n preorderTraverse<Dimension, DimensionGroup>(dimensions, (node) => {\n if (!('children' in node)) {\n result = node as Dimension\n return true\n }\n return false\n })\n return result\n}\n\nexport const findAllDimensions = (dimensions: DimensionTree = []): Dimension[] => {\n if (!dimensions) return []\n const result: Dimension[] = []\n preorderTraverse<Dimension, DimensionGroup>(dimensions, (node) => {\n if (!('children' in node)) {\n result.push(node as Dimension)\n }\n return false\n })\n return result\n}\n","import { isPivotChart } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Datum, DimensionGroup } from 'src/types'\n\nexport const autoMeasures: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { measures, dataset } = vseed\n\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return result\n }\n\n if (isPivotChart(vseed)) {\n return autoMeasureGroup(advancedVSeed, context)\n }\n\n if (measures) {\n result.measures = measures\n return result\n }\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n result.measures = Object.keys(sample)\n .filter((key) => {\n return top100dataset.some((item) => typeof item[key] === 'number') && !['', null, undefined].includes(key)\n })\n .map((measure) => ({\n id: measure,\n alias: measure,\n }))\n\n return result\n}\n\nconst autoMeasureGroup: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { measures } = vseed\n const hasMeasureGroup = measures?.some((measure: DimensionGroup) => measure.children)\n\n if (!measures) {\n return advancedVSeed\n }\n\n // 没有指标组, 则自动添加一个指标组\n if (!hasMeasureGroup) {\n const newMeasures = [\n {\n id: 'measureGroup',\n alias: 'measureGroup',\n children: measures,\n },\n ]\n return {\n ...advancedVSeed,\n measures: newMeasures,\n }\n }\n\n // 存在指标组, 则任意连续的独立指标成组\n let currentGroup: DimensionGroup = createEmptyMeasureGroup()\n const measureGroups: DimensionGroup[] = []\n for (const measure of measures) {\n if ('children' in measure) {\n // 当前指标组之前的所有独立指标成组\n if (currentGroup.children?.length) {\n currentGroup.alias = currentGroup.children.map((item) => item.alias).join('-')\n currentGroup.id = currentGroup.alias + currentGroup.children.map((item) => item.id).join('-')\n measureGroups.push(currentGroup)\n currentGroup = createEmptyMeasureGroup()\n }\n // 当前是指标组\n measureGroups.push(measure)\n } else {\n currentGroup.children?.push(measure)\n }\n }\n\n // 最后一组\n if (currentGroup.children?.length) {\n currentGroup.alias = currentGroup.children.map((item) => item.alias).join('-')\n currentGroup.id = currentGroup.alias + currentGroup.children.map((item) => item.id).join('-')\n measureGroups.push(currentGroup)\n currentGroup = createEmptyMeasureGroup()\n }\n\n advancedVSeed.measures = measureGroups\n return advancedVSeed\n}\n\nconst createEmptyMeasureGroup = () => {\n return {\n id: '',\n alias: '',\n children: [],\n }\n}\n","import { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Datum, DimensionTree } from 'src/types'\n\nexport const autoDimensions: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dimensions, dataset } = vseed\n\n const measures = findAllMeasures(advancedVSeed.measures as DimensionTree)\n\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return result\n }\n\n if (dimensions) {\n result.dimensions = dimensions\n return result\n }\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n result.dimensions = Object.keys(sample)\n .filter(\n (key) =>\n top100dataset.some((item) => typeof item[key] === 'string') &&\n !['', null, undefined].includes(key) &&\n !measures.some((measure) => measure.id === key),\n )\n .map((dim) => ({\n id: dim,\n alias: dim,\n location: 'dimension',\n }))\n\n return result\n}\n","import { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Datum, MeasureGroup, MeasureTree } from 'src/types'\n\n/**\n * 自动处理指标, 如果超出了2个指标, 则按每2个指标一个组的逻辑维护\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const autoMeasuresBy2M1Group: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { measures, dataset } = vseed\n\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return result\n }\n\n if (measures) {\n result.measures = auto2M1Group(measures)\n return result\n }\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n const newMeasures = Object.keys(sample)\n .filter((key) => {\n return top100dataset.some((item) => typeof item[key] === 'number') && !['', null, undefined].includes(key)\n })\n .map((measure) => ({\n id: measure,\n alias: measure,\n }))\n\n result.measures = auto2M1Group(newMeasures)\n return result\n}\n\nconst auto2M1Group = (measures: MeasureTree): MeasureTree => {\n const allMeasures = findAllMeasures(measures)\n\n if (allMeasures.length <= 2) {\n return allMeasures\n }\n\n const groups: MeasureTree = measures.filter((measure) => 'children' in measure)\n const singleMeasures = measures.filter((measure) => !('children' in measure))\n for (let i = 0; i < singleMeasures.length; i += 2) {\n const group = createEmptyMeasureGroup()\n group.children = allMeasures.slice(i, i + 2)\n groups.push(group)\n }\n return groups as MeasureGroup[]\n}\n\nconst createEmptyMeasureGroup = (): MeasureGroup => {\n return {\n id: '',\n alias: '',\n children: [],\n }\n}\n","// Reshape Measures\nexport const FoldMeasureName = '__MeaName__'\nexport const FoldMeasureValue = '__MeaValue__'\nexport const FoldMeasureId = '__MeaId__'\n\n// Reshape Dimensions\nexport const UnfoldDimensionGroup = '__DimGroup__'\nexport const UnfoldDimensionGroupId = '__DimGroupID__'\n\nexport const Separator = '-'\n\nexport const ORIGINAL_DATA = '__OriginalData__'\n","import type { Dataset, Datum, Dimension, Measure } from 'src/types'\nimport type { UnfoldInfo } from 'src/types'\nimport { UnfoldDimensionGroup, Separator, UnfoldDimensionGroupId, FoldMeasureId } from './constant'\nimport { unique } from 'remeda'\n\n/**\n * TODO: 优化展开维度的性能\n * 展开指定的维度\n * @description 第一步: 根据指定的维度, 将多个维度展开为N个指标(取决于维值去重后的数量), 随后合并成一个维度.\n */\nexport const unfoldDimensions = (\n dataset: Dataset,\n dimensions: Dimension[],\n measures: Measure[],\n unfoldStartIndex: number = 0,\n unfoldGroupName: string = UnfoldDimensionGroup,\n unfoldGroupId: string = UnfoldDimensionGroupId,\n foldMeasureId: string = FoldMeasureId,\n dimensionsSeparator: string = Separator,\n): {\n dataset: Dataset\n unfoldInfo: UnfoldInfo\n} => {\n if (unfoldStartIndex < 0 || unfoldStartIndex >= dimensions.length) {\n throw new Error('unfoldStartIndex is out of range')\n }\n\n const dimensionsToBeUnfolded = dimensions.slice(unfoldStartIndex)\n const unfoldInfo: UnfoldInfo = {\n groupName: unfoldGroupName,\n groupId: unfoldGroupId,\n colorItems: [],\n colorIdMap: {},\n }\n\n // 指标为空或维度为空, 则不检测\n if (dimensions.length === 0 || measures.length === 0) {\n return {\n dataset,\n unfoldInfo: {\n groupName: unfoldGroupName,\n groupId: unfoldGroupId,\n colorItems: [],\n colorIdMap: {},\n },\n }\n }\n\n const colorItems = []\n const colorMap: Record<string, string> = {}\n for (let i = 0; i < dataset.length; i++) {\n const datum = dataset[i]\n const colorName = generateDimGroupName(dimensionsToBeUnfolded, datum, dimensionsSeparator)\n const colorId = datum[foldMeasureId]\n ? [colorName, datum[foldMeasureId] as string].join(dimensionsSeparator)\n : colorName\n datum[unfoldGroupName] = colorName\n datum[unfoldGroupId] = colorId\n colorItems.push(colorId)\n colorMap[colorId] = colorName\n }\n\n unfoldInfo.colorItems = unique(colorItems)\n unfoldInfo.colorIdMap = colorMap\n return {\n dataset,\n unfoldInfo,\n }\n}\n\n/**\n * 生成维度组合名称\n * @param dimensionsToBeGrouped 待分组的维度\n * @param datum 数据项\n * @param dimensionsSeparator 维度分隔符\n * @returns 维度组合名称\n */\nexport const generateDimGroupName = (dimensionsToBeGrouped: Dimension[], datum: Datum, dimensionsSeparator: string) => {\n return dimensionsToBeGrouped.map((dim) => String(datum[dim.id])).join(dimensionsSeparator)\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Dataset, FoldInfo, Dimension, Measures, DimensionTree } from 'src/types'\nimport { FoldMeasureId, FoldMeasureName, FoldMeasureValue, ORIGINAL_DATA } from './constant'\nimport { omit } from 'remeda'\n\n/**\n * 折叠指定的指标\n * @description 合并指定的指标为1个, 无论多少个, 都能转换为1个, 取名为fold, 意为折叠后混合在一起.\n */\nexport const foldMeasures = (\n dataset: Dataset,\n measures: Dimension[],\n measureId = FoldMeasureId,\n measureName = FoldMeasureName,\n measureValue = FoldMeasureValue,\n): {\n dataset: Dataset\n foldInfo: FoldInfo\n} => {\n const foldInfo: FoldInfo = {\n measureId,\n measureName,\n measureValue,\n foldMap: {},\n }\n const result: Dataset = new Array(dataset.length * measures.length) as Dataset\n let index = 0\n const ids = measures.map((d) => d.id)\n for (let i = 0; i < dataset.length; i++) {\n for (let j = 0; j < measures.length; j++) {\n const datum: Record<string, any> = omit({ ...dataset[i] }, ids)\n\n datum[ORIGINAL_DATA] = dataset[i]\n\n const measure = measures[j]\n const { id, alias } = measure\n\n datum[id] = dataset[i][id] as unknown\n datum[measureId] = id\n datum[measureName] = alias || id\n datum[measureValue] = dataset[i][id] as unknown\n\n foldInfo.foldMap[id] = alias\n result[index++] = datum\n }\n }\n\n return {\n dataset: result,\n foldInfo,\n }\n}\n\n/**\n * 折叠指定的指标组, 至多支持2层\n * @param dataset\n * @param measures\n * @param measureId\n * @param measureName\n * @param measureValue\n * @returns\n */\nexport const foldMeasureGroups = (\n dataset: Dataset,\n measures: Required<DimensionTree>,\n measureId = '__MeaId__',\n measureName = '__MeaName__',\n measureValue = '__MeaValue__',\n) => {\n const groups: Array<Measures> = []\n if (!measures) {\n return {\n dataset,\n }\n }\n\n // 没有分组, 直接折叠所有指标\n if (!measures.some((measure) => 'children' in measure)) {\n return foldMeasures(dataset, measures, measureId, measureName, measureValue)\n }\n\n measures.forEach((measure) => {\n if ('children' in measure && measure.children) {\n groups.push(measure.children)\n } else {\n groups.push([measure])\n }\n })\n\n // 一组返回一个dataset\n const datasetGroup = groups.map((measures) => {\n if (!measures) {\n return []\n }\n return foldMeasures(dataset, measures, measureId, measureName, measureValue)\n })\n\n return {\n datasetGroup,\n }\n}\n","import type { Dataset, Dimension, FoldInfo, Measure, UnfoldInfo } from 'src/types'\nimport { foldMeasures } from './foldMeasures'\nimport {\n UnfoldDimensionGroup,\n FoldMeasureId,\n FoldMeasureName,\n FoldMeasureValue,\n UnfoldDimensionGroupId,\n} from './constant'\nimport { unfoldDimensions } from './unfoldDimensions'\nimport { i18n } from '../i18n'\n\nconst emptyReshapeResult: {\n dataset: Dataset\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n} = {\n dataset: [],\n foldInfo: {\n foldMap: {},\n measureId: '',\n measureName: '',\n measureValue: '',\n },\n unfoldInfo: {\n groupName: '',\n groupId: '',\n colorItems: [],\n colorIdMap: {},\n },\n}\n/**\n * 数据重塑为2个维度1个指标\n * @param dataset\n * @param dimensions\n * @param measures\n * @returns\n */\nexport const dataReshapeFor2D1M = (\n dataset: Dataset,\n dimensions: Dimension[],\n measures: Measure[],\n options?: {\n foldMeasureId?: string\n foldMeasureName?: string\n foldMeasureValue?: string\n unfoldDimensionGroup?: string\n unfoldDimensionGroupId?: string\n },\n): {\n dataset: Dataset\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n} => {\n const {\n foldMeasureId = FoldMeasureId,\n foldMeasureName = FoldMeasureName,\n foldMeasureValue = FoldMeasureValue,\n unfoldDimensionGroup = UnfoldDimensionGroup,\n unfoldDimensionGroupId = UnfoldDimensionGroupId,\n } = options || {}\n if (dimensions.length === 0 && measures.length === 0) {\n return emptyReshapeResult\n }\n\n // 合并所有指标为1个指标\n const { dataset: foldedDataset, foldInfo } = foldMeasures(\n dataset,\n measures,\n foldMeasureId,\n foldMeasureName,\n foldMeasureValue,\n )\n\n if (dimensions.length === 0) {\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(\n foldedDataset,\n [\n { id: foldMeasureId, alias: i18n`指标Id`, location: 'dimension' },\n { id: foldMeasureName, alias: i18n`指标名称`, location: 'dimension' },\n ],\n [{ id: foldMeasureValue, alias: i18n`指标值` }],\n 1,\n unfoldDimensionGroup,\n unfoldDimensionGroupId,\n foldMeasureId,\n )\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n } else {\n const onlyOneMeasure = measures.length === 1\n const onlyOneDimension = dimensions.length === 1\n\n const dims = [...dimensions]\n if (!onlyOneMeasure || onlyOneDimension) {\n dims.push({ id: foldMeasureName, alias: i18n`指标名称`, location: 'dimension' })\n }\n\n // 展开指定的维度为指标\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(\n foldedDataset,\n dims,\n [{ id: foldMeasureValue, alias: i18n`指标值` }],\n 1,\n unfoldDimensionGroup,\n unfoldDimensionGroupId,\n foldMeasureId,\n )\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n }\n}\n","import type { Dataset, Dimension, FoldInfo, Measure, UnfoldInfo } from 'src/types'\nimport { foldMeasures } from './foldMeasures'\nimport {\n UnfoldDimensionGroup,\n FoldMeasureId,\n FoldMeasureName,\n FoldMeasureValue,\n UnfoldDimensionGroupId,\n} from './constant'\nimport { unfoldDimensions } from './unfoldDimensions'\nimport { i18n } from '../i18n'\n\nconst emptyReshapeResult = {\n dataset: [],\n foldInfo: {\n foldMap: {},\n measureId: '',\n measureName: '',\n measureValue: '',\n },\n unfoldInfo: {\n groupName: '',\n groupId: '',\n colorItems: [],\n colorIdMap: {},\n },\n}\n/**\n * 数据重塑为1个维度1个指标\n * @param dataset\n * @param dimensions\n * @param measures\n * @returns\n */\nexport const dataReshapeFor1D1M = (\n dataset: Dataset,\n dimensions: Dimension[],\n measures: Measure[],\n options?: {\n foldMeasureId?: string\n foldMeasureName?: string\n foldMeasureValue?: string\n unfoldDimensionGroup?: string\n unfoldDimensionGroupId?: string\n },\n): {\n dataset: Dataset\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n} => {\n const {\n foldMeasureId = FoldMeasureId,\n foldMeasureName = FoldMeasureName,\n foldMeasureValue = FoldMeasureValue,\n unfoldDimensionGroup = UnfoldDimensionGroup,\n unfoldDimensionGroupId = UnfoldDimensionGroupId,\n } = options || {}\n\n if (dimensions.length === 0 && measures.length === 0) {\n return emptyReshapeResult\n }\n\n // 合并所有指标为1个指标\n const { dataset: foldedDataset, foldInfo } = foldMeasures(\n dataset,\n measures,\n foldMeasureId,\n foldMeasureName,\n foldMeasureValue,\n )\n\n if (dimensions.length === 0) {\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(\n foldedDataset,\n [{ id: foldMeasureName, alias: i18n`指标名称`, location: 'dimension' }],\n [{ id: foldMeasureValue, alias: i18n`指标值` }],\n 0,\n unfoldDimensionGroup,\n unfoldDimensionGroupId,\n foldMeasureId,\n )\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n } else {\n const dims =\n measures.length === 1\n ? ([...dimensions] as Dimension[])\n : ([...dimensions, { id: foldMeasureName, alias: i18n`指标名称`, location: 'dimension' }] as Dimension[])\n // 展开指定的维度为指标\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(\n foldedDataset,\n dims,\n [{ id: foldMeasureValue, alias: i18n`指标值` }],\n 0,\n unfoldDimensionGroup,\n unfoldDimensionGroupId,\n foldMeasureId,\n )\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n }\n}\n","import type { Dataset, Dimension, FoldInfo, Measure, UnfoldInfo } from 'src/types'\nimport { foldMeasures } from './foldMeasures'\nimport {\n UnfoldDimensionGroup,\n FoldMeasureId,\n FoldMeasureName,\n FoldMeasureValue,\n UnfoldDimensionGroupId,\n} from './constant'\nimport { unfoldDimensions } from './unfoldDimensions'\nimport { i18n } from '../i18n'\n\nconst emptyReshapeResult = {\n dataset: [],\n foldInfo: {\n foldMap: {},\n measureId: '',\n measureName: '',\n measureValue: '',\n },\n unfoldInfo: {\n groupName: '',\n groupId: '',\n colorItems: [],\n colorIdMap: {},\n },\n}\n/**\n * 数据重塑为1个维度1个指标\n * @param dataset\n * @param dimensions\n * @param measures\n * @returns\n */\nexport const dataReshapeFor1D2M = (\n dataset: Dataset,\n dimensions: Dimension[],\n measures: Measure[],\n options?: {\n foldMeasureId?: string\n foldMeasureName?: string\n foldMeasureValue?: string\n unfoldDimensionGroup?: string\n unfoldDimensionGroupId?: string\n },\n): {\n dataset: Dataset\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n} => {\n const {\n foldMeasureId = FoldMeasureId,\n foldMeasureName = FoldMeasureName,\n foldMeasureValue = FoldMeasureValue,\n unfoldDimensionGroup = UnfoldDimensionGroup,\n unfoldDimensionGroupId = UnfoldDimensionGroupId,\n } = options || {}\n\n if (dimensions.length === 0 && measures.length === 0) {\n return emptyReshapeResult\n }\n\n // 合并所有指标为1个指标\n const { dataset: foldedDataset, foldInfo } = foldMeasures(\n dataset,\n measures.length > 1 ? measures.slice(1) : measures,\n foldMeasureId,\n foldMeasureName,\n foldMeasureValue,\n )\n\n if (dimensions.length === 0) {\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(\n foldedDataset,\n [{ id: foldMeasureValue, alias: i18n`指标值`, location: 'dimension' }],\n [{ id: foldMeasureValue, alias: i18n`指标值` }],\n 0,\n unfoldDimensionGroup,\n unfoldDimensionGroupId,\n foldMeasureId,\n )\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n } else {\n // 展开指定的维度为指标\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(\n foldedDataset,\n [...dimensions],\n [{ id: foldMeasureValue, alias: i18n`指标值` }],\n 0,\n unfoldDimensionGroup,\n unfoldDimensionGroupId,\n foldMeasureId,\n )\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n }\n}\n","import type { Dataset, Dimension, FoldInfo, Measure, UnfoldInfo } from 'src/types'\nimport {\n UnfoldDimensionGroup,\n FoldMeasureId,\n FoldMeasureName,\n FoldMeasureValue,\n UnfoldDimensionGroupId,\n} from './constant'\nimport { unfoldDimensions } from './unfoldDimensions'\nimport { i18n } from '../i18n'\n\nconst emptyReshapeResult = {\n dataset: [],\n foldInfo: {\n foldMap: {},\n measureId: '',\n measureName: '',\n measureValue: '',\n },\n unfoldInfo: {\n groupName: '',\n groupId: '',\n colorItems: [],\n colorIdMap: {},\n },\n}\n/**\n * 仅数据重塑为1个维度,不处理指标\n * @param dataset\n * @param dimensions\n * @param measures\n * @returns\n */\nexport const dataReshapeFor1D = (\n dataset: Dataset,\n dimensions: Dimension[],\n measures: Measure[],\n options?: {\n foldMeasureId?: string\n foldMeasureName?: string\n foldMeasureValue?: string\n unfoldDimensionGroup?: string\n unfoldDimensionGroupId?: string\n },\n): {\n dataset: Dataset\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n} => {\n const {\n foldMeasureId = FoldMeasureId,\n foldMeasureName = FoldMeasureName,\n foldMeasureValue = FoldMeasureValue,\n unfoldDimensionGroup = UnfoldDimensionGroup,\n unfoldDimensionGroupId = UnfoldDimensionGroupId,\n } = options || {}\n\n if (dimensions.length === 0 && measures.length === 0) {\n return emptyReshapeResult\n }\n\n if (dimensions.length === 0) {\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(\n dataset,\n [],\n [],\n 0,\n unfoldDimensionGroup,\n unfoldDimensionGroupId,\n foldMeasureId,\n )\n return {\n dataset: finalDataset,\n foldInfo: {\n foldMap: {},\n measureId: foldMeasureId,\n measureName: foldMeasureName,\n measureValue: foldMeasureValue,\n },\n unfoldInfo,\n }\n } else {\n // 展开指定的维度为指标\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(\n dataset,\n [...dimensions],\n [{ id: foldMeasureValue, alias: i18n`指标值` }],\n 0,\n unfoldDimensionGroup,\n unfoldDimensionGroupId,\n foldMeasureId,\n )\n return {\n dataset: finalDataset,\n foldInfo: {\n foldMap: {},\n measureId: foldMeasureId,\n measureName: foldMeasureName,\n measureValue: foldMeasureValue,\n },\n unfoldInfo,\n }\n }\n}\n","import type { Dataset, Measure } from 'src/types'\nimport type { UnfoldInfo } from 'src/types'\nimport { UnfoldDimensionGroup, UnfoldDimensionGroupId } from './constant'\nimport { unique } from 'remeda'\n\n/**\n * 展开0个维度的特殊情况, 折线图、面积图、雷达图只有指标没有维度的情况, 应该所有的指标应该作为一个维度\n * @description\n */\nexport const unfoldZeroDimensions = (\n dataset: Dataset,\n measures: Measure[],\n measureName: string,\n unfoldGroupName: string = UnfoldDimensionGroup,\n unfoldGroupId: string = UnfoldDimensionGroupId,\n): {\n dataset: Dataset\n unfoldInfo: UnfoldInfo\n} => {\n const unfoldInfo: UnfoldInfo = {\n groupName: unfoldGroupName,\n groupId: unfoldGroupId,\n colorItems: [],\n colorIdMap: {},\n }\n\n // 指标为空或维度为空, 则不检测\n if (measures.length === 0) {\n return {\n dataset,\n unfoldInfo: {\n groupName: unfoldGroupName,\n groupId: unfoldGroupId,\n colorItems: [],\n colorIdMap: {},\n },\n }\n }\n\n const colorItems = []\n const colorMap: Record<string, string> = {}\n for (let i = 0; i < dataset.length; i++) {\n const datum = dataset[i]\n const colorName = measureName\n const colorId = measureName\n datum[unfoldGroupName] = colorName\n datum[unfoldGroupId] = colorId\n colorItems.push(colorId)\n colorMap[colorId] = colorName\n }\n\n unfoldInfo.colorItems = unique(colorItems)\n unfoldInfo.colorIdMap = colorMap\n return {\n dataset,\n unfoldInfo,\n }\n}\n","import type { Dataset, Dimension, FoldInfo, Measure, UnfoldInfo } from 'src/types'\nimport { foldMeasures } from './foldMeasures'\nimport {\n UnfoldDimensionGroup,\n FoldMeasureId,\n FoldMeasureName,\n FoldMeasureValue,\n UnfoldDimensionGroupId,\n} from './constant'\nimport { unfoldDimensions } from './unfoldDimensions'\nimport { unfoldZeroDimensions } from './unfoldZeroDimensions'\nimport { i18n } from '../i18n'\n\nconst emptyReshapeResult: {\n dataset: Dataset\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n} = {\n dataset: [],\n foldInfo: {\n foldMap: {},\n measureId: '',\n measureName: '',\n measureValue: '',\n },\n unfoldInfo: {\n groupName: '',\n groupId: '',\n colorItems: [],\n colorIdMap: {},\n },\n}\n/**\n * 数据重塑为2个维度1个指标, 并且不根据指标名称展开出一个新维度\n * @param dataset\n * @param dimensions\n * @param measures\n * @returns\n */\nexport const dataReshapeFor2D1M0Name = (\n dataset: Dataset,\n dimensions: Dimension[],\n measures: Measure[],\n options?: {\n foldMeasureId?: string\n foldMeasureName?: string\n foldMeasureValue?: string\n unfoldDimensionGroup?: string\n unfoldDimensionGroupId?: string\n },\n): {\n dataset: Dataset\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n} => {\n const {\n foldMeasureId = FoldMeasureId,\n foldMeasureName = FoldMeasureName,\n foldMeasureValue = FoldMeasureValue,\n unfoldDimensionGroup = UnfoldDimensionGroup,\n unfoldDimensionGroupId = UnfoldDimensionGroupId,\n } = options || {}\n if (dimensions.length === 0 && measures.length === 0) {\n return emptyReshapeResult\n }\n\n // 合并所有指标为1个指标\n const { dataset: foldedDataset, foldInfo } = foldMeasures(\n dataset,\n measures,\n foldMeasureId,\n foldMeasureName,\n foldMeasureValue,\n )\n\n if (dimensions.length === 0) {\n const { dataset: finalDataset, unfoldInfo } = unfoldZeroDimensions(\n foldedDataset,\n [{ id: foldMeasureValue, alias: i18n`指标值` }],\n i18n`指标名称`,\n unfoldDimensionGroup,\n unfoldDimensionGroupId,\n )\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n } else {\n const onlyOneMeasure = measures.length === 1\n const onlyOneDimension = dimensions.length === 1\n\n const dims = [...dimensions]\n if (!onlyOneMeasure || onlyOneDimension) {\n dims.push({ id: foldMeasureName, alias: i18n`指标名称`, location: 'dimension' })\n }\n\n // 展开指定的维度为指标\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(\n foldedDataset,\n dims,\n [{ id: foldMeasureValue, alias: i18n`指标值` }],\n 1,\n unfoldDimensionGroup,\n unfoldDimensionGroupId,\n foldMeasureId,\n )\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n }\n}\n","import { dataReshapeFor2D1M } from 'src/dataReshape'\nimport type { AdvancedPipe } from 'src/types'\n\n/**\n * 数据重塑, 将任意维度、任意指标, 重塑为2个维度1个指标.\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const reshapeTo2D1M: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { dimensions, measures } = advancedVSeed\n\n if (!measures || !dimensions || !dataset) {\n return result\n }\n\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n\n const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor2D1M(dataset, dimensions, measures)\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: [\n {\n id: '2D1M',\n foldInfo,\n unfoldInfo,\n },\n ],\n dimensions,\n measures,\n }\n}\n","import { dataReshapeFor2D1M0Name } from 'src/dataReshape'\nimport type { AdvancedPipe } from 'src/types'\n\n/**\n * @description 数据重塑, 将任意维度、任意指标, 重塑为2个维度1个指标, 并且在0维度时, 合并所有指标为一个维度. 兼容折线图、面积图、雷达图只有指标, 没有维度的场景\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const reshapeTo2D1M0Name: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { dimensions, measures } = advancedVSeed\n\n if (!measures || !dimensions || !dataset) {\n return result\n }\n\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n\n const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor2D1M0Name(dataset, dimensions, measures)\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: [\n {\n id: '2D1M',\n foldInfo,\n unfoldInfo,\n },\n ],\n dimensions,\n measures,\n }\n}\n","import { dataReshapeFor1D1M } from 'src/dataReshape'\nimport type { AdvancedPipe } from 'src/types'\n\n/**\n * 数据重塑, 将任意维度、任意指标, 重塑为2个维度1个指标.\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const reshapeTo1D1M: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { dimensions, measures } = advancedVSeed\n if (!measures || !dimensions || !dataset) {\n return result\n }\n\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n\n const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor1D1M(dataset, dimensions, measures)\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: [\n {\n id: '1D1M',\n foldInfo,\n unfoldInfo,\n },\n ],\n }\n}\n","import { dataReshapeFor1D2M } from 'src/dataReshape'\nimport type { AdvancedPipe } from 'src/types'\n\n/**\n * 数据重塑, 将任意维度、任意指标, 重塑为1个维度2个指标.\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const reshapeTo1D2M: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { dimensions, measures } = advancedVSeed\n if (!measures || !dimensions || !dataset) {\n return result\n }\n\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n\n const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor1D2M(dataset, dimensions, measures)\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: [\n {\n id: '1D2M',\n foldInfo,\n unfoldInfo,\n },\n ],\n }\n}\n","import { dataReshapeFor1D } from 'src/dataReshape'\nimport type { AdvancedPipe } from 'src/types'\n\n/**\n * 数据重塑, 将任意维度、任意指标, 重塑为1个维度2个指标.\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const reshapeTo1D: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { dimensions, measures } = advancedVSeed\n if (!measures || !dimensions || !dataset) {\n return result\n }\n\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n\n const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor1D(dataset, dimensions, measures)\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: [\n {\n id: '1D2M',\n foldInfo,\n unfoldInfo,\n },\n ],\n }\n}\n","import { FoldMeasureId, FoldMeasureName, FoldMeasureValue, UnfoldDimensionGroup } from 'src/dataReshape/constant'\nimport { dataReshapeFor2D1M } from 'src/dataReshape'\nimport type { AdvancedPipe, Dataset, DatasetReshapeInfo, Dimensions, DimensionGroup } from 'src/types'\n\n/**\n * 数据重塑为透视结构, 如果存在指标分组, 则将数据按组划分. 如果存在行列维度, 则生成行列树结构.\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const pivotReshapeTo2D1M: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { measures } = advancedVSeed\n const dimensions = advancedVSeed.dimensions as Dimensions\n\n if (!measures || !dimensions) {\n return result\n }\n\n const measureGroups: DimensionGroup[] = []\n if (measures) {\n measures.forEach((measure: DimensionGroup) => {\n if (measure.children && measure.children.length > 0) {\n measureGroups.push(measure)\n }\n })\n }\n const commonDimensions = dimensions.filter((dim) => dim.location === 'dimension')\n\n const newDatasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n measureGroups.forEach((measureGroup) => {\n const measures = measureGroup.children\n if (!measures) {\n return\n }\n const groupId = measureGroup.id\n const {\n dataset: newSubDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeFor2D1M(dataset, commonDimensions, measures, {\n foldMeasureId: FoldMeasureId,\n foldMeasureName: FoldMeasureName,\n foldMeasureValue: FoldMeasureValue + groupId,\n unfoldDimensionGroup: UnfoldDimensionGroup,\n })\n const reshapeInfo = {\n id: groupId,\n foldInfo,\n unfoldInfo,\n }\n newDatasets.push(newSubDataset)\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n","import { FoldMeasureId, FoldMeasureName, FoldMeasureValue, UnfoldDimensionGroup } from 'src/dataReshape/constant'\nimport { dataReshapeFor2D1M0Name } from 'src/dataReshape'\nimport type { AdvancedPipe, Dataset, DatasetReshapeInfo, Dimensions, DimensionGroup } from 'src/types'\n\n/**\n * @description 数据重塑为透视结构, 如果存在指标分组, 则将数据按组划分. 如果存在行列维度, 则生成行列树结构. 并且在0维度时, 合并所有指标为一个维度. 兼容折线图、面积图、雷达图只有指标, 没有维度的场景\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const pivotReshapeTo2D1M0Name: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { measures } = advancedVSeed\n const dimensions = advancedVSeed.dimensions as Dimensions\n\n if (!measures || !dimensions) {\n return result\n }\n\n const measureGroups: DimensionGroup[] = []\n if (measures) {\n measures.forEach((measure: DimensionGroup) => {\n if (measure.children && measure.children.length > 0) {\n measureGroups.push(measure)\n }\n })\n }\n const commonDimensions = dimensions.filter((dim) => dim.location === 'dimension')\n\n const newDatasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n measureGroups.forEach((measureGroup) => {\n const measures = measureGroup.children\n if (!measures) {\n return\n }\n const groupId = measureGroup.id\n const {\n dataset: newSubDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeFor2D1M0Name(dataset, commonDimensions, measures, {\n foldMeasureId: FoldMeasureId,\n foldMeasureName: FoldMeasureName,\n foldMeasureValue: FoldMeasureValue + groupId,\n unfoldDimensionGroup: UnfoldDimensionGroup,\n })\n const reshapeInfo = {\n id: groupId,\n foldInfo,\n unfoldInfo,\n }\n newDatasets.push(newSubDataset)\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n","import { FoldMeasureId, FoldMeasureName, FoldMeasureValue, UnfoldDimensionGroup } from 'src/dataReshape/constant'\nimport { dataReshapeFor1D1M } from 'src/dataReshape'\nimport type { AdvancedPipe, Dataset, DatasetReshapeInfo, Dimensions, DimensionGroup } from 'src/types'\n\n/**\n * 数据重塑为透视结构, 如果存在指标分组, 则将数据按组划分. 如果存在行列维度, 则生成行列树结构.\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const pivotReshapeTo1D1M: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { measures } = advancedVSeed\n const dimensions = advancedVSeed.dimensions as Dimensions\n\n if (!measures || !dimensions) {\n return result\n }\n\n const measureGroups: DimensionGroup[] = []\n if (measures) {\n measures.forEach((measure: DimensionGroup) => {\n if (measure.children && measure.children.length > 0) {\n measureGroups.push(measure)\n }\n })\n }\n const newDatasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n measureGroups.forEach((measureGroup) => {\n const measures = measureGroup.children\n if (!measures) {\n return\n }\n\n const commonDimensions = dimensions.filter((dim) => dim.location === 'dimension')\n const groupId = measureGroup.id\n const {\n dataset: newSubDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeFor1D1M(dataset, commonDimensions, measures, {\n foldMeasureId: FoldMeasureId,\n foldMeasureName: FoldMeasureName,\n foldMeasureValue: FoldMeasureValue + groupId,\n unfoldDimensionGroup: UnfoldDimensionGroup,\n })\n const reshapeInfo = {\n id: groupId,\n foldInfo,\n unfoldInfo,\n }\n newDatasets.push(newSubDataset)\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n","import { FoldMeasureId, FoldMeasureName, FoldMeasureValue, UnfoldDimensionGroup } from 'src/dataReshape/constant'\nimport { dataReshapeFor1D2M } from 'src/dataReshape'\nimport type { AdvancedPipe, Dataset, DatasetReshapeInfo, Dimensions, DimensionGroup } from 'src/types'\n\n/**\n * 数据重塑为透视结构, 如果存在指标分组, 则将数据按组划分. 如果存在行列维度, 则生成行列树结构.\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const pivotReshapeTo1D2M: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { measures } = advancedVSeed\n const dimensions = advancedVSeed.dimensions as Dimensions\n\n if (!measures || !dimensions) {\n return result\n }\n\n const measureGroups: DimensionGroup[] = []\n if (measures) {\n measures.forEach((measure: DimensionGroup) => {\n if (measure.children && measure.children.length > 0) {\n measureGroups.push(measure)\n }\n })\n }\n const newDatasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n measureGroups.forEach((measureGroup) => {\n const measures = measureGroup.children\n if (!measures) {\n return\n }\n\n const commonDimensions = dimensions.filter((dim) => dim.location === 'dimension')\n const groupId = measureGroup.id\n const {\n dataset: newSubDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeFor1D2M(dataset, commonDimensions, measures, {\n foldMeasureId: FoldMeasureId,\n foldMeasureName: FoldMeasureName,\n foldMeasureValue: FoldMeasureValue + groupId,\n unfoldDimensionGroup: UnfoldDimensionGroup,\n })\n const reshapeInfo = {\n id: groupId,\n foldInfo,\n unfoldInfo,\n }\n newDatasets.push(newSubDataset)\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n","import { FoldMeasureId, FoldMeasureName, FoldMeasureValue, UnfoldDimensionGroup } from 'src/dataReshape/constant'\nimport { dataReshapeFor1D } from 'src/dataReshape'\nimport type { AdvancedPipe, Dataset, DatasetReshapeInfo, Dimensions, DimensionGroup } from 'src/types'\n\n/**\n * 数据重塑为透视结构, 如果存在指标分组, 则将数据按组划分\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const pivotReshapeTo1D: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { measures } = advancedVSeed\n const dimensions = advancedVSeed.dimensions as Dimensions\n\n if (!measures || !dimensions) {\n return result\n }\n\n const measureGroups: DimensionGroup[] = []\n if (measures) {\n measures.forEach((measure: DimensionGroup) => {\n if (measure.children && measure.children.length > 0) {\n measureGroups.push(measure)\n }\n })\n }\n const newDatasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n measureGroups.forEach((measureGroup) => {\n const measures = measureGroup.children\n if (!measures) {\n return\n }\n\n const commonDimensions = dimensions.filter((dim) => dim.location === 'dimension')\n const groupId = measureGroup.id\n const {\n dataset: newSubDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeFor1D(dataset, commonDimensions, measures, {\n foldMeasureId: FoldMeasureId,\n foldMeasureName: FoldMeasureName,\n foldMeasureValue: FoldMeasureValue + groupId,\n unfoldDimensionGroup: UnfoldDimensionGroup,\n })\n const reshapeInfo = {\n id: groupId,\n foldInfo,\n unfoldInfo,\n }\n newDatasets.push(newSubDataset)\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n","import type { AdvancedPipe, Dimensions } from 'src/types'\nimport type { Encoding } from 'src/types'\n\nexport const encodingXY: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const { datasetReshapeInfo, dimensions } = advancedVSeed\n if (!datasetReshapeInfo || !dimensions) {\n return result\n }\n\n const xDimension = (dimensions as Dimensions).find(\n (item) => item.location !== 'rowDimension' && item.location !== 'columnDimension',\n )\n\n const isZeroDimension = dimensions.length === 0\n\n const encoding = datasetReshapeInfo.reduce<Encoding>((prev, cur) => {\n const { foldInfo, unfoldInfo } = cur\n\n const x = [isZeroDimension ? foldInfo.measureName : xDimension?.id]\n const y = [foldInfo.measureValue]\n const group = [unfoldInfo.groupId]\n const color = [foldInfo.measureName]\n\n return [\n ...prev,\n {\n x,\n y,\n group,\n color,\n },\n ] as Encoding\n }, [])\n\n return {\n ...result,\n encoding,\n }\n}\n","import type { AdvancedPipe, Dimensions } from 'src/types'\nimport type { Encoding } from 'src/types'\n\nexport const encodingYX: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const { datasetReshapeInfo, dimensions } = advancedVSeed\n if (!datasetReshapeInfo || !dimensions) {\n return result\n }\n\n const yDimension = (dimensions as Dimensions).find(\n (item) => item.location !== 'rowDimension' && item.location !== 'columnDimension',\n )\n\n const isZeroDimension = dimensions.length === 0\n\n const encoding = datasetReshapeInfo.reduce<Encoding>((prev, cur) => {\n const { foldInfo, unfoldInfo } = cur\n\n const y = [isZeroDimension ? foldInfo.measureName : yDimension?.id]\n const x = [foldInfo.measureValue]\n const group = [unfoldInfo.groupId]\n const color = [foldInfo.measureName]\n\n return [\n ...prev,\n {\n x,\n y,\n group,\n color,\n },\n ] as Encoding\n }, [])\n\n return {\n ...result,\n encoding,\n }\n}\n","import { findFirstMeasure } from 'src/pipeline/utils'\nimport type { AdvancedPipe } from 'src/types'\nimport type { Encoding } from 'src/types'\n\nexport const encodingYY: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const { datasetReshapeInfo, measures } = advancedVSeed\n if (!datasetReshapeInfo || !measures) {\n return result\n }\n\n const firstMeasure = findFirstMeasure(measures)\n const encoding = datasetReshapeInfo.reduce<Encoding>((prev, cur) => {\n const { foldInfo, unfoldInfo } = cur\n\n const x = [firstMeasure?.id]\n const y = [foldInfo.measureValue]\n const group = [unfoldInfo.groupId]\n const color = [unfoldInfo.groupId]\n\n return [\n ...prev,\n {\n x,\n y,\n group,\n color,\n },\n ] as Encoding\n }, [])\n\n return {\n ...result,\n encoding,\n }\n}\n","import type { AdvancedPipe } from 'src/types'\nimport type { Encoding } from 'src/types'\n\nexport const encodingXYY: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const { datasetReshapeInfo, dimensions, measures } = advancedVSeed\n if (!datasetReshapeInfo || !dimensions || !measures) {\n return result\n }\n\n const encoding = datasetReshapeInfo.reduce<Encoding>((prev, cur, index) => {\n const measure = measures[index]\n if ('children' in measure) {\n const m1 = measure.children?.[0]\n const m2 = measure.children?.[1] || m1\n const { foldInfo, unfoldInfo } = cur\n\n const x = [unfoldInfo.groupId]\n const y = [m1?.id, m2?.id]\n const group = [unfoldInfo.groupId]\n const color = [foldInfo.measureName]\n\n return [\n ...prev,\n {\n x,\n y,\n group,\n color,\n },\n ] as Encoding\n } else {\n const m1 = measures[index]\n const m2 = measures[index + 1] || m1\n const { foldInfo, unfoldInfo } = cur\n\n const x = [unfoldInfo.groupId]\n const y = [m1.id, m2.id]\n const group = [unfoldInfo.groupId]\n const color = [foldInfo.measureName]\n\n return [\n ...prev,\n {\n x,\n y,\n group,\n color,\n },\n ] as Encoding\n }\n }, [])\n\n return {\n ...result,\n encoding,\n }\n}\n","import type { AdvancedPipe, Dimensions } from 'src/types'\nimport type { Encoding } from 'src/types'\n\nexport const encodingRose: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const { datasetReshapeInfo, dimensions, measures } = advancedVSeed\n if (!datasetReshapeInfo || !dimensions || !measures) {\n return result\n }\n\n const angleDimension = (dimensions as Dimensions).find(\n (item) => item.location !== 'rowDimension' && item.location !== 'columnDimension',\n )\n\n const is1D1M = dimensions.length === 1 && measures.length === 1\n const isZeroDimension = dimensions.length === 0\n\n const encoding = datasetReshapeInfo.reduce<Encoding>((prev, cur) => {\n const { foldInfo, unfoldInfo } = cur\n\n const radius = [foldInfo.measureValue]\n const angle = [isZeroDimension ? foldInfo.measureName : angleDimension?.id]\n const group = [is1D1M ? angleDimension?.id : unfoldInfo.groupId]\n const color = [is1D1M ? angleDimension?.id : unfoldInfo.groupId]\n\n return [\n ...prev,\n {\n angle,\n radius,\n group,\n color,\n },\n ] as Encoding\n }, [])\n\n return {\n ...result,\n encoding,\n }\n}\n","import type { AdvancedPipe } from 'src/types'\nimport type { Encoding } from 'src/types'\n\nexport const encodingPie: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const { datasetReshapeInfo, dimensions } = advancedVSeed\n if (!datasetReshapeInfo || !dimensions) {\n return result\n }\n\n const encoding = datasetReshapeInfo.reduce<Encoding>((prev, cur) => {\n const { foldInfo, unfoldInfo } = cur\n\n const radius = [foldInfo.measureValue]\n const angle = [unfoldInfo.groupId]\n const group = [unfoldInfo.groupId]\n const color = [unfoldInfo.groupId]\n\n return [\n ...prev,\n {\n angle,\n radius,\n group,\n color,\n },\n ] as Encoding\n }, [])\n\n return {\n ...result,\n encoding,\n }\n}\n","import type { AdvancedPipe, Dimensions } from 'src/types'\nimport type { Encoding } from 'src/types'\n\nexport const encodingAR: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const { datasetReshapeInfo, dimensions, measures } = advancedVSeed\n if (!datasetReshapeInfo || !dimensions || !measures) {\n return result\n }\n\n const angleDimension = (dimensions as Dimensions).find(\n (item) => item.location !== 'rowDimension' && item.location !== 'columnDimension',\n )\n\n const isZeroDimension = dimensions.length === 0\n\n const encoding = datasetReshapeInfo.reduce<Encoding>((prev, cur) => {\n const { foldInfo, unfoldInfo } = cur\n\n const angle = [isZeroDimension ? foldInfo.measureName : angleDimension?.id]\n const radius = [foldInfo.measureValue]\n const group = [unfoldInfo.groupId]\n const color = [unfoldInfo.groupId]\n\n return [\n ...prev,\n {\n angle,\n radius,\n group,\n color,\n },\n ] as Encoding\n }, [])\n\n return {\n ...result,\n encoding,\n }\n}\n","import type { AdvancedPipe } from 'src/types'\nimport type { Encoding } from 'src/types'\n\nexport const encodingFunnel: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const { datasetReshapeInfo, dimensions } = advancedVSeed\n if (!datasetReshapeInfo || !dimensions) {\n return result\n }\n\n const encoding = datasetReshapeInfo.reduce<Encoding>((prev, cur) => {\n const { foldInfo, unfoldInfo } = cur\n\n const size = [foldInfo.measureValue]\n const group = [unfoldInfo.groupId]\n const color = [foldInfo.measureValue]\n\n return [\n ...prev,\n {\n size,\n group,\n color,\n },\n ] as Encoding\n }, [])\n\n return {\n ...result,\n encoding,\n }\n}\n","import { pick } from 'remeda'\nimport type { AdvancedPipe, AdvancedVSeed, Config } from 'src/types'\n\nexport const lineConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const config = pick(vseed, [\n 'backgroundColor',\n 'color',\n 'label',\n 'legend',\n 'tooltip',\n 'xAxis',\n 'yAxis',\n 'crosshairLine',\n ]) as Config['line']\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n\nexport const columnConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const config = pick(vseed, [\n 'backgroundColor',\n 'color',\n 'label',\n 'legend',\n 'tooltip',\n 'xAxis',\n 'yAxis',\n 'crosshairRect',\n 'stackCornerRadius',\n ]) as Config['column']\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n\nexport const pieConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const config = pick(vseed, ['backgroundColor', 'color', 'label', 'legend', 'tooltip']) as Config['pie']\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n\nexport const areaConfig: AdvancedPipe = lineConfig\nexport const areaPercentConfig: AdvancedPipe = lineConfig\nexport const scatterConfig: AdvancedPipe = lineConfig\n\nexport const barConfig: AdvancedPipe = columnConfig\nexport const barParallelConfig: AdvancedPipe = columnConfig\nexport const barPercentConfig: AdvancedPipe = columnConfig\nexport const columnParallelConfig: AdvancedPipe = columnConfig\nexport const columnPercentConfig: AdvancedPipe = columnConfig\n\nexport const donutConfig: AdvancedPipe = pieConfig\nexport const roseConfig: AdvancedPipe = pieConfig\nexport const roseParallelConfig: AdvancedPipe = pieConfig\nexport const funnelConfig: AdvancedPipe = pieConfig\nexport const heatmapConfig: AdvancedPipe = pieConfig\nexport const radarConfig: AdvancedPipe = pieConfig","import { clone, mergeDeep, omit } 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 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","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 { pick } from 'remeda'\nimport type { AdvancedPipe, AdvancedVSeed } from 'src/types'\n\nexport const markStyle: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n\n const markStyle = pick(vseed, ['barStyle', 'pointStyle', 'lineStyle', 'areaStyle']) as AdvancedVSeed['markStyle']\n\n return { ...advancedVSeed, markStyle }\n}\n","import { pick } from 'remeda'\nimport type { AdvancedPipe, AdvancedVSeed } from 'src/types'\n\nexport const annotation: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const annotation = pick(vseed, [\n 'annotationPoint',\n 'annotationHorizontalLine',\n 'annotationVerticalLine',\n 'annotationArea',\n ]) as AdvancedVSeed['annotation']\n\n return { ...advancedVSeed, annotation }\n}\n","import { sort, unique } from 'remeda'\nimport { ORIGINAL_DATA } from 'src/dataReshape'\nimport type { AdvancedPipe, Dataset, Datum, Line, SortAxis, SortLegend } from 'src/types'\n\nexport const sortXBandAxis: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { sortAxis, dataset } = vseed as Line\n const { encoding } = advancedVSeed\n const xField = encoding?.[0]?.x?.[0]\n if (!sortAxis || !xField) {\n return advancedVSeed\n }\n if (!result.analysis) result.analysis = {}\n if (!result.analysis.orderMapping) result.analysis.orderMapping = {}\n\n const axisOrderResult = calcOrder(sortAxis, xField, dataset)\n\n result.analysis.orderMapping[xField] = axisOrderResult\n\n return result\n}\n\nexport const sortYBandAxis: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { sortAxis, dataset } = vseed as Line\n const { encoding } = advancedVSeed\n const yField = encoding?.[0]?.y?.[0]\n if (!sortAxis || !yField) {\n return advancedVSeed\n }\n if (!result.analysis) result.analysis = {}\n if (!result.analysis.orderMapping) result.analysis.orderMapping = {}\n\n const axisOrderResult = calcOrder(sortAxis, yField, dataset)\n\n result.analysis.orderMapping[yField] = axisOrderResult\n\n return result\n}\n\nexport const sortLegend: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { sortLegend } = vseed as Line\n const { datasetReshapeInfo } = advancedVSeed\n const groupField = datasetReshapeInfo?.[0]?.unfoldInfo?.groupId\n const colorIdMap = datasetReshapeInfo?.[0]?.unfoldInfo?.colorIdMap\n const colorItems = datasetReshapeInfo?.[0]?.unfoldInfo?.colorItems\n if (!sortLegend || !groupField || !colorIdMap || !colorItems) {\n return advancedVSeed\n }\n\n if (!result.analysis) result.analysis = {}\n if (!result.analysis.orderMapping) result.analysis.orderMapping = {}\n\n if (sortLegend.customOrder) {\n const nameMap = Object.keys(colorIdMap).reduce<Record<string, string>>((pre, cur) => {\n pre[colorIdMap[cur]] = cur\n return pre\n }, {})\n\n // 先根据名称匹配, 若名称不存在, 则根据id匹配, 从而兼容名称和id的两种情况\n const orderRes = sortLegend.customOrder.map((itemNameOrId) =>\n nameMap[itemNameOrId] ? nameMap[itemNameOrId] : itemNameOrId,\n )\n result.analysis.orderMapping[groupField] = orderRes\n return result\n }\n\n const dataset = advancedVSeed.dataset?.flat(2)\n\n const orderRes = calcOrder(sortLegend, groupField, dataset || [])\n result.analysis.orderMapping[groupField] = orderRes\n\n return result\n}\n\nconst calcOrder = (sortAxis: SortAxis | SortLegend, id: string, dataset: Dataset): string[] => {\n if (sortAxis.customOrder) {\n return sortAxis.customOrder\n }\n\n const order = sortAxis.order || 'asc'\n const orderBy = sortAxis.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 type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n encodingXY,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n lineConfig,\n annotation,\n markStyle,\n sortXBandAxis,\n sortLegend,\n reshapeTo2D1M0Name,\n pivotReshapeTo2D1M0Name,\n} from '../pipes'\n\nexport const lineAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M0Name], [pivotReshapeTo2D1M0Name]),\n encodingXY,\n sortXBandAxis,\n sortLegend,\n lineConfig,\n theme,\n markStyle,\n annotation\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n encodingYX,\n theme,\n autoMeasures,\n autoDimensions,\n reshapeTo2D1M,\n pivotReshapeTo2D1M,\n pivotAdapter,\n barConfig,\n markStyle,\n annotation,\n sortYBandAxis,\n sortLegend,\n} from '../pipes'\n\nexport const barAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingYX,\n sortYBandAxis,\n sortLegend,\n barConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n encodingYX,\n initAdvancedVSeed,\n reshapeTo2D1M,\n theme,\n pivotAdapter,\n pivotReshapeTo2D1M,\n barParallelConfig,\n markStyle,\n annotation,\n sortYBandAxis,\n sortLegend,\n} from '../pipes'\n\nexport const barParallelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingYX,\n sortYBandAxis,\n sortLegend,\n barParallelConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n encodingYX,\n initAdvancedVSeed,\n reshapeTo2D1M,\n theme,\n pivotAdapter,\n pivotReshapeTo2D1M,\n barPercentConfig,\n markStyle,\n annotation,\n sortYBandAxis,\n sortLegend,\n} from '../pipes'\n\nexport const barPercentAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingYX,\n sortYBandAxis,\n sortLegend,\n barPercentConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n encodingXY,\n initAdvancedVSeed,\n reshapeTo2D1M,\n theme,\n pivotAdapter,\n columnConfig,\n markStyle,\n annotation,\n pivotReshapeTo2D1M,\n sortXBandAxis,\n sortLegend,\n} from '../pipes'\n\nexport const columnAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingXY,\n sortXBandAxis,\n sortLegend,\n columnConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n encodingXY,\n initAdvancedVSeed,\n reshapeTo2D1M,\n theme,\n pivotAdapter,\n pivotReshapeTo2D1M,\n columnParallelConfig,\n markStyle,\n annotation,\n sortXBandAxis,\n sortLegend,\n} from '../pipes'\n\nexport const columnParallelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingXY,\n sortXBandAxis,\n sortLegend,\n columnParallelConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n encodingXY,\n initAdvancedVSeed,\n theme,\n reshapeTo2D1M,\n pivotReshapeTo2D1M,\n pivotAdapter,\n columnPercentConfig,\n markStyle,\n annotation,\n sortXBandAxis,\n sortLegend,\n} from '../pipes'\n\nexport const columnPercentAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingXY,\n sortXBandAxis,\n sortLegend,\n columnPercentConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n encodingXY,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n areaConfig,\n annotation,\n markStyle,\n sortXBandAxis,\n sortLegend,\n reshapeTo2D1M0Name,\n pivotReshapeTo2D1M0Name,\n} from '../pipes'\n\nexport const areaAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M0Name], [pivotReshapeTo2D1M0Name]),\n encodingXY,\n sortXBandAxis,\n sortLegend,\n areaConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n encodingXY,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n areaPercentConfig,\n annotation,\n markStyle,\n sortXBandAxis,\n sortLegend,\n reshapeTo2D1M0Name,\n pivotReshapeTo2D1M0Name,\n} from '../pipes'\n\nexport const areaPercentAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M0Name], [pivotReshapeTo2D1M0Name]),\n encodingXY,\n sortXBandAxis,\n sortLegend,\n areaPercentConfig,\n theme,\n markStyle,\n annotation\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n areaConfig,\n annotation,\n sortXBandAxis,\n autoMeasuresBy2M1Group,\n encodingXYY,\n reshapeTo1D,\n pivotReshapeTo1D,\n markStyle,\n} from '../pipes'\n\nexport const areaRangeAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasuresBy2M1Group,\n autoDimensions,\n pivotAdapter([reshapeTo1D], [pivotReshapeTo1D]),\n encodingXYY,\n sortXBandAxis,\n areaConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n reshapeTo1D1M,\n pivotReshapeTo1D1M,\n encodingPie,\n pieConfig,\n annotation,\n} from '../pipes'\n\nexport const pieAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo1D1M], [pivotReshapeTo1D1M]),\n encodingPie,\n pieConfig,\n theme,\n annotation\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n reshapeTo1D1M,\n pivotReshapeTo1D1M,\n encodingPie,\n annotation,\n donutConfig,\n} from '../pipes'\n\nexport const donutAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo1D1M], [pivotReshapeTo1D1M]),\n encodingPie,\n donutConfig,\n theme,\n annotation\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n initAdvancedVSeed,\n reshapeTo2D1M,\n theme,\n pivotAdapter,\n markStyle,\n annotation,\n roseConfig,\n encodingRose,\n pivotReshapeTo2D1M,\n} from '../pipes'\n\nexport const roseAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingRose,\n roseConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n initAdvancedVSeed,\n reshapeTo2D1M,\n theme,\n pivotAdapter,\n pivotReshapeTo2D1M,\n markStyle,\n annotation,\n roseParallelConfig,\n encodingRose,\n} from '../pipes'\n\nexport const roseParallelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingRose,\n roseParallelConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n reshapeTo1D1M,\n pivotReshapeTo1D1M,\n annotation,\n encodingFunnel,\n funnelConfig,\n} from '../pipes'\n\nexport const funnelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo1D1M], [pivotReshapeTo1D1M]),\n encodingFunnel,\n funnelConfig,\n theme,\n annotation,\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n annotation,\n markStyle,\n scatterConfig,\n reshapeTo1D2M,\n pivotReshapeTo1D2M,\n encodingYY,\n} from '../pipes'\n\nexport const scatterAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo1D2M], [pivotReshapeTo1D2M]),\n encodingYY,\n scatterConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { AdvancedPipe, Dimensions } from 'src/types'\nimport type { Encoding } from 'src/types'\n\nexport const encodingMatrix: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const { datasetReshapeInfo, dimensions } = advancedVSeed\n if (!datasetReshapeInfo || !dimensions) {\n return result\n }\n\n const xDimension = (dimensions as Dimensions).find(\n (item) => item.location !== 'rowDimension' && item.location !== 'columnDimension',\n )\n\n const isZeroDimension = dimensions.length === 0\n\n const encoding = datasetReshapeInfo.reduce<Encoding>((prev, cur) => {\n const { foldInfo, unfoldInfo } = cur\n\n const x = [isZeroDimension ? foldInfo.measureName : xDimension?.id]\n const y = [unfoldInfo.groupName]\n const color = [foldInfo.measureValue]\n\n return [\n ...prev,\n {\n x,\n y,\n color,\n },\n ] as Encoding\n }, [])\n\n return {\n ...result,\n encoding,\n }\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n initAdvancedVSeed,\n reshapeTo2D1M,\n theme,\n pivotAdapter,\n pivotReshapeTo2D1M,\n annotation,\n markStyle,\n sortXBandAxis,\n heatmapConfig,\n} from '../pipes'\nimport { encodingMatrix } from '../pipes/encoding/encodingMatrix'\n\nexport const heatmapAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingMatrix,\n sortXBandAxis,\n heatmapConfig,\n theme,\n markStyle,\n annotation\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n annotation,\n markStyle,\n sortLegend,\n radarConfig,\n encodingAR,\n reshapeTo2D1M0Name,\n pivotReshapeTo2D1M0Name,\n} from '../pipes'\n\nexport const radarAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M0Name], [pivotReshapeTo2D1M0Name]),\n encodingAR,\n // sortXBandAxis,\n sortLegend,\n radarConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { AdvancedPipe, Datum } from 'src/types'\n\nexport const autoMeasures: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { measures, dataset } = vseed\n\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return result\n }\n\n if (measures && measures.length > 0) {\n result.measures = measures\n return result\n }\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n result.measures = Object.keys(sample)\n .filter((key) => {\n return top100dataset.some((item) => typeof item[key] === 'number') && !['', null, undefined].includes(key)\n })\n .map((measure) => ({\n id: measure,\n alias: measure,\n }))\n\n return result\n}\n","import { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Datum } from 'src/types'\n\nexport const autoDimensions: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dimensions, dataset } = vseed\n\n const measures = findAllMeasures(advancedVSeed.measures)\n\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return result\n }\n\n if (dimensions && dimensions.length > 0) {\n result.dimensions = dimensions\n return result\n }\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n result.dimensions = Object.keys(sample)\n .filter(\n (key) =>\n top100dataset.some((item) => typeof item[key] === 'string') &&\n !['', null, undefined].includes(key) &&\n !measures.some((measure) => measure.id === key),\n )\n .map((dim) => ({\n id: dim,\n alias: dim,\n location: 'dimension',\n }))\n\n return result\n}\n","import { findAllDimensions, findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Datum, Dimensions, Measures } from 'src/types'\n\nexport const autoPivotDimensions: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dimensions, dataset } = vseed\n\n const measures = findAllMeasures(advancedVSeed.measures as Measures)\n\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return result\n }\n\n if (dimensions && dimensions.length > 0) {\n const newDimensions = findAllDimensions(dimensions) as Dimensions\n result.dimensions = newDimensions.map((item, index) => {\n if (item.location === 'rowDimension' || item.location === 'columnDimension') {\n return item\n }\n return {\n ...item,\n location: index % 2 === 0 ? 'columnDimension' : 'rowDimension',\n }\n }) as Dimensions\n\n return result\n }\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n let i = 0\n result.dimensions = Object.keys(sample)\n .filter(\n (key) =>\n top100dataset.some((item) => typeof item[key] === 'string') &&\n !['', null, undefined].includes(key) &&\n !measures.some((measure) => measure.id === key),\n )\n .map((dim) => ({\n id: dim,\n alias: dim,\n location: i++ % 2 === 0 ? 'columnDimension' : 'rowDimension',\n })) as Dimensions\n\n return result\n}\n","import { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Datum, Measures } from 'src/types'\n\nexport const autoPivotMeasures: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const measures = findAllMeasures(vseed.measures as Measures)\n\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return result\n }\n\n if (measures && measures.length > 0) {\n result.measures = findAllMeasures(measures)\n return result\n }\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n result.measures = Object.keys(sample)\n .filter((key) => {\n return top100dataset.some((item) => typeof item[key] === 'number') && !['', null, undefined].includes(key)\n })\n .map((measure) => ({\n id: measure,\n alias: measure,\n }))\n\n return result\n}\n","import type { AdvancedPipe, AdvancedVSeed } from 'src/types'\n\nexport const initAdvancedVSeed: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType, locale } = vseed\n return {\n ...advancedVSeed,\n chartType,\n locale: locale || 'zh-CN',\n } as AdvancedVSeed\n}\n","import type { AdvancedPipe } 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 type { AdvancedPipeline } from 'src/types'\nimport { theme } from '../../chart/pipes'\nimport { autoPivotDimensions, autoPivotMeasures, initAdvancedVSeed, records } from '../pipes'\n\nexport const pivotTableAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoPivotMeasures,\n autoPivotDimensions,\n records,\n theme,\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport { initAdvancedVSeed, autoDimensions, autoMeasures, records } from '../pipes'\nimport { theme } from '../../chart/pipes'\n\nexport const tableAdvancedPipeline: AdvancedPipeline = [initAdvancedVSeed, autoMeasures, autoDimensions, records, theme]\n","import type { ISpec } from '@visactor/vchart'\nimport { isPivotChart } from 'src/pipeline/utils'\nimport type { SpecPipe } from 'src/types'\n\nexport const datasetYX: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { encoding, analysis, datasetReshapeInfo } = advancedVSeed\n const { orderMapping = {} } = analysis ?? {}\n const angle = encoding[0]?.angle?.[0]\n const y = encoding[0]?.y?.[0]\n const group = encoding[0]?.group?.[0]\n const id = datasetReshapeInfo[0].id\n\n const fields: Record<string, object> = {}\n if (angle) {\n fields[angle] = {\n sortIndex: 0,\n }\n }\n if (y) {\n const order = orderMapping[y]\n if (order) {\n fields[y] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[y] = {\n sortIndex: 0,\n }\n }\n }\n if (group) {\n const order = orderMapping[group]\n if (order) {\n fields[group] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[group] = {\n sortIndex: 0,\n }\n }\n }\n\n return {\n ...spec,\n data: {\n id,\n // 透视表不使用 dataValues\n values: isPivotChart(vseed) ? undefined : advancedVSeed.dataset,\n fields: fields,\n },\n } as ISpec\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { isPivotChart } from 'src/pipeline/utils'\nimport type { SpecPipe } from 'src/types'\n\nexport const datasetXY: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { encoding, analysis, datasetReshapeInfo } = advancedVSeed\n const { orderMapping = {} } = analysis ?? {}\n const angle = encoding[0]?.angle?.[0]\n const x = encoding[0]?.x?.[0]\n const group = encoding[0]?.group?.[0]\n const id = datasetReshapeInfo[0].id\n\n const fields: Record<string, object> = {}\n if (angle) {\n fields[angle] = {\n sortIndex: 0,\n }\n }\n if (x) {\n const order = orderMapping[x]\n if (order) {\n fields[x] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[x] = {\n sortIndex: 0,\n }\n }\n }\n\n if (group) {\n const order = orderMapping[group]\n if (order) {\n fields[group] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[group] = {\n sortIndex: 0,\n }\n }\n }\n\n return {\n ...spec,\n data: {\n id,\n // 透视表不使用 dataValues\n values: isPivotChart(vseed) ? undefined : advancedVSeed.dataset,\n fields: fields,\n },\n } as ISpec\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { SpecPipe } from 'src/types'\n\nexport const datasetPivot: SpecPipe = (spec, context) => {\n const result = { ...spec } as PivotChartConstructorOptions\n const { advancedVSeed } = context\n const { dataset, datasetReshapeInfo } = advancedVSeed\n const records = dataset.reduce((pre, cur, index) => {\n const id = datasetReshapeInfo[index].id\n pre[id] = cur\n return pre\n }, {})\n return {\n ...result,\n records: records,\n } as PivotChartConstructorOptions\n}\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initColumn: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n\n result.type = 'bar'\n result.direction = 'vertical'\n result.xField = encoding[0].x[0]\n result.yField = encoding[0].y[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initBar: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n\n result.type = 'bar'\n result.direction = 'horizontal'\n result.yField = encoding[0].y?.[0]\n result.xField = encoding[0].x?.[0]\n result.seriesField = encoding[0].group?.[0]\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initBarParallel: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { encoding, datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n\n result.type = 'bar'\n result.direction = 'horizontal'\n result.yField = [encoding[0].y[0], unfoldInfo.groupName] as string[]\n result.xField = encoding[0].x[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { IAreaChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initArea: SpecPipe = (spec, context) => {\n const result = { ...spec } as IAreaChartSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n\n result.type = 'area'\n result.direction = 'vertical'\n result.xField = encoding[0].x[0]\n result.yField = encoding[0].y[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { ILineSeriesSpec, IRangeAreaSeriesSpec } from '@visactor/vchart'\nimport type { Color, SpecPipe } from 'src/types'\n\nexport const initAreaRange: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRangeAreaSeriesSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n const { color } = advancedVSeed.config.areaRange as {\n color: Color\n }\n\n result.type = 'rangeArea'\n result.direction = 'vertical'\n result.stack = false\n result.xField = encoding[0].x[0]\n result.yField = [encoding[0].y[0], encoding[0].y[1]]\n\n result.animation = true\n result.area = {\n style: {\n fill: color.colorScheme?.[0],\n },\n }\n\n return result\n}\n\nexport const initAreaRangeLine1: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineSeriesSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n const { color } = advancedVSeed.config.areaRange as {\n color: Color\n }\n result.type = 'line'\n result.direction = 'vertical'\n result.stack = false\n result.xField = encoding[0].x[0]\n result.yField = [encoding[0].y[0]]\n\n result.animation = true\n result.line = {\n style: {\n stroke: color.colorScheme?.[0],\n },\n }\n result.point = {\n style: {\n visible: false,\n fill: color.colorScheme?.[0],\n },\n }\n return result\n}\n\nexport const initAreaRangeLine2: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineSeriesSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n const { color } = advancedVSeed.config.areaRange as {\n color: Color\n }\n result.type = 'line'\n result.direction = 'vertical'\n result.stack = false\n result.xField = encoding[0].x[0]\n result.yField = [encoding[0].y[1]]\n\n result.animation = true\n result.line = {\n style: {\n stroke: color.colorScheme?.[0],\n },\n }\n result.point = {\n style: {\n visible: false,\n fill: color.colorScheme?.[0],\n },\n }\n return result\n}\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initLine: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n\n result.type = 'line'\n result.direction = 'vertical'\n result.xField = encoding[0].x[0]\n result.yField = encoding[0].y[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initColumnParallel: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { encoding, datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n\n result.type = 'bar'\n result.direction = 'vertical'\n result.xField = [encoding[0].x[0], unfoldInfo.groupName]\n result.yField = encoding[0].y[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { IPieChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initPie: SpecPipe = (spec, context) => {\n const result = { ...spec } as IPieChartSpec\n const { advancedVSeed } = context\n const { encoding, dataset } = advancedVSeed\n\n if (!encoding[0].angle || !encoding[0].radius || !encoding[0].group) {\n return result\n }\n\n const showStroke = dataset.length > 20\n\n result.type = 'pie'\n result.outerRadius = 0.8\n result.innerRadius = 0\n result.valueField = encoding[0].radius[0]\n result.categoryField = encoding[0].angle[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.pie = {\n style: {\n stroke: '#ffffff',\n lineWidth: showStroke ? 1 : 0,\n centerOffset: 0,\n },\n state: {\n hover: {\n centerOffset: 5,\n outerRadius: result.outerRadius * 1.1,\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'\n\nexport const initDonut: SpecPipe = (spec, context) => {\n const result = { ...spec } as IPieChartSpec\n const { advancedVSeed } = context\n const { encoding, dataset } = advancedVSeed\n\n if (!encoding[0].angle || !encoding[0].radius || !encoding[0].group) {\n return result\n }\n const showStroke = dataset.length > 20\n\n result.type = 'pie'\n result.outerRadius = 0.8\n result.innerRadius = result.outerRadius * 0.8\n result.valueField = encoding[0].radius[0]\n result.categoryField = encoding[0].angle[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n\n result.pie = {\n style: {\n stroke: '#ffffff',\n lineWidth: showStroke ? 1 : 0,\n },\n state: {\n hover: {\n outerRadius: result.outerRadius * 1.1,\n },\n },\n }\n\n result.animation = true\n\n return result\n}\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initRose: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRoseChartSpec\n const { advancedVSeed } = context\n const { encoding, dataset, datasetReshapeInfo } = advancedVSeed\n const { foldInfo } = datasetReshapeInfo[0]\n if (!encoding[0].radius || !encoding[0].angle || !encoding[0].group) {\n return result\n }\n\n result.type = 'rose'\n result.categoryField = encoding[0].angle[0]\n result.valueField = encoding[0].radius[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n result.outerRadius = 0.9\n result.innerRadius = 0\n\n const hasNegativeValue = dataset.flat().find((d) => d[foldInfo.measureValue] < 0)\n if (hasNegativeValue) {\n result.innerRadius = 0.05\n }\n\n result.rose = {\n style: {\n stroke: '#ffffff',\n lineWidth: 1,\n },\n state: {\n hover: {\n lineWidth: 1,\n fillOpacity: 0.6,\n },\n },\n }\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initRoseParallel: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRoseChartSpec\n const { advancedVSeed } = context\n const { encoding, datasetReshapeInfo, dataset } = advancedVSeed\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n if (!encoding[0].radius || !encoding[0].angle || !encoding[0].group) {\n return result\n }\n\n result.type = 'rose'\n result.categoryField = [encoding[0].angle[0], unfoldInfo.groupName]\n result.valueField = encoding[0].radius[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n\n result.outerRadius = 0.9\n result.innerRadius = 0\n\n const hasNegativeValue = dataset.flat().find((d) => d[foldInfo.measureValue] < 0)\n if (hasNegativeValue) {\n result.innerRadius = 0.05\n }\n\n result.rose = {\n style: {\n stroke: '#ffffff',\n lineWidth: 1,\n },\n state: {\n hover: {\n lineWidth: 1,\n fillOpacity: 0.6,\n },\n },\n }\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n","import type { IScatterChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initScatter: SpecPipe = (spec, context) => {\n const result = { ...spec } as IScatterChartSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n\n result.type = 'scatter'\n result.direction = 'vertical'\n result.xField = encoding[0].x[0]\n result.yField = encoding[0].y[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n","import type { IRadarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initRadar: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRadarChartSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].angle || !encoding[0].radius || !encoding[0].group) {\n return result\n }\n\n result.type = 'radar'\n result.angleField = encoding[0].angle[0]\n result.radiusField = encoding[0].radius[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { IFunnelChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initFunnel: SpecPipe = (spec, context) => {\n const result = { ...spec } as IFunnelChartSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].size || !encoding[0].group || !encoding[0].color) {\n return result\n }\n\n result.type = 'funnel'\n result.valueField = encoding[0].size[0]\n result.categoryField = encoding[0].group[0]\n result.padding = 0\n result.isTransform = true\n result.shape = 'rect'\n result.maxSize = '75%'\n result.minSize = '10%'\n result.region = [\n {\n clip: true,\n },\n ]\n result.funnel = {\n style: {\n cornerRadius: 4,\n fill: {\n field: encoding[0].color[0],\n scale: 'color',\n },\n },\n state: {\n hover: {\n fillOpacity: 0.6,\n },\n },\n }\n result.transformLabel = {\n visible: true,\n }\n\n result.animation = true\n\n return result\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { SpecPipe } from 'src/types'\n\nexport const initPivot: SpecPipe = (spec) => {\n const result = { ...spec } as PivotChartConstructorOptions\n\n return {\n ...result,\n animation: true,\n rows: [],\n columns: [],\n indicators: [],\n records: [],\n widthMode: 'adaptive',\n heightMode: 'adaptive',\n indicatorsAsCol: false,\n }\n}\n\nexport const pivotIndicatorsAsRow: SpecPipe = (spec) => {\n const result = { ...spec } as PivotChartConstructorOptions\n\n return {\n ...result,\n indicatorsAsCol: false,\n }\n}\n\nexport const pivotIndicatorsAsCol: SpecPipe = (spec) => {\n const result = { ...spec } as PivotChartConstructorOptions\n\n return {\n ...result,\n indicatorsAsCol: true,\n }\n}\n","import type { ICartesianBandAxisSpec, ISpec } from '@visactor/vchart'\nimport type { SpecPipe, XBandAxis } from 'src/types'\n\nexport const xBand: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const config = advancedVSeed.config?.[chartType as 'column']?.xAxis as XBandAxis\n\n if (!result.axes) {\n result.axes = []\n }\n\n if (!config) {\n result.axes = [\n ...result.axes,\n {\n visible: true,\n type: 'band',\n orient: 'bottom',\n },\n ] as ISpec['axes']\n return result\n }\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n labelAutoHide,\n labelAutoHideGap,\n labelAutoLimit,\n labelAutoLimitLength,\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,\n sampling,\n hover: true,\n label: {\n visible: label?.visible,\n flush: true,\n space: 8,\n style: {\n maxLineWidth: labelAutoLimitLength,\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n\n // 防重叠相关\n minGap: labelAutoHideGap,\n autoHide: labelAutoHide,\n autoHideMethod: 'greedy',\n autoHideSeparation: labelAutoHideGap,\n autoLimit: labelAutoLimit,\n autoRotate: labelAutoRotate,\n autoRotateAngle: labelAutoRotateAngleRange,\n lastVisible: true,\n },\n title: {\n visible: title?.visible,\n text: title?.titleText,\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n paddingInner: [0.15, 0.1],\n paddingOuter: [0.075, 0.1],\n } as ICartesianBandAxisSpec\n\n result.axes = [...result.axes, bandAxis] as ISpec['axes']\n return result\n}\n","// 标注层 z-index \nexport const ANNOTATION_Z_INDEX = 1000\n// 线性轴 顶部空隙 预留5px\nexport const LINEAR_AXIS_INNER_OFFSET_TOP = 7","import type { ISpec } from '@visactor/vchart'\nimport { LINEAR_AXIS_INNER_OFFSET_TOP } from '../../../../utils/constant'\nimport type { SpecPipe, XLinearAxis } from 'src/types'\nimport { autoFormatter } from '../../../../utils'\n\nexport const xLinear: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { locale } = advancedVSeed\n const config = advancedVSeed.config?.[chartType as 'bar']?.xAxis as XLinearAxis\n\n if (!result.axes) {\n result.axes = []\n }\n\n if (!config) {\n result.axes = [\n ...result.axes,\n {\n visible: true,\n type: 'linear',\n orient: 'bottom',\n },\n ] as ISpec['axes']\n return result\n }\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n\n zero,\n nice,\n inverse,\n max,\n min,\n log,\n logBase = 10,\n } = config\n\n const linearAxis = {\n visible,\n type: log ? 'log' : 'linear',\n base: logBase,\n orient: 'bottom',\n nice,\n zero: log ? false : zero,\n inverse,\n max,\n min,\n label: {\n visible: label?.visible,\n formatMethod: (value: string) => {\n return autoFormatter(value, locale)\n },\n style: {\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n },\n title: {\n visible: title?.visible,\n text: title?.titleText,\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n innerOffset: {\n right: LINEAR_AXIS_INNER_OFFSET_TOP,\n // left: LINEAR_AXIS_INNER_OFFSET_TOP,\n },\n }\n\n result.axes = [...result.axes, linearAxis] as ISpec['axes']\n\n return result\n}\n","import type { ICartesianBandAxisSpec, ISpec } from '@visactor/vchart'\nimport type { SpecPipe, XBandAxis } from 'src/types'\n\nexport const yBand: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const config = advancedVSeed.config?.[chartType as 'bar']?.yAxis as XBandAxis\n\n if (!result.axes) {\n result.axes = []\n }\n\n if (!config) {\n result.axes = [\n ...result.axes,\n {\n visible: true,\n type: 'band',\n orient: 'left',\n },\n ] as ISpec['axes']\n return result\n }\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n labelAutoHide,\n labelAutoHideGap,\n labelAutoLimit,\n labelAutoLimitLength,\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,\n sampling,\n hover: true,\n label: {\n visible: label?.visible,\n flush: true,\n containerAlign: 'left',\n space: 8,\n style: {\n maxLineWidth: labelAutoLimitLength,\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n // 防重叠相关\n minGap: labelAutoHideGap,\n autoHide: labelAutoHide,\n autoHideMethod: 'greedy',\n autoHideSeparation: labelAutoHideGap,\n autoLimit: labelAutoLimit,\n autoRotate: labelAutoRotate,\n autoRotateAngle: labelAutoRotateAngleRange,\n lastVisible: true,\n },\n title: {\n visible: title?.visible,\n text: title?.titleText,\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n paddingInner: [0.15, 0.1],\n paddingOuter: [0.075, 0.1],\n } as ICartesianBandAxisSpec\n\n result.axes = [...result.axes, bandAxis] as ISpec['axes']\n return result\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { LINEAR_AXIS_INNER_OFFSET_TOP } from '../../../../utils/constant'\nimport { autoFormatter } from '../../../../utils'\nimport type { SpecPipe, YLinearAxis } from 'src/types'\n\nexport const yLinear: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { locale } = advancedVSeed\n const config = advancedVSeed.config?.[chartType as 'column']?.yAxis as YLinearAxis\n\n if (!result.axes) {\n result.axes = []\n }\n\n if (!config) {\n result.axes = [\n ...result.axes,\n {\n visible: true,\n type: 'linear',\n orient: 'left',\n },\n ] as ISpec['axes']\n return result\n }\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n\n zero,\n nice,\n inverse,\n max,\n min,\n log,\n logBase = 10,\n } = config\n\n const linearAxis = {\n visible,\n type: log ? 'log' : 'linear',\n base: logBase,\n orient: 'left',\n nice,\n zero: log ? false : zero,\n inverse,\n max,\n min,\n label: {\n visible: label?.visible,\n formatMethod: (value: string) => {\n return autoFormatter(value, locale)\n },\n style: {\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n },\n title: {\n visible: title?.visible,\n text: title?.titleText,\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n innerOffset: {\n top: LINEAR_AXIS_INNER_OFFSET_TOP,\n // bottom: LINEAR_AXIS_INNER_OFFSET_TOP,\n },\n }\n\n result.axes = [...result.axes, linearAxis] as ISpec['axes']\n\n return result\n}\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const radiusAxis: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRoseChartSpec\n const { advancedVSeed } = context\n const { dimensions, measures } = advancedVSeed\n\n if (!dimensions || !measures) {\n return result\n }\n\n const is0D = dimensions.length === 0\n const is1M1D = dimensions.length === 1 && measures.length === 1\n const showAxis = !(is0D || is1M1D)\n\n if (!result.axes) {\n result.axes = []\n }\n\n result.axes.push({\n orient: 'radius',\n visible: showAxis,\n zero: true,\n nice: showAxis ? true : false,\n grid: {\n visible: showAxis,\n },\n tick: {\n visible: showAxis,\n },\n label: {\n visible: showAxis,\n },\n domainLine: {\n visible: showAxis,\n },\n })\n\n return result\n}\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const angleAxis: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRoseChartSpec\n const { advancedVSeed } = context\n const { dimensions, measures } = advancedVSeed\n\n if (!dimensions || !measures) {\n return result\n }\n\n const is0D = dimensions.length === 0\n const is1M1D = dimensions.length === 1 && measures.length === 1\n const showAxis = !(is0D || is1M1D)\n\n if (!result.axes) {\n result.axes = []\n }\n\n result.axes.push({\n orient: 'angle',\n visible: showAxis,\n zero: true,\n nice: showAxis ? true : false,\n paddingInner: showAxis ? [0.15, 0.1] : [0, 0],\n paddingOuter: showAxis ? [0.075, 0.1] : [0, 0],\n grid: {\n visible: showAxis,\n },\n domainLine: {\n visible: showAxis,\n },\n tick: {\n visible: showAxis,\n },\n })\n\n return result\n}\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const radarAngleAxis: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRoseChartSpec\n const { advancedVSeed } = context\n const { dimensions, measures } = advancedVSeed\n\n if (!dimensions || !measures) {\n return result\n }\n\n if (!result.axes) {\n result.axes = []\n }\n\n result.axes.push({\n orient: 'angle',\n visible: true,\n zero: true,\n nice: true,\n grid: {\n visible: true,\n },\n domainLine: {\n visible: true,\n },\n tick: {\n visible: true,\n },\n })\n\n return result\n}\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const radarRadiusAxis: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRoseChartSpec\n const { advancedVSeed } = context\n const { dimensions, measures } = advancedVSeed\n\n if (!dimensions || !measures) {\n return result\n }\n\n if (!result.axes) {\n result.axes = []\n }\n\n result.axes.push({\n orient: 'radius',\n visible: true,\n zero: true,\n nice: true,\n grid: {\n visible: true,\n },\n tick: {\n visible: true,\n },\n label: {\n visible: true,\n },\n domainLine: {\n visible: true,\n },\n })\n\n return result\n}\n","import { IAreaChartSpec, IBarChartSpec } from '@visactor/vchart'\nimport { SpecPipe } from 'src/types'\n\nexport const percent: SpecPipe = (spec, context) => {\n const result = { ...spec } as IAreaChartSpec | IBarChartSpec\n result.percent = true\n return result\n}\n","import type { 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 { SpecPipe, StackCornerRadius } from 'src/types'\n\nexport const stackCornerRadius: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const stackCornerRadius = advancedVSeed.config?.[chartType as 'column']?.stackCornerRadius as StackCornerRadius\n\n return {\n ...spec,\n stackCornerRadius,\n }\n}\n","import type { 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 { isEmpty } from 'remeda'\nimport { autoFormatter, createFormatter, findMeasureById } from '../../../../utils'\nimport type { SpecPipe, Tooltip } from 'src/types'\n\nexport const tooltip: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { measures, datasetReshapeInfo, chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n\n const { measureId, measureValue } = datasetReshapeInfo[0].foldInfo\n const { groupName } = datasetReshapeInfo[0].unfoldInfo\n\n result.tooltip = {\n visible: enable,\n\n mark: {\n title: {\n value: (datum) => (datum && (datum[groupName] as string)) || '',\n },\n content: [\n {\n visible: true,\n key: (datum) => (datum && (datum[groupName] as string)) || '',\n value: (datum) => {\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value)\n }\n return String(value)\n },\n },\n ],\n },\n dimension: {\n content: [\n {\n visible: true,\n key: (datum) => (datum && (datum[groupName] as string)) || '',\n value: (datum) => {\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value)\n }\n return String(value)\n },\n },\n ],\n },\n }\n return result\n}\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport type { ILineLikeLabelSpec } from '@visactor/vchart/esm/series/mixin/interface'\nimport { autoFormatter, createFormatter, findMeasureById } from '../../../../utils'\nimport type { Datum, Label, SpecPipe } from 'src/types'\nimport { isEmpty } from 'remeda'\n\nexport const label: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed } = context\n const { measures, datasetReshapeInfo, locale } = advancedVSeed\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { label: Label }\n\n if (!baseConfig || !baseConfig.label) {\n return result\n }\n\n const { measureId, measureValue } = datasetReshapeInfo[0].foldInfo\n // const { groupId, groupName } = datasetReshapeInfo[0].unfoldInfo\n const { label } = baseConfig\n const { enable } = label\n\n result.label = {\n visible: enable,\n formatMethod: (value: string, datum: Datum) => {\n const result = []\n\n const formatValue = (value: number) => {\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return value\n }\n\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n }\n\n result.push(formatValue(datum[measureValue] as number))\n\n return result.join(' ')\n },\n } as ILineLikeLabelSpec\n return result\n}\n","import type { IHeatmapChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const labelColorInversion: SpecPipe = (spec) => {\n const result = { ...spec } as IHeatmapChartSpec\n if (result.label) {\n result.label.smartInvert = true\n } else {\n result.label = {\n smartInvert: true,\n }\n }\n return result\n}\n","import type { StringOrNumber } from '@visactor/vchart'\nimport type { Legend, SpecPipe } from 'src/types'\n\nexport const discreteLegend: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { datasetReshapeInfo, chartType } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n const baseConfig = advancedVSeed.config[chartType] as { legend: Legend }\n if (!baseConfig || !baseConfig.legend) {\n return result\n }\n\n const { legend } = baseConfig\n const {\n enable,\n position = 'bottom',\n labelFontColor,\n labelFontSize = 12,\n labelFontWeight,\n maxSize,\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: maxSize,\n maxRow: 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 focusIconStyle: {\n size: labelFontSize + 2,\n fill: labelFontColor,\n fontWeight: labelFontWeight,\n },\n shape: {\n space: border ? 6 : 4,\n style: {\n symbolType: shapeType,\n size: border ? 8 : 10,\n },\n },\n label: {\n formatMethod: (value: StringOrNumber) => {\n return unfoldInfo.colorIdMap[String(value)] ?? value\n },\n style: {\n fontSize: labelFontSize,\n fill: labelFontColor,\n fontWeight: labelFontWeight,\n },\n },\n background: {\n state: {\n selectedHover: {\n fill: labelFontColor,\n fillOpacity: 0.05,\n },\n },\n },\n },\n }\n return result\n}\n","import type { StringOrNumber } from '@visactor/vchart'\nimport type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { IDiscreteTableLegendOption } from '@visactor/vtable/es/ts-types/component/legend'\nimport { unique } from 'remeda'\nimport type { Color, Legend, SpecPipe } from 'src/types'\n\nexport const pivotDiscreteLegend: SpecPipe = (spec, context) => {\n const result = { ...spec } as PivotChartConstructorOptions\n const { advancedVSeed } = context\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { legend: Legend, color: Color }\n\n if (!baseConfig || !baseConfig.legend) {\n return result\n }\n\n const { datasetReshapeInfo } = advancedVSeed\n const colorItems = unique(datasetReshapeInfo.flatMap((d) => d.unfoldInfo.colorItems))\n\n const colorIdMap = datasetReshapeInfo.reduce<Record<string, string>>((prev, cur) => {\n return { ...prev, ...cur.unfoldInfo.colorIdMap }\n }, {})\n\n const { legend, color } = baseConfig\n const { colorScheme } = color\n\n const {\n enable,\n position = 'bottom',\n labelFontColor,\n labelFontSize = 12,\n labelFontWeight = 400,\n maxSize,\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: maxSize,\n maxRow: maxSize,\n data: colorItems.map((d, index) => ({\n label: d,\n shape: {\n outerBorder: border\n ? {\n stroke: colorScheme?.[index],\n distance: 3,\n lineWidth: 1,\n }\n : undefined,\n fill: colorScheme?.[index],\n },\n })),\n\n item: {\n focus: true,\n focusIconStyle: {\n size: labelFontSize + 2,\n fill: labelFontColor,\n fontWeight: labelFontWeight,\n },\n shape: {\n space: border ? 6 : 4,\n style: {\n symbolType: shapeType,\n size: border ? 8 : 10,\n },\n },\n label: {\n formatMethod: (value: StringOrNumber) => {\n return colorIdMap[String(value)] ?? value\n },\n style: {\n fontSize: labelFontSize,\n fill: labelFontColor,\n fontWeight: labelFontWeight,\n },\n },\n background: {\n state: {\n selectedHover: {\n fill: labelFontColor,\n fillOpacity: 0.05,\n },\n },\n },\n },\n } as unknown as IDiscreteTableLegendOption\n return { ...result, legends }\n}\n","import type { Legend, SpecPipe } from 'src/types'\n\nexport const colorLegend: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { legend: Legend }\n const { encoding } = advancedVSeed\n\n if (!encoding[0].color) {\n return result\n }\n\n if (!baseConfig || !baseConfig.legend) {\n return result\n }\n\n const { legend } = baseConfig\n const { enable, position = 'bottom' } = legend || {}\n\n const orient = ['bottom', 'bottomLeft', 'bottomRight', 'bl', 'br'].includes(position)\n ? 'bottom'\n : ['top', 'topLeft', 'topRight', 'tl', 'tr'].includes(position)\n ? 'top'\n : ['left', 'leftTop', 'leftBottom', 'lt', 'lb'].includes(position)\n ? 'left'\n : 'right'\n\n const legendPosition = ['topLeft', 'bottomLeft', 'leftTop', 'rightTop', 'lt', 'rt', 'tl', 'bl'].includes(position)\n ? 'start'\n : ['topRight', 'bottomRight', 'leftBottom', 'rightBottom', 'lb', 'rb', 'rt', 'br'].includes(position)\n ? 'end'\n : 'middle'\n\n result.legends = {\n type: 'color',\n visible: enable,\n orient,\n position: legendPosition,\n field: encoding[0].color[0],\n inverse: ['left', 'right'].includes(orient) ? true : false,\n }\n return result\n}\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport { Separator } from 'src/dataReshape'\nimport type { Color, SpecPipe } from 'src/types'\n\nexport const color: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo, chartType } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n const baseConfig = advancedVSeed.config[chartType] as { color: Color }\n\n if (!baseConfig || !baseConfig.color) {\n return result\n }\n\n const { color } = baseConfig\n const { colorScheme, colorMapping } = color\n const mappingList: Array<[string, string]> = []\n if (colorMapping) {\n Object.entries(colorMapping)\n .sort((a, b) => a[0].split(Separator).length - b[0].split(Separator).length)\n .forEach(([key, value]) => {\n const idMap = Object.entries(unfoldInfo.colorIdMap).filter(([_, v]) => v.includes(key))\n\n for (const [colorId] of idMap) {\n mappingList.push([colorId, value])\n }\n })\n }\n\n result.color = {\n type: 'ordinal',\n domain: unfoldInfo.colorItems,\n range: colorScheme,\n specified: Object.fromEntries(mappingList),\n } as ILineChartSpec['color']\n return result\n}\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport type { Color, SpecPipe } from 'src/types'\n\nexport const linearColor: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo, chartType, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { color: Color }\n\n if (!baseConfig || !baseConfig.color) {\n return result\n }\n\n const { color } = baseConfig\n const { colorScheme } = color\n\n result.color = {\n type: 'linear',\n domain: [\n {\n dataId: datasetReshapeInfo[0].id,\n fields: encoding?.[0]?.color,\n },\n ],\n range: colorScheme,\n } as ILineChartSpec['color']\n return result\n}\n","import type { 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 { PivotChartConstructorOptions } from '@visactor/vtable'\nimport { execPipeline } from '../../../../utils'\nimport type { SpecPipe, SpecPipeline, SpecPipelineContext } from 'src/types'\nimport { unique } from 'remeda'\n\nexport const pivotIndicators =\n (chartPipeline: SpecPipeline): SpecPipe =>\n (spec, context) => {\n const result = { ...spec } as PivotChartConstructorOptions\n const { advancedVSeed } = context\n const { measures, datasetReshapeInfo, encoding } = advancedVSeed\n\n const colorItems = unique(datasetReshapeInfo.flatMap((d) => d.unfoldInfo.colorItems))\n\n const indicators = datasetReshapeInfo.map((reshapeInfo, index) => {\n const measure = measures?.find((d) => d.id === reshapeInfo.id)\n\n const newEncoding = [encoding[index]]\n const newDatasetReshapeInfo = [{ ...reshapeInfo, unfoldInfo: { ...reshapeInfo.unfoldInfo, colorItems } }]\n const newContext: SpecPipelineContext = {\n ...context,\n advancedVSeed: {\n ...advancedVSeed,\n datasetReshapeInfo: newDatasetReshapeInfo,\n encoding: newEncoding,\n },\n }\n\n const chartSpec = execPipeline(chartPipeline, newContext, {})\n return {\n indicatorKey: reshapeInfo.id,\n title: measure?.alias,\n cellType: 'chart',\n chartModule: 'vchart',\n chartSpec: chartSpec,\n style: {\n padding: [1, 1, 0, 1],\n },\n }\n })\n\n return {\n ...result,\n indicators: indicators,\n } as PivotChartConstructorOptions\n }\n\nexport const pivotIndicatorsAsRow: SpecPipe = (spec) => {\n const result = { ...spec } as PivotChartConstructorOptions\n\n return {\n ...result,\n indicatorsAsCol: false,\n }\n}\n\nexport const pivotIndicatorsAsCol: SpecPipe = (spec) => {\n const result = { ...spec } as PivotChartConstructorOptions\n\n return {\n ...result,\n indicatorsAsCol: true,\n }\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { SpecPipe } from 'src/types'\n\nexport const pivotGridStyle: SpecPipe = (spec) => {\n const result = { ...spec } as PivotChartConstructorOptions\n const transparent = 'rgba(0,0,0,0)'\n\n const hoverBackgroundColor = 'rgba(178,186,207, 0.2)'\n return {\n ...result,\n theme: {\n underlayBackgroundColor: transparent,\n bodyStyle: {\n borderColor: 'rgba(0,4,20,0.2)',\n borderLineWidth: [0, 0, 2, 0],\n bgColor: transparent,\n padding: [0, 0, 1, 0],\n hover: {\n cellBgColor: 'transparent',\n },\n },\n headerStyle: {\n borderColor: 'rgba(0,4,20,0.2)',\n fontSize: 12,\n color: '#333333',\n textAlign: 'center',\n borderLineWidth: 0,\n bgColor: transparent,\n hover: {\n cellBgColor: hoverBackgroundColor,\n },\n },\n rowHeaderStyle: {\n borderColor: 'rgba(0,4,20,0.2)',\n fontSize: 12,\n color: '#333333',\n borderLineWidth: 0,\n bgColor: transparent,\n hover: {\n cellBgColor: hoverBackgroundColor,\n },\n },\n cornerHeaderStyle: {\n borderColor: 'rgba(0,4,20,0.2)',\n textAlign: 'center',\n fontSize: 12,\n color: '#333333',\n fontWeight: 'bold',\n borderLineWidth: [0, 0, 0, 0],\n bgColor: transparent,\n hover: {\n cellBgColor: hoverBackgroundColor,\n },\n },\n cornerRightTopCellStyle: {\n borderColor: 'rgba(0,4,20,0.2)',\n borderLineWidth: 0,\n bgColor: transparent,\n hover: {\n cellBgColor: hoverBackgroundColor,\n },\n },\n cornerLeftBottomCellStyle: {\n borderColor: 'rgba(0,4,20,0.2)',\n borderLineWidth: 0,\n bgColor: transparent,\n hover: {\n cellBgColor: hoverBackgroundColor,\n },\n },\n cornerRightBottomCellStyle: {\n borderColor: 'rgba(0,4,20,0.2)',\n borderLineWidth: 0,\n bgColor: transparent,\n hover: {\n cellBgColor: hoverBackgroundColor,\n },\n },\n rightFrozenStyle: {\n borderColor: 'rgba(0,4,20,0.2)',\n borderLineWidth: 0,\n bgColor: transparent,\n hover: {\n cellBgColor: hoverBackgroundColor,\n },\n },\n bottomFrozenStyle: {\n borderColor: 'rgba(0,4,20,0.2)',\n borderLineWidth: 0,\n bgColor: transparent,\n hover: {\n cellBgColor: hoverBackgroundColor,\n },\n },\n selectionStyle: {\n cellBgColor: '',\n cellBorderColor: '',\n },\n frameStyle: {\n borderLineWidth: 0,\n bgColor: transparent,\n },\n },\n }\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { IBasicDimension } from '@visactor/vtable/es/ts-types/pivot-table/dimension/basic-dimension'\nimport type { Dimensions, SpecPipe } from 'src/types'\n\nexport const pivotColumnDimensions: SpecPipe = (spec, context) => {\n const result = { ...spec } as PivotChartConstructorOptions\n const { advancedVSeed } = context\n const dimensions = advancedVSeed.dimensions as Dimensions\n\n if (!dimensions) {\n return result\n }\n const columnDimensions = dimensions.filter((dim) => dim.location === 'columnDimension')\n const columns: IBasicDimension[] = columnDimensions.map((dim) => ({\n dimensionKey: dim.id,\n title: dim.alias || dim.id,\n }))\n return {\n ...result,\n columns: columns,\n }\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { IBasicDimension } from '@visactor/vtable/es/ts-types/pivot-table/dimension/basic-dimension'\nimport type { Dimensions, SpecPipe } from 'src/types'\n\nexport const pivotRowDimensions: SpecPipe = (spec, context) => {\n const result = { ...spec } as PivotChartConstructorOptions\n const { advancedVSeed } = context\n const dimensions = advancedVSeed.dimensions as Dimensions\n if (!dimensions) {\n return result\n }\n const rowDimensions = dimensions.filter((dim) => dim.location === 'rowDimension')\n const rows: IBasicDimension[] = rowDimensions.map((dim) => ({\n dimensionKey: dim.id,\n title: dim.alias || dim.id,\n }))\n return {\n ...result,\n rows: rows,\n }\n}\n","import type { 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 // 过滤掉 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 for (const selector of selectors) {\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\n return false\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 { IBarChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { BarStyle, Datum, SpecPipe } from 'src/types'\n\nexport const barStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle } = advancedVSeed\n const { barStyle } = markStyle\n\n const result = {\n ...spec,\n bar: {\n style: {\n stroke: '#fff',\n lineWidth: 1,\n },\n state: {\n hover: {\n fillOpacity: 0.6,\n },\n },\n },\n } as IBarChartSpec\n\n if (!barStyle) {\n return result\n }\n\n const barStyles = (Array.isArray(barStyle) ? barStyle : [barStyle]) as BarStyle[]\n\n const customMap = barStyles.reduce<object>((result, style, index) => {\n const { barBorderColor, barBorderStyle, barBorderWidth, barColor, barColorOpacity, barRadius } = style\n\n const lineDash = barBorderStyle === 'dashed' ? [5, 2] : barBorderStyle === 'dotted' ? [2, 5] : [0, 0]\n return {\n ...result,\n [`custom${index + 1}`]: {\n // 优先级: 后者覆盖前者\n level: index + 1,\n filter: (datum: Datum) => {\n if (selector(datum, style.selector)) {\n return true\n }\n return false\n },\n style: {\n fill: barColor,\n fillOpacity: barColorOpacity,\n stroke: barBorderColor,\n lineWidth: barBorderWidth,\n lineDash: lineDash,\n cornerRadius: barRadius,\n },\n },\n }\n }, {})\n\n return {\n ...result,\n bar: {\n state: {\n ...customMap,\n },\n },\n }\n}\n","import type { IAreaChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, PointStyle, SpecPipe } from 'src/types'\n\nexport const pointStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle } = advancedVSeed\n const { pointStyle } = markStyle\n const result = {\n ...spec,\n } as IAreaChartSpec\n\n if (!pointStyle) {\n return result\n }\n const pointStyles = (Array.isArray(pointStyle) ? pointStyle : [pointStyle]) as PointStyle[]\n\n const customMap = pointStyles.reduce<object>((result, style, index) => {\n const { pointBorderColor, pointBorderStyle, pointBorderWidth, pointColor, pointColorOpacity, pointSize } = style\n\n const lineDash = pointBorderStyle === 'dashed' ? [5, 2] : pointBorderStyle === 'dotted' ? [2, 5] : [0, 0]\n return {\n ...result,\n [`custom${index + 1}`]: {\n // 优先级: 后者覆盖前者\n level: index + 1,\n filter: (datum: Datum) => {\n if (selector(datum, style.selector)) {\n return true\n }\n return false\n },\n style: {\n size: pointSize,\n fill: pointColor,\n fillOpacity: pointColorOpacity,\n stroke: pointBorderColor,\n lineWidth: pointBorderWidth,\n lineDash: lineDash,\n },\n },\n }\n }, {})\n\n return {\n ...result,\n point: {\n state: {\n ...customMap,\n },\n },\n }\n}\n","import type { IScatterChartSpec } from '@visactor/vchart'\nimport type { ISeriesMarkAttributeContext } from '@visactor/vchart/esm/compile/mark'\nimport type { SpecPipe } from 'src/types'\n\nexport const pointStateDimensionHover: SpecPipe = (spec) => {\n const point = (spec as IScatterChartSpec).point || {}\n const result = {\n ...spec,\n point: {\n ...point,\n state: {\n ...(point.state || {}),\n dimension_hover: {\n scaleX: 1.4,\n scaleY: 1.4,\n },\n },\n },\n } as IScatterChartSpec\n return result\n}\n\nexport const pointStateHover: SpecPipe = (spec, context) => {\n const point = (spec as IScatterChartSpec).point || {}\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n const result = {\n ...spec,\n point: {\n ...point,\n state: {\n ...(point.state || {}),\n hover: {\n scaleX: 1.4,\n scaleY: 1.4,\n stroke: (datum, context: ISeriesMarkAttributeContext) => {\n const field = encoding[0]?.group?.[0] as string\n const color = context.seriesColor(datum[field] as string)\n return color\n },\n fillOpacity: 0.6,\n lineWidth: 1,\n },\n },\n },\n } as IScatterChartSpec\n return result\n}\n","import type { IAreaChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, LineStyle, SpecPipe } from 'src/types'\nimport { groupBy } from 'remeda'\n\nexport const lineStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle, encoding, dataset } = advancedVSeed\n const { lineStyle } = markStyle\n if (!lineStyle) {\n return spec\n }\n const result = { ...spec } as IAreaChartSpec\n\n const lineStyles = (Array.isArray(lineStyle) ? lineStyle : [lineStyle]) as LineStyle[]\n\n const group = encoding[0]?.group?.[0]\n const lineGroups = groupBy(dataset, (d) => d[group ?? ''] as string)\n\n const customMap = lineStyles.reduce<object>((result, style, index) => {\n const { lineColor, lineColorOpacity, lineSmooth, lineStyle, lineWidth } = style\n\n const dashSegment = (lineWidth ?? 2) * 2\n const dashGap = lineWidth ?? 2\n\n const lineDash =\n lineStyle === 'dashed' ? [dashSegment, dashSegment] : lineStyle === 'dotted' ? [dashGap / 2, dashGap * 2] : [0, 0]\n\n const curveType = lineSmooth ? 'monotone' : 'linear'\n\n return {\n ...result,\n [`custom${index + 1}`]: {\n // 优先级: 后者覆盖前者\n level: index + 1,\n filter: (datum: Datum) => {\n const lineData = lineGroups[datum[group ?? ''] as string]\n for (const d of lineData) {\n if (selector(d, style.selector)) {\n return true\n }\n }\n return false\n },\n style: {\n curveType: curveType,\n strokeOpacity: lineColorOpacity,\n stroke: lineColor,\n lineWidth: lineWidth,\n lineDash: lineDash,\n },\n },\n }\n }, {})\n\n return {\n ...result,\n line: {\n state: {\n ...customMap,\n },\n },\n }\n}\n","import type { IAreaChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { AreaStyle, Datum, SpecPipe } from 'src/types'\nimport { groupBy } from 'remeda'\n\nexport const areaStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle, encoding, dataset } = advancedVSeed\n const { areaStyle } = markStyle\n\n if (!areaStyle) {\n return spec\n }\n const result = { ...spec } as IAreaChartSpec\n\n const areaStyles = (Array.isArray(areaStyle) ? areaStyle : [areaStyle]) as AreaStyle[]\n\n const group = encoding[0]?.group?.[0]\n const lineGroups = groupBy(dataset, (d) => d[group ?? ''] as string)\n\n const customMap = areaStyles.reduce<object>((result, style, index) => {\n const { areaColor, areaColorOpacity } = style\n\n return {\n ...result,\n [`custom${index + 1}`]: {\n // 优先级: 后者覆盖前者\n level: index + 1,\n filter: (datum: Datum) => {\n const lineData = lineGroups[datum[group ?? ''] as string]\n for (const d of lineData) {\n if (selector(d, style.selector)) {\n return true\n }\n }\n return false\n },\n style: {\n fill: areaColor,\n fillOpacity: areaColorOpacity,\n },\n },\n }\n }, {})\n\n return {\n ...result,\n area: {\n state: {\n ...customMap,\n },\n },\n }\n}\n","import type { 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 = 'middle',\n backgroundBorderColor,\n backgroundBorderRadius = 4,\n backgroundBorderWidth = 1,\n backgroundColor = '#212121',\n backgroundPadding = 2,\n backgroundVisible = true,\n offsetX = 0,\n offsetY = 0,\n } = annotationPoint\n\n const dataset = advancedVSeed.dataset.flat()\n const selectedData = 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 visible: true,\n text: text,\n style: {\n textAlign: textAlign,\n textBaseline: textBaseline,\n fill: textColor,\n fontSize: textFontSize,\n fontWeight: textFontWeight,\n },\n labelBackground: {\n visible: backgroundVisible,\n padding: backgroundPadding,\n style: {\n cornerRadius: backgroundBorderRadius ?? 4,\n fill: backgroundColor,\n stroke: backgroundBorderColor,\n strokeWidth: backgroundBorderWidth,\n },\n },\n },\n },\n }\n })\n }) as ILineChartSpec['markPoint']\n\n return {\n ...spec,\n markPoint,\n }\n}\n","import type { ILineChartSpec, IMarkLineSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { SpecPipe } from 'src/types'\nimport { isArray, isNumber, isString } from 'remeda'\nimport { ANNOTATION_Z_INDEX } from '../../../../utils/constant'\n\nexport const annotationVerticalLine: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { annotation, encoding } = advancedVSeed\n\n if (!annotation || !annotation.annotationVerticalLine) {\n return spec\n }\n\n const { annotationVerticalLine } = annotation\n const annotationVerticalLineList = Array.isArray(annotationVerticalLine)\n ? annotationVerticalLine\n : [annotationVerticalLine]\n\n const positionMap = {\n outsideStart: 'start',\n outsideEnd: 'end',\n outsideMiddle: 'middle',\n insideStart: 'insideStartTop',\n insideMiddle: 'insideMiddleTop',\n insideEnd: 'insideEndTop',\n }\n const markLine = annotationVerticalLineList.flatMap((annotationVerticalLine) => {\n const {\n selector: selectorPoint,\n xValue,\n text = '',\n textPosition = 'insideEnd',\n textColor = '#ffffff',\n textFontSize = 12,\n textFontWeight = 400,\n textAlign = 'right',\n textBaseline = 'top',\n backgroundBorderColor,\n backgroundBorderRadius = 4,\n backgroundBorderWidth = 1,\n backgroundColor = '#212121',\n backgroundPadding = 2,\n backgroundVisible = true,\n lineColor = '#212121',\n lineStyle = 'dashed',\n lineVisible = true,\n lineWidth = 1,\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 visible: lineVisible,\n style: {\n stroke: lineColor,\n lineStyle: lineStyle,\n lineWidth: lineWidth,\n lineDash: lineStyle === 'dashed' ? [5, 2] : lineStyle === 'dotted' ? [2, 5] : [0],\n },\n },\n label: {\n text: text,\n position: positionMap[textPosition],\n style: {\n visible: true,\n textAlign: textAlign,\n textBaseline: textBaseline,\n fill: textColor,\n fontSize: textFontSize,\n fontWeight: textFontWeight,\n },\n labelBackground: {\n visible: backgroundVisible,\n padding: backgroundPadding,\n style: {\n cornerRadius: backgroundBorderRadius ?? 4,\n fill: backgroundColor,\n stroke: backgroundBorderColor,\n strokeWidth: backgroundBorderWidth,\n },\n },\n },\n endSymbol: {\n visible: true,\n style: {\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 = dataset.filter((datum) => selector(datum, selectorPoint))\n\n return selectedData.map((datum) => {\n const x = encoding[0]?.x?.[0]\n if (!x) {\n return {}\n }\n return generateOneMarkLine(datum[x] as string)\n })\n }) as IMarkLineSpec[]\n\n const specMarkLine = ((spec as ILineChartSpec).markLine as IMarkLineSpec[]) || []\n const newMarkLine = [...specMarkLine, ...(markLine || [])]\n\n return {\n ...spec,\n markLine: newMarkLine,\n }\n}\n","import type { ILineChartSpec, IMarkLineSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { SpecPipe } from 'src/types'\nimport { isArray, isNumber, isString } from 'remeda'\nimport { ANNOTATION_Z_INDEX } from '../../../../utils/constant'\n\nexport const annotationHorizontalLine: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { annotation, encoding } = advancedVSeed\n\n if (!annotation || !annotation.annotationHorizontalLine) {\n return spec\n }\n\n const { annotationHorizontalLine } = annotation\n const annotationVerticalLineList = Array.isArray(annotationHorizontalLine)\n ? annotationHorizontalLine\n : [annotationHorizontalLine]\n\n const positionMap = {\n outsideStart: 'start',\n outsideEnd: 'end',\n outsideMiddle: 'middle',\n insideStart: 'insideStartTop',\n insideMiddle: 'insideMiddleTop',\n insideEnd: 'insideEndTop',\n }\n\n const markLine = annotationVerticalLineList.flatMap((annotationVerticalLine) => {\n const {\n selector: selectorPoint,\n yValue,\n text = '',\n textPosition = 'insideEnd',\n textColor = '#ffffff',\n textFontSize = 12,\n textFontWeight = 400,\n textAlign = 'center',\n textBaseline = 'bottom',\n backgroundBorderColor,\n backgroundBorderRadius = 4,\n backgroundBorderWidth = 1,\n backgroundColor = '#212121',\n backgroundPadding = 2,\n backgroundVisible = true,\n lineColor = '#212121',\n lineStyle = 'dashed',\n lineVisible = true,\n lineWidth = 1,\n } = annotationVerticalLine\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 visible: lineVisible,\n style: {\n stroke: lineColor,\n lineStyle: lineStyle,\n lineWidth: lineWidth,\n lineDash: lineStyle === 'dashed' ? [5, 2] : lineStyle === 'dotted' ? [2, 5] : [0],\n },\n },\n label: {\n text: text,\n position: positionMap[textPosition],\n style: {\n visible: true,\n textAlign: textAlign,\n textBaseline: textBaseline,\n fill: textColor,\n fontSize: textFontSize,\n fontWeight: textFontWeight,\n },\n labelBackground: {\n visible: backgroundVisible,\n padding: backgroundPadding,\n style: {\n cornerRadius: backgroundBorderRadius ?? 4,\n fill: backgroundColor,\n stroke: backgroundBorderColor,\n strokeWidth: backgroundBorderWidth,\n },\n },\n },\n endSymbol: {\n visible: true,\n style: {\n fill: lineColor,\n },\n },\n }\n }\n\n if ((!selectorPoint && isArray(yValue)) || isString(yValue) || isNumber(yValue)) {\n const yValueArr = Array.isArray(yValue) ? yValue : [yValue]\n return yValueArr.map(generateOneMarkLine)\n }\n\n const selectedData = dataset.filter((datum) => selector(datum, selectorPoint))\n\n return selectedData.map((datum) => {\n const y = encoding[0]?.y?.[0]\n if (!y) {\n return {}\n }\n return generateOneMarkLine(datum[y] as string)\n })\n }) as IMarkLineSpec[]\n const specMarkLine = ((spec as ILineChartSpec).markLine as IMarkLineSpec[]) || []\n const newMarkLine = [...specMarkLine, ...(markLine || [])]\n return {\n ...spec,\n markLine: newMarkLine,\n }\n}\n","import type { ICartesianSeries, ILineChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, SpecPipe } from 'src/types'\nimport { isSubset } from './utils'\nimport { ANNOTATION_Z_INDEX } from '../../../../utils/constant'\n\nexport const annotationArea: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { annotation } = advancedVSeed\n\n if (!annotation || !annotation.annotationArea) {\n return spec\n }\n\n const { annotationArea } = annotation\n const annotationAreaList = Array.isArray(annotationArea) ? annotationArea : [annotationArea]\n\n const positionMap = {\n top: 'insideTop',\n topRight: 'insideTopRight',\n topLeft: 'insideTopLeft',\n bottom: 'insideBottom',\n bottomLeft: 'insideBottomLeft',\n bottomRight: 'insideBottomRight',\n left: 'insideLeft',\n right: 'insideRight',\n }\n\n const markArea = annotationAreaList.flatMap((annotationArea) => {\n const {\n selector: selectorPoint,\n text = '',\n textPosition = 'top',\n textColor = '#ffffff',\n textFontSize = 12,\n textFontWeight = 400,\n textAlign = 'center',\n textBaseline = 'top',\n backgroundBorderColor,\n backgroundBorderRadius = 4,\n backgroundBorderWidth = 1,\n backgroundColor = '#191d24',\n backgroundPadding = 10,\n backgroundVisible = true,\n outerPadding = 4,\n areaColor = '#888888',\n areaColorOpacity = 0.15,\n areaBorderColor,\n areaBorderRadius,\n areaBorderWidth,\n } = annotationArea\n\n const dataset = advancedVSeed.dataset.flat()\n const selectedData = dataset.filter((datum) => selector(datum, selectorPoint))\n\n return {\n zIndex: ANNOTATION_Z_INDEX,\n regionRelative: true,\n positions: (data: Datum[], context: ICartesianSeries) => {\n const positionData = data.filter((item) => selectedData.some((datum) => isSubset(datum, item)))\n const xyList = positionData.map((datum) => context.dataToPosition(datum) as { x: number; y: number })\n\n const yAxisHelper = context.getYAxisHelper() as unknown as {\n getBandwidth: (depth?: number) => number\n getScale: () => {\n range: () => number[]\n }\n }\n const xAxisHelper = context.getXAxisHelper() as unknown as {\n getBandwidth: (depth?: number) => number\n getScale: () => {\n range: () => number[]\n }\n }\n\n if (typeof xAxisHelper?.getBandwidth === 'function') {\n const yScale = yAxisHelper.getScale()\n\n const minX = Math.min(...xyList.map((item) => item.x)) - outerPadding\n const maxX = Math.max(...xyList.map((item) => item.x)) + outerPadding\n const minY = Math.min(...yScale.range())\n const maxY = Math.max(...yScale.range())\n return [\n // 左上\n {\n x: minX,\n y: minY,\n },\n // 右上\n {\n x: maxX,\n y: minY,\n },\n // 右下\n {\n x: maxX,\n y: maxY,\n },\n // 左下\n {\n x: minX,\n y: maxY,\n },\n ]\n }\n\n if (typeof yAxisHelper?.getBandwidth === 'function') {\n const xScale = xAxisHelper.getScale()\n\n const minY = Math.min(...xyList.map((item) => item.y)) - outerPadding\n const maxY = Math.max(...xyList.map((item) => item.y)) + outerPadding\n const minX = Math.min(...xScale.range())\n const maxX = Math.max(...xScale.range())\n\n return [\n // 左上\n {\n x: minX,\n y: minY,\n },\n // 右上\n {\n x: maxX,\n y: minY,\n },\n // 右下\n {\n x: maxX,\n y: maxY,\n },\n // 左下\n {\n x: minX,\n y: maxY,\n },\n ]\n }\n\n return []\n },\n label: {\n position: positionMap[textPosition],\n visible: true,\n text: text,\n style: {\n textAlign: textAlign,\n textBaseline: textBaseline,\n fill: textColor,\n fontSize: textFontSize,\n fontWeight: textFontWeight,\n },\n\n labelBackground: {\n visible: backgroundVisible,\n padding: backgroundPadding,\n style: {\n cornerRadius: backgroundBorderRadius ?? 4,\n fill: backgroundColor,\n stroke: backgroundBorderColor,\n strokeWidth: backgroundBorderWidth,\n },\n },\n },\n area: {\n style: {\n visible: true,\n fill: areaColor,\n fillOpacity: areaColorOpacity,\n stroke: areaBorderColor,\n strokeWidth: areaBorderWidth,\n cornerRadius: areaBorderRadius,\n },\n },\n }\n }) as ILineChartSpec['markArea']\n\n return {\n ...spec,\n markArea: markArea,\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 backgroundBorderColor,\n backgroundBorderRadius = 4,\n backgroundBorderWidth = 1,\n backgroundColor = '#191d24',\n backgroundPadding = 4,\n backgroundVisible = true,\n outerPadding = 8,\n areaColor = '#888888',\n areaColorOpacity = 0.15,\n areaBorderColor,\n areaBorderRadius,\n areaBorderWidth,\n } = annotationArea\n\n const dataset = advancedVSeed.dataset.flat()\n const selectedData = dataset.filter((datum) => selector(datum, selectorPoint))\n\n return {\n zIndex: ANNOTATION_Z_INDEX,\n regionRelative: true,\n positions: (data: Datum[], context: ICartesianSeries) => {\n const positionData = data.filter((item) => selectedData.some((datum) => isSubset(datum, item)))\n const xyList = positionData.map((datum) => context.dataToPosition(datum) as { x: number; y: number })\n\n const yAxisHelper = context.getYAxisHelper() as unknown as {\n getBandwidth: (depth?: number) => number\n getScale: () => {\n range: () => number[]\n }\n }\n const xAxisHelper = context.getXAxisHelper() as unknown as {\n getBandwidth: (depth?: number) => number\n getScale: () => {\n range: () => number[]\n }\n }\n\n if (typeof xAxisHelper?.getBandwidth === 'function') {\n const depth = context.fieldX.length ?? 0\n const xBandWidth = xAxisHelper?.getBandwidth?.(depth - 1)\n const yScale = yAxisHelper.getScale()\n\n const minX = Math.min(...xyList.map((item) => item.x)) - outerPadding\n const maxX = Math.max(...xyList.map((item) => item.x)) + xBandWidth + outerPadding\n const minY = Math.min(...yScale.range())\n const maxY = Math.max(...yScale.range())\n return [\n // 左上\n {\n x: minX,\n y: minY,\n },\n // 右上\n {\n x: maxX,\n y: minY,\n },\n // 右下\n {\n x: maxX,\n y: maxY,\n },\n // 左下\n {\n x: minX,\n y: maxY,\n },\n ]\n }\n\n if (typeof yAxisHelper?.getBandwidth === 'function') {\n const depth = context.fieldY.length ?? 0\n const yBandWidth = yAxisHelper?.getBandwidth?.(depth - 1)\n const xScale = xAxisHelper.getScale()\n\n const minY = Math.min(...xyList.map((item) => item.y)) - outerPadding\n const maxY = Math.max(...xyList.map((item) => item.y)) + yBandWidth + outerPadding\n const minX = Math.min(...xScale.range())\n const maxX = Math.max(...xScale.range())\n\n return [\n // 左上\n {\n x: minX,\n y: minY,\n },\n // 右上\n {\n x: maxX,\n y: minY,\n },\n // 右下\n {\n x: maxX,\n y: maxY,\n },\n // 左下\n {\n x: minX,\n y: maxY,\n },\n ]\n }\n\n return []\n },\n label: {\n position: positionMap[textPosition],\n visible: true,\n text: text,\n style: {\n textAlign: textAlign,\n textBaseline: textBaseline,\n fill: textColor,\n fontSize: textFontSize,\n fontWeight: textFontWeight,\n },\n\n labelBackground: {\n visible: backgroundVisible,\n padding: backgroundPadding,\n style: {\n cornerRadius: backgroundBorderRadius ?? 4,\n fill: backgroundColor,\n stroke: backgroundBorderColor,\n strokeWidth: backgroundBorderWidth,\n },\n },\n },\n area: {\n style: {\n visible: true,\n fill: areaColor,\n fillOpacity: areaColorOpacity,\n stroke: areaBorderColor,\n strokeWidth: areaBorderWidth,\n cornerRadius: areaBorderRadius,\n },\n },\n }\n }) as ILineChartSpec['markArea']\n\n return {\n ...spec,\n markArea: markArea,\n }\n}\n","import type { ICartesianCrosshairSpec, ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const verticalCrosshairLine: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n\n const config = advancedVSeed.config?.[chartType as 'line']?.crosshairLine\n if (!config) {\n return result\n }\n\n if (!result.crosshair) {\n result.crosshair = {}\n }\n\n const { visible = true, lineColor, labelColor, labelVisible, labelBackgroundColor } = config\n\n const crosshair = result.crosshair as ICartesianCrosshairSpec\n crosshair.xField = {\n visible,\n line: {\n type: 'line',\n style: {\n lineWidth: 1,\n opacity: 1,\n stroke: lineColor,\n lineDash: [4, 2],\n },\n },\n label: {\n visible: labelVisible,\n labelBackground: {\n visible: labelVisible,\n style: {\n fill: labelBackgroundColor,\n },\n },\n style: {\n fill: labelColor,\n },\n },\n }\n\n return result\n}\n","import type { ICartesianCrosshairSpec, ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const verticalCrosshairRect: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n\n const config = advancedVSeed.config?.[chartType as 'column']?.crosshairRect\n if (!config) {\n return result\n }\n\n if (!result.crosshair) {\n result.crosshair = {}\n }\n\n const { visible = true, rectColor, labelColor, labelVisible, labelBackgroundColor } = config\n const crosshair = result.crosshair as ICartesianCrosshairSpec\n crosshair.xField = {\n visible,\n line: {\n type: 'rect',\n style: {\n lineWidth: 0,\n opacity: 0.2,\n fill: rectColor,\n },\n },\n label: {\n visible: labelVisible,\n labelBackground: {\n visible: labelVisible,\n style: {\n fill: labelBackgroundColor,\n },\n },\n style: {\n fill: labelColor,\n },\n },\n }\n\n return result\n}\n","import type { ICartesianCrosshairSpec, ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const horizontalCrosshairRect: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n\n const config = advancedVSeed.config?.[chartType as 'column']?.crosshairRect\n if (!config) {\n return result\n }\n\n if (!result.crosshair) {\n result.crosshair = {}\n }\n\n const { visible = true, rectColor, labelColor, labelVisible, labelBackgroundColor } = config\n const crosshair = result.crosshair as ICartesianCrosshairSpec\n crosshair.yField = {\n visible,\n line: {\n type: 'rect',\n style: {\n lineWidth: 0,\n opacity: 0.2,\n fill: rectColor,\n },\n },\n label: {\n visible: labelVisible,\n labelBackground: {\n visible: labelVisible,\n style: {\n fill: labelBackgroundColor,\n },\n },\n style: {\n fill: labelColor,\n },\n },\n }\n\n return result\n}\n","import type { ICartesianCrosshairSpec, ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const horizontalCrosshairLine: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n\n const config = advancedVSeed.config?.[chartType as 'line']?.crosshairLine\n if (!config) {\n return result\n }\n\n if (!result.crosshair) {\n result.crosshair = {}\n }\n\n const { visible = true, lineColor, labelColor, labelVisible, labelBackgroundColor } = config\n\n const crosshair = result.crosshair as ICartesianCrosshairSpec\n crosshair.yField = {\n visible,\n line: {\n type: 'line',\n style: {\n lineWidth: 1,\n opacity: 1,\n stroke: lineColor,\n lineDash: [4, 2],\n },\n },\n label: {\n visible: labelVisible,\n labelBackground: {\n visible: labelVisible,\n style: {\n fill: labelBackgroundColor,\n },\n },\n style: {\n fill: labelColor,\n },\n },\n }\n\n return result\n}\n","import type { Spec, SpecPipe, SpecPipeline, SpecPipelineContext } from 'src/types'\nimport { execPipeline } from '../../../../utils'\nimport type { ICommonChartSpec, ILineSeriesSpec } from '@visactor/vchart'\n\nexport const series = (...args: SpecPipeline[]): SpecPipe => {\n const result = {\n type: 'common',\n padding: 0,\n region: [\n {\n clip: true,\n },\n ],\n } as ICommonChartSpec\n\n return (_, context) => {\n result.series = args.map((pipeline) => {\n return execPipeline<Spec, SpecPipelineContext>(pipeline, context, {})\n }) as ILineSeriesSpec[]\n\n return result\n }\n}\n","import type { 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} from '../pipes'\n\nconst line: SpecPipeline = [\n initLine,\n color,\n backgroundColor,\n datasetXY,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairLine,\n discreteLegend,\n pointStyle,\n pointStateDimensionHover,\n lineStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotLine: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initLine,\n color,\n backgroundColor,\n datasetXY,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairLine,\n pointStyle,\n pointStateDimensionHover,\n lineStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const lineSpecPipeline: SpecPipeline = [pivotAdapter(line, pivotLine)]\n","import 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} from '../pipes'\n\nconst column: SpecPipeline = [\n initColumn,\n stackCornerRadius,\n stackInverse,\n color,\n backgroundColor,\n datasetXY,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairRect,\n discreteLegend,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotColumn: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initColumn,\n stackCornerRadius,\n stackInverse,\n color,\n backgroundColor,\n datasetXY,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairRect,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const columnSpecPipeline = [pivotAdapter(column, pivotColumn)]\n","import 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} from '../pipes'\n\nconst columnParallel: SpecPipeline = [\n initColumnParallel,\n stackCornerRadius,\n color,\n backgroundColor,\n datasetXY,\n xBand,\n yLinear,\n label,\n tooltip,\n discreteLegend,\n verticalCrosshairRect,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotColumnParallel: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initColumnParallel,\n stackCornerRadius,\n color,\n backgroundColor,\n datasetXY,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairRect,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const columnParallelSpecPipeline: SpecPipeline = [pivotAdapter(columnParallel, pivotColumnParallel)]\n","import 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} from '../pipes'\n\nconst columnPercent: SpecPipeline = [\n initColumn,\n stackCornerRadius,\n stackInverse,\n color,\n backgroundColor,\n percent,\n datasetXY,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairRect,\n discreteLegend,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotColumnPercent: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initColumn,\n stackCornerRadius,\n stackInverse,\n color,\n percent,\n backgroundColor,\n datasetXY,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairRect,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const columnPercentSpecPipeline: SpecPipeline = [pivotAdapter(columnPercent, pivotColumnPercent)]\n","import 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} from '../pipes'\n\nconst bar: SpecPipeline = [\n initBar,\n stackCornerRadius,\n color,\n backgroundColor,\n datasetYX,\n xLinear,\n yBand,\n label,\n tooltip,\n horizontalCrosshairRect,\n discreteLegend,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotBar: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsCol,\n datasetPivot,\n pivotIndicators([\n initBar,\n stackCornerRadius,\n color,\n backgroundColor,\n datasetYX,\n xLinear,\n yBand,\n label,\n label,\n tooltip,\n horizontalCrosshairRect,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const barSpecPipeline: SpecPipeline = [pivotAdapter(bar, pivotBar)]\n","import 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} from '../pipes'\n\nconst barParallel: SpecPipeline = [\n initBarParallel,\n stackCornerRadius,\n color,\n backgroundColor,\n datasetYX,\n xLinear,\n yBand,\n label,\n tooltip,\n horizontalCrosshairRect,\n discreteLegend,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotBarParallel: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsCol,\n datasetPivot,\n pivotIndicators([\n initBarParallel,\n stackCornerRadius,\n color,\n backgroundColor,\n datasetYX,\n xLinear,\n yBand,\n label,\n tooltip,\n horizontalCrosshairRect,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const barParallelSpecPipeline: SpecPipeline = [pivotAdapter(barParallel, pivotBarParallel)]\n","import 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} from '../pipes'\n\nconst barPercent: SpecPipeline = [\n initBar,\n stackCornerRadius,\n color,\n backgroundColor,\n percent,\n datasetYX,\n xLinear,\n yBand,\n label,\n tooltip,\n horizontalCrosshairRect,\n discreteLegend,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotBarPercent: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsCol,\n datasetPivot,\n pivotIndicators([\n initBar,\n stackCornerRadius,\n color,\n backgroundColor,\n percent,\n datasetYX,\n yBand,\n xLinear,\n label,\n tooltip,\n horizontalCrosshairRect,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const barPercentSpecPipeline: SpecPipeline = [pivotAdapter(barPercent, pivotBarPercent)]\n","import 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} from '../pipes'\n\nconst area: SpecPipeline = [\n initArea,\n stackInverse,\n color,\n backgroundColor,\n datasetXY,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairLine,\n discreteLegend,\n pointStyle,\n pointStateDimensionHover,\n lineStyle,\n areaStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotArea: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initArea,\n color,\n backgroundColor,\n stackInverse,\n datasetXY,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairLine,\n pointStyle,\n pointStateDimensionHover,\n lineStyle,\n areaStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const areaSpecPipeline = [pivotAdapter(area, pivotArea)]\n","import 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} from '../pipes'\n\nconst areaPercent: SpecPipeline = [\n initArea,\n stackInverse,\n color,\n backgroundColor,\n percent,\n datasetXY,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairLine,\n discreteLegend,\n pointStyle,\n lineStyle,\n areaStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotAreaPercent: SpecPipeline = [\n initPivot,\n\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initArea,\n stackInverse,\n color,\n backgroundColor,\n percent,\n datasetXY,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairLine,\n pointStyle,\n lineStyle,\n areaStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const areaPercentSpecPipeline = [pivotAdapter(areaPercent, pivotAreaPercent)]\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n xBand,\n yLinear,\n backgroundColor,\n label,\n datasetPivot,\n pivotIndicators,\n pivotAdapter,\n initPivot,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n verticalCrosshairLine,\n initAreaRange,\n series,\n lineStyle,\n pointStyle,\n pointStateDimensionHover,\n areaStyle,\n} from '../pipes'\nimport { initAreaRangeLine1, initAreaRangeLine2 } from '../pipes/init/areaRange'\n\nconst areaRange: SpecPipeline = [\n series(\n [initAreaRange, areaStyle],\n [initAreaRangeLine1, lineStyle, pointStyle, pointStateDimensionHover],\n [initAreaRangeLine2, lineStyle, pointStyle, pointStateDimensionHover],\n ),\n datasetXY,\n backgroundColor,\n xBand,\n yLinear,\n label,\n verticalCrosshairLine,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotAreaRange: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n series(\n [initAreaRange, areaStyle],\n [initAreaRangeLine1, lineStyle, pointStyle, pointStateDimensionHover],\n [initAreaRangeLine2, lineStyle, pointStyle, pointStateDimensionHover],\n ),\n backgroundColor,\n datasetXY,\n xBand,\n yLinear,\n label,\n verticalCrosshairLine,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n]\n\nexport const areaRangeSpecPipeline = [pivotAdapter(areaRange, pivotAreaRange)]\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n yLinear,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n initPivot,\n datasetPivot,\n pivotDiscreteLegend,\n pivotIndicators,\n pivotAdapter,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n pointStyle,\n verticalCrosshairLine,\n xLinear,\n horizontalCrosshairLine,\n pointStateHover,\n initScatter\n} from '../pipes'\n\nconst scatter: SpecPipeline = [\n initScatter,\n color,\n backgroundColor,\n datasetXY,\n xLinear,\n yLinear,\n label,\n tooltip,\n verticalCrosshairLine,\n horizontalCrosshairLine,\n discreteLegend,\n pointStyle,\n pointStateHover,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotScatter: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initScatter,\n color,\n backgroundColor,\n datasetXY,\n xLinear,\n yLinear,\n label,\n tooltip,\n verticalCrosshairLine,\n horizontalCrosshairLine,\n pointStyle,\n pointStateHover,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const scatterSpecPipeline: SpecPipeline = [pivotAdapter(scatter, pivotScatter)]\n","import type { SpecPipeline } from 'src/types'\nimport {\n backgroundColor,\n color,\n datasetXY,\n datasetPivot,\n initPie,\n initPivot,\n label,\n discreteLegend,\n pivotAdapter,\n pivotColumnDimensions,\n pivotGridStyle,\n pivotIndicators,\n pivotIndicatorsAsRow,\n pivotDiscreteLegend,\n pivotRowDimensions,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n} from '../pipes'\n\nconst pie: SpecPipeline = [\n initPie,\n color,\n backgroundColor,\n datasetXY,\n label,\n tooltip,\n discreteLegend,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotPie: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initPie,\n color,\n backgroundColor,\n datasetXY,\n label,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const pieSpecPipeline: SpecPipeline = [pivotAdapter(pie, pivotPie)]\n","import type { SpecPipeline } from 'src/types'\nimport {\n backgroundColor,\n color,\n datasetXY,\n datasetPivot,\n initDonut,\n initPivot,\n label,\n discreteLegend,\n pivotAdapter,\n pivotColumnDimensions,\n pivotGridStyle,\n pivotIndicators,\n pivotIndicatorsAsRow,\n pivotDiscreteLegend,\n pivotRowDimensions,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n} from '../pipes'\n\nconst donut: SpecPipeline = [\n initDonut,\n color,\n backgroundColor,\n datasetXY,\n label,\n tooltip,\n discreteLegend,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotDonut: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initDonut,\n color,\n backgroundColor,\n datasetXY,\n label,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const donutSpecPipeline: SpecPipeline = [pivotAdapter(donut, pivotDonut)]\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n pivotAdapter,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n stackInverse,\n verticalCrosshairRect,\n stackCornerRadius,\n initRose,\n radiusAxis,\n angleAxis,\n} from '../pipes'\n\nconst rose: SpecPipeline = [\n initRose,\n stackCornerRadius,\n stackInverse,\n color,\n backgroundColor,\n datasetXY,\n radiusAxis,\n angleAxis,\n label,\n tooltip,\n verticalCrosshairRect,\n discreteLegend,\n]\n\nconst pivotRose: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initRose,\n stackCornerRadius,\n stackInverse,\n color,\n backgroundColor,\n datasetXY,\n radiusAxis,\n angleAxis,\n label,\n tooltip,\n verticalCrosshairRect,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const roseSpecPipeline = [pivotAdapter(rose, pivotRose)]\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n pivotIndicators,\n initPivot,\n datasetPivot,\n pivotAdapter,\n pivotDiscreteLegend,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n verticalCrosshairRect,\n stackCornerRadius,\n initRoseParallel,\n radiusAxis,\n angleAxis,\n} from '../pipes'\n\nconst roseParallel: SpecPipeline = [\n initRoseParallel,\n stackCornerRadius,\n color,\n backgroundColor,\n datasetXY,\n radiusAxis,\n angleAxis,\n label,\n tooltip,\n discreteLegend,\n verticalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotRoseParallel: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initRoseParallel,\n stackCornerRadius,\n color,\n backgroundColor,\n datasetXY,\n radiusAxis,\n angleAxis,\n label,\n tooltip,\n verticalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const roseParallelSpecPipeline: SpecPipeline = [pivotAdapter(roseParallel, pivotRoseParallel)]\n","import 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} from '../pipes'\n\nconst radar: SpecPipeline = [\n initRadar,\n color,\n backgroundColor,\n datasetXY,\n radarAngleAxis,\n radarRadiusAxis,\n label,\n tooltip,\n verticalCrosshairLine,\n discreteLegend,\n pointStyle,\n pointStateDimensionHover,\n lineStyle,\n areaStyle,\n // annotationPoint,\n // annotationVerticalLine,\n // annotationHorizontalLine,\n // annotationArea,\n]\n\nconst pivotRadar: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initRadar,\n color,\n backgroundColor,\n datasetXY,\n radarAngleAxis,\n radarRadiusAxis,\n label,\n tooltip,\n verticalCrosshairLine,\n pointStyle,\n pointStateDimensionHover,\n lineStyle,\n areaStyle,\n // annotationPoint,\n // annotationVerticalLine,\n // annotationHorizontalLine,\n // annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const radarSpecPipeline: SpecPipeline = [pivotAdapter(radar, pivotRadar)]\n","import type { SpecPipeline } from 'src/types'\nimport {\n backgroundColor,\n datasetXY,\n datasetPivot,\n initPivot,\n label,\n colorLegend,\n pivotAdapter,\n pivotColumnDimensions,\n pivotGridStyle,\n pivotIndicators,\n pivotIndicatorsAsRow,\n pivotRowDimensions,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n initFunnel,\n linearColor,\n} from '../pipes'\n\nconst funnel: SpecPipeline = [\n initFunnel,\n linearColor,\n backgroundColor,\n datasetXY,\n label,\n tooltip,\n colorLegend,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotFunnel: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initFunnel,\n linearColor,\n backgroundColor,\n datasetXY,\n label,\n tooltip,\n colorLegend,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n]\n\nexport const funnelSpecPipeline: SpecPipeline = [pivotAdapter(funnel, pivotFunnel)]\n","import type { IHeatmapChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initHeatmap: SpecPipe = (spec, context) => {\n const result = { ...spec } as IHeatmapChartSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].color) {\n return result\n }\n\n result.type = 'heatmap'\n result.direction = 'vertical'\n result.xField = encoding[0].x[0]\n result.yField = encoding[0].y[0]\n result.valueField = encoding[0].color[0]\n result.padding = 0\n result.cell = {\n style: {\n shape: 'rect',\n stroke: '#ffffff',\n lineWidth: 1,\n fill: {\n field: encoding[0].color[0],\n scale: 'color',\n },\n },\n }\n result.axes = [\n {\n type: 'band',\n orient: 'left',\n bandPadding: 0,\n },\n {\n type: 'band',\n orient: 'bottom',\n bandPadding: 0,\n },\n ]\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n backgroundColor,\n label,\n tooltip,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotAdapter,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n pointStyle,\n lineStyle,\n pointStateDimensionHover,\n colorLegend,\n linearColor,\n labelColorInversion,\n} from '../pipes'\nimport { initHeatmap } from '../pipes/init/heatmap'\n\nconst heatmap: SpecPipeline = [\n initHeatmap,\n linearColor,\n backgroundColor,\n datasetXY,\n label,\n labelColorInversion,\n colorLegend,\n tooltip,\n pointStyle,\n pointStateDimensionHover,\n lineStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotHeatmap: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initHeatmap,\n linearColor,\n backgroundColor,\n datasetXY,\n label,\n labelColorInversion,\n colorLegend,\n tooltip,\n pointStyle,\n pointStateDimensionHover,\n lineStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n]\n\nexport const heatmapSpecPipeline: SpecPipeline = [pivotAdapter(heatmap, pivotHeatmap)]\n","import type { ListTableConstructorOptions } from '@visactor/vtable'\nimport type { SpecPipe } from 'src/types'\n\nexport const initTable: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { dataset } = advancedVSeed\n\n return {\n ...spec,\n records: dataset,\n widthMode: 'standard',\n heightMode: 'autoHeight',\n autoWrapText: true,\n columnResizeMode: 'all',\n showHeader: true,\n tooltip: {\n isShowOverflowTextTooltip: true,\n },\n animationAppear: {\n duration: 300,\n delay: 250,\n type: 'one-by-one',\n direction: 'row',\n },\n hover: {\n highlightMode: 'row',\n },\n theme: {\n underlayBackgroundColor: 'transparent',\n },\n } as ListTableConstructorOptions\n}\n","import type { PivotTableConstructorOptions } from '@visactor/vtable'\nimport type { SpecPipe } from 'src/types'\n\nexport const initPivotTable: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { dataset } = advancedVSeed\n\n return {\n ...spec,\n records: dataset,\n widthMode: 'standard',\n heightMode: 'autoHeight',\n autoWrapText: true,\n columnResizeMode: 'all',\n columnResizeType: 'column',\n showColumnHeader: true,\n showRowHeader: true,\n select: {\n highlightMode: 'cell',\n headerSelectMode: 'inline',\n },\n hover: {\n highlightMode: 'cross',\n },\n tooltip: {\n isShowOverflowTextTooltip: true,\n },\n widthAdaptiveMode: 'all',\n animationAppear: {\n duration: 300,\n delay: 250,\n type: 'one-by-one',\n direction: 'row',\n },\n theme: {\n underlayBackgroundColor: 'transparent',\n },\n } as PivotTableConstructorOptions\n}\n","import type { ColumnsDefine, ListTableConstructorOptions } from '@visactor/vtable'\nimport type { Dimension, DimensionGroup, Measure, MeasureGroup, MeasureTree, SpecPipe } from 'src/types'\n\nexport const measureTreeToColumns: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const measures = (advancedVSeed as unknown as { measures: MeasureTree }).measures\n const result = { ...spec } as ListTableConstructorOptions\n\n const eachNode = (node: Measure | MeasureGroup) => {\n if ('children' in node) {\n return {}\n }\n\n return {\n width: 'auto',\n }\n }\n const columns = treeTreeToColumns<Measure, MeasureGroup>(measures, eachNode)\n return {\n ...result,\n columns: [...(result.columns || []), ...columns] as ListTableConstructorOptions['columns'],\n }\n}\n\nexport const dimensionTreeToColumns: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const dimensions = (advancedVSeed as unknown as { dimensions: MeasureTree }).dimensions\n const result = { ...spec } as ListTableConstructorOptions\n const eachNode = (node: Measure | MeasureGroup) => {\n if ('children' in node) {\n return {}\n }\n\n return {\n width: 'auto',\n }\n }\n const columns = treeTreeToColumns<Dimension, DimensionGroup>(dimensions, eachNode)\n\n return {\n ...result,\n columns: [...(result.columns || []), ...columns] as ListTableConstructorOptions['columns'],\n }\n}\n\nconst treeTreeToColumns = <\n T extends { id: string; alias?: string },\n U extends { id: string; alias?: string; children?: (T | U)[] },\n>(\n tree: (T | U)[],\n callback?: (node: T | U) => object,\n): ColumnsDefine[] => {\n const result = tree.map((item) => {\n if ('children' in item && Array.isArray(item.children)) {\n const groupNode = item as unknown as U\n const field = groupNode.id\n const title = groupNode.alias ?? groupNode.id\n const props = callback?.(groupNode) || {}\n // group\n return {\n field,\n title,\n columns: treeTreeToColumns(item.children, callback),\n ...props,\n }\n } else {\n const field = item.id\n const title = item.alias ?? item.id\n const props = callback?.(item) || {}\n // leaf\n return {\n field,\n title,\n ...props,\n }\n }\n }) as unknown as ColumnsDefine[]\n\n return result || []\n}\n","import type { Dimensions, SpecPipe } from 'src/types'\n\nexport const pivotColumns: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const dimensions = advancedVSeed.dimensions as Dimensions\n const columns = dimensions.filter((item) => item['location'] === 'columnDimension')\n\n return {\n ...spec,\n columns: columns.map((item) => {\n return {\n dimensionKey: item.id,\n title: item.alias || item.id,\n width: 'auto',\n }\n }),\n }\n}\n","import type { Dimensions, SpecPipe } from 'src/types'\n\nexport const pivotRows: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const dimensions = advancedVSeed.dimensions as Dimensions\n const rows = dimensions.filter((item) => item['location'] === 'rowDimension')\n\n return {\n ...spec,\n rows: rows.map((item) => {\n return {\n dimensionKey: item.id,\n title: item.alias || item.id,\n width: 'auto',\n }\n }),\n }\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport { intl } from 'src/i18n'\nimport type { Measures, SpecPipe } from 'src/types'\n\nexport const pivotIndicators: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const measures = (advancedVSeed as unknown as { measures: Measures }).measures\n\n return {\n ...spec,\n indicatorsAsCol: true,\n indicatorTitle: intl.i18n`指标名称`,\n indicators: measures.map((item) => {\n return {\n cellType: 'text',\n indicatorKey: item.id,\n title: item.alias || item.id,\n width: 'auto',\n }\n }) as unknown as PivotChartConstructorOptions['indicators'],\n }\n}\n","import type { BaseTableConstructorOptions } from '@visactor/vtable/es/ts-types'\nimport { color } from 'd3-color'\nimport type { SpecPipe, TableConfig } from 'src/types'\n\nexport const bodyStyle: SpecPipe = (spec, context) => {\n const result = { ...spec } as BaseTableConstructorOptions\n const { advancedVSeed } = context\n const { customTheme, chartType } = advancedVSeed\n const themConfig = customTheme?.config?.[chartType] as TableConfig\n\n if (!result.theme || !themConfig) return result\n\n // basic\n const borderColor = themConfig.borderColor || 'rgb(224, 224, 224)'\n const backgroundColor = themConfig.bodyBackgroundColor || '#fff'\n const fontColor = themConfig.bodyFontColor || '#1B1F23'\n const fontSize = themConfig.bodyFontSize || 12\n // Interaction\n const hoverCellBgColor = themConfig.hoverBodyBackgroundColor || '#bedaff'\n const hoverInlineColor = color(hoverCellBgColor)?.copy({ opacity: 0.2 }).toString()\n\n result.theme.bodyStyle = {\n borderColor: borderColor,\n borderLineWidth: 1,\n padding: [8.6, 12, 8.6, 12],\n textAlign: 'right',\n hover: {\n cellBgColor: hoverCellBgColor,\n inlineRowBgColor: hoverInlineColor,\n inlineColumnBgColor: hoverInlineColor,\n },\n color: fontColor,\n fontSize: fontSize,\n fontStyle: 'normal',\n fontWeight: 'normal',\n fontVariant: 'normal',\n bgColor: backgroundColor,\n lineHeight: fontSize * 1.5,\n }\n\n return result\n}\n","import type { BaseTableConstructorOptions } from '@visactor/vtable/es/ts-types'\nimport { color } from 'd3-color'\nimport type { SpecPipe, TableConfig } from 'src/types'\n\nexport const headerStyle: SpecPipe = (spec, context) => {\n const result = { ...spec } as BaseTableConstructorOptions\n const { advancedVSeed } = context\n const { customTheme, chartType } = advancedVSeed\n const themConfig = customTheme?.config?.[chartType] as TableConfig\n\n if (!result.theme || !themConfig) return result\n\n // basic\n const borderColor = themConfig.borderColor || 'rgb(224, 224, 224)'\n const backgroundColor = themConfig.headerBackgroundColor || '#EEF1F5'\n const fontColor = themConfig.headerFontColor || '#1B1F23'\n const fontSize = themConfig.headerFontSize || 12\n // Interaction\n const hoverCellBgColor = themConfig.hoverHeaderBackgroundColor || '#bedaff'\n const hoverInlineColor = themConfig.hoverHeaderBackgroundColor\n\n result.theme.headerStyle = {\n borderColor: borderColor,\n borderLineWidth: 1,\n padding: [8, 12, 8, 12],\n textAlign: 'center',\n hover: {\n cellBgColor: color(hoverCellBgColor)?.copy({ opacity: 1 }).brighter(0.5).toString(),\n inlineRowBgColor: hoverInlineColor,\n inlineColumnBgColor: hoverInlineColor,\n },\n frameStyle: {\n borderColor: [null, null, borderColor, null],\n borderLineWidth: 1,\n },\n fontSize: fontSize,\n fontVariant: 'normal',\n fontStyle: 'normal',\n fontWeight: 'bold',\n color: fontColor,\n bgColor: backgroundColor,\n lineHeight: fontSize * 1.5,\n }\n\n return result\n}\n","import type { BaseTableConstructorOptions } from '@visactor/vtable/es/ts-types'\nimport { color } from 'd3-color'\n\nimport type { SpecPipe, TableConfig } from 'src/types'\n\nexport const rowHeaderStyle: SpecPipe = (spec, context) => {\n const result = { ...spec } as BaseTableConstructorOptions\n const { advancedVSeed } = context\n const { customTheme, chartType } = advancedVSeed\n const themConfig = customTheme?.config?.[chartType] as TableConfig\n\n if (!result.theme || !themConfig) return result\n\n // basic\n const borderColor = themConfig.borderColor || 'rgb(224, 224, 224)'\n const backgroundColor = themConfig.headerBackgroundColor || '#EEF1F5'\n const fontColor = themConfig.headerFontColor || '#1B1F23'\n const fontSize = themConfig.headerFontSize || 12\n // Interaction\n const hoverCellBgColor = themConfig.hoverHeaderBackgroundColor || '#bedaff'\n const hoverInlineColor = themConfig.hoverHeaderBackgroundColor\n\n result.theme.rowHeaderStyle = {\n borderColor: borderColor,\n borderLineWidth: 1,\n padding: [8.6, 12, 8.6, 12],\n textAlign: 'left',\n hover: {\n cellBgColor: color(hoverCellBgColor)?.copy({ opacity: 1 }).brighter(0.5).toString(),\n inlineRowBgColor: hoverInlineColor,\n inlineColumnBgColor: hoverInlineColor,\n },\n frameStyle: {\n borderColor: [null, borderColor, null, null],\n borderLineWidth: 1,\n },\n fontSize: fontSize,\n fontVariant: 'normal',\n fontStyle: 'normal',\n fontWeight: 'bold',\n color: fontColor,\n bgColor: backgroundColor,\n lineHeight: fontSize * 1.5,\n }\n\n return result\n}\n","import type { BaseTableConstructorOptions } from '@visactor/vtable/es/ts-types'\nimport { color } from 'd3-color'\nimport type { SpecPipe, TableConfig } from 'src/types'\n\nexport const cornerHeaderStyle: SpecPipe = (spec, context) => {\n const result = { ...spec } as BaseTableConstructorOptions\n const { advancedVSeed } = context\n const { customTheme, chartType } = advancedVSeed\n const themConfig = customTheme?.config?.[chartType] as TableConfig\n\n if (!result.theme || !themConfig) return result\n\n // basic\n const borderColor = themConfig.borderColor || 'rgb(224, 224, 224)'\n const backgroundColor = themConfig.headerBackgroundColor || '#EEF1F5'\n const fontColor = themConfig.headerFontColor || '#1B1F23'\n const fontSize = themConfig.headerFontSize || 12\n // Interaction\n const hoverCellBgColor = themConfig.hoverHeaderBackgroundColor || '#bedaff'\n const hoverInlineColor = 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: color(hoverCellBgColor)?.copy({ opacity: 1 }).brighter(0.5).toString(),\n inlineRowBgColor: hoverInlineColor,\n inlineColumnBgColor: hoverInlineColor,\n },\n frameStyle: {\n borderColor: [null, borderColor, borderColor, null],\n borderLineWidth: 1,\n },\n fontSize: fontSize,\n fontVariant: 'normal',\n fontStyle: 'normal',\n fontWeight: 'bold',\n color: fontColor,\n bgColor: backgroundColor,\n lineHeight: fontSize * 1.5,\n }\n\n return result\n}\n","import type { BaseTableConstructorOptions } from '@visactor/vtable/es/ts-types'\nimport type { SpecPipe, TableConfig } from 'src/types'\n\nexport const frameStyle: SpecPipe = (spec, context) => {\n const result = { ...spec } as BaseTableConstructorOptions\n const { advancedVSeed } = context\n const { customTheme, chartType } = advancedVSeed\n const themConfig = customTheme?.config?.[chartType] as TableConfig\n\n if (!result.theme || !themConfig) return result\n\n const borderColor = themConfig.borderColor || 'rgb(224, 224, 224)'\n\n result.theme.frameStyle = {\n borderColor,\n borderLineWidth: 0,\n cornerRadius: 4,\n }\n\n return result\n}\n","import type { BaseTableConstructorOptions } from '@visactor/vtable/es/ts-types'\nimport { color } from 'd3-color'\nimport type { SpecPipe, TableConfig } from 'src/types'\n\nexport const selectionStyle: SpecPipe = (spec, context) => {\n const result = { ...spec } as BaseTableConstructorOptions\n const { advancedVSeed } = context\n const { customTheme, chartType } = advancedVSeed\n const themConfig = customTheme?.config?.[chartType] as TableConfig\n\n if (!result.theme || !themConfig) return result\n\n const borderColor = themConfig.selectedBorderColor || 'rgb(224, 224, 224)'\n\n result.theme.selectionStyle = {\n cellBorderColor: borderColor,\n cellBorderLineWidth: 2,\n cellBgColor: color(borderColor)\n ?.copy({\n opacity: 0.15,\n })\n .toString(),\n }\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport { initTable, dimensionTreeToColumns, measureTreeToColumns, bodyStyle, headerStyle, frameStyle, selectionStyle } from '../pipes'\n\nexport const tableSpecPipeline: SpecPipeline = [\n initTable,\n dimensionTreeToColumns,\n measureTreeToColumns,\n bodyStyle,\n headerStyle,\n frameStyle,\n selectionStyle,\n]\n","import type { SpecPipeline } from 'src/types'\nimport {\n initPivotTable,\n pivotColumns,\n pivotRows,\n pivotIndicators,\n bodyStyle,\n headerStyle,\n rowHeaderStyle,\n cornerHeaderStyle,\n frameStyle,\n selectionStyle,\n} from '../pipes'\n\nexport const pivotTableSpecPipeline: SpecPipeline = [\n initPivotTable,\n pivotColumns,\n pivotRows,\n pivotIndicators,\n bodyStyle,\n headerStyle,\n rowHeaderStyle,\n cornerHeaderStyle,\n frameStyle,\n selectionStyle,\n]\n","import type { AdvancedPipelineContext, AdvancedVSeed } from 'src/types'\nimport { execPipeline } from '../../pipeline'\nimport type { Builder } from './builder'\n\nexport const buildAdvanced = (builder: Builder): AdvancedVSeed | null => {\n const { chartType } = builder.vseed\n if (!chartType) {\n throw new Error('chartType is nil in buildAdvanced')\n }\n\n const pipeline = builder.getAdvancedPipeline(chartType)\n if (!pipeline) {\n throw new Error(`no advanced pipeline for chartType ${chartType}`)\n }\n\n const context: AdvancedPipelineContext = {\n vseed: builder.vseed,\n customTheme: builder.getThemeMap(),\n }\n\n try {\n return execPipeline<AdvancedVSeed, AdvancedPipelineContext>(pipeline, context)\n } catch (e) {\n console.error(e)\n throw new Error(`buildAdvanced error, see error info in console`)\n }\n}\n","import type { Spec } from 'src/types'\nimport type { Builder } from './builder'\nimport type { AdvancedVSeed, SpecPipelineContext } from 'src/types'\nimport { execPipeline } from '../../pipeline'\n\nexport const buildSpec = (builder: Builder, advancedVSeed: AdvancedVSeed): Spec => {\n const { chartType } = builder.vseed\n if (!chartType) {\n throw new Error('chartType is nil in buildSpec')\n }\n\n const pipeline = builder.getSpecPipeline(chartType)\n if (!pipeline) {\n throw new Error(`no spec pipeline for chartType ${chartType}`)\n }\n\n const context: SpecPipelineContext = {\n vseed: builder.vseed,\n advancedVSeed,\n }\n try {\n return execPipeline<Spec, SpecPipelineContext>(pipeline, context)\n } catch (e) {\n console.error(e)\n throw new Error(`buildSpec error, see error info in console`)\n }\n}\n","import type { Spec } from 'src/types'\nimport type { Builder } from './builder'\n\nexport const build = (builder: Builder): Spec => {\n // console.log('debug vseed', builder.vseed)\n const advancedVSeed = builder.buildAdvanced()\n builder.advancedVSeed = advancedVSeed\n // console.log('debug advancedVSeed', advancedVSeed)\n if (!advancedVSeed) {\n throw new Error('advancedVSeed is null')\n }\n const spec = builder.buildSpec(advancedVSeed)\n builder.spec = spec\n // console.log('debug spec', spec)\n return spec\n}\n","import { unique } from 'remeda'\nimport type { Builder } from '../builder'\n\nexport const getColorItems = (builder: Builder): string[] => {\n const advancedVSeed = builder.advancedVSeed\n if (!advancedVSeed) {\n return []\n }\n\n const { datasetReshapeInfo } = advancedVSeed\n const colorItems = unique(datasetReshapeInfo.flatMap((d) => d.unfoldInfo.colorItems))\n const colorIdMap = datasetReshapeInfo.reduce<Record<string, string>>((prev, cur) => {\n return { ...prev, ...cur.unfoldInfo.colorIdMap }\n }, {})\n\n return colorItems.map((d) => colorIdMap[d])\n}\n\nexport const getColorIdMap = (builder: Builder): Record<string, string> => {\n const advancedVSeed = builder.advancedVSeed\n if (!advancedVSeed) {\n return {}\n }\n\n const { datasetReshapeInfo } = advancedVSeed\n const colorIdMap = datasetReshapeInfo.reduce<Record<string, string>>((prev, cur) => {\n return { ...prev, ...cur.unfoldInfo.colorIdMap }\n }, {})\n\n return colorIdMap\n}\n","import type {\n AdvancedPipe,\n AdvancedPipeline,\n AdvancedVSeed,\n ChartType,\n CustomThemeConfig,\n Spec,\n SpecPipe,\n SpecPipeline,\n VSeed,\n VSeedBuilder,\n} from 'src/types'\nimport { buildAdvanced } from './buildAdvanced'\nimport { buildSpec } from './buildSpec'\nimport { build } from './build'\nimport { intl } from 'src/i18n'\nimport { getColorIdMap, getColorItems } from './advanced'\n\nexport class Builder implements VSeedBuilder {\n private _vseed: VSeed\n private _advancedVSeed: AdvancedVSeed | null = null\n private _spec: Spec | null = null\n\n constructor(vseed: VSeed) {\n this._vseed = vseed\n this._vseed.locale = vseed.locale || intl.getLocale()\n }\n\n build = () => build(this)\n\n buildSpec = (advanced: AdvancedVSeed) => buildSpec(this, advanced)\n\n buildAdvanced = () => buildAdvanced(this)\n\n 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 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 getTheme = (themeKey: string) => Builder._themeMap[themeKey]\n getThemeMap = () => Builder._themeMap\n\n getColorItems = () => getColorItems(this)\n getColorIdMap = () => getColorIdMap(this)\n\n get vseed() {\n return this._vseed\n }\n\n set vseed(value) {\n this._vseed = value\n }\n\n get advancedVSeed() {\n return this._advancedVSeed\n }\n\n set advancedVSeed(value) {\n this._advancedVSeed = value\n }\n\n get spec() {\n return this._spec\n }\n\n set spec(value) {\n this._spec = value\n }\n\n static _advancedPipelineMap: Partial<Record<ChartType, AdvancedPipeline>> = {}\n static _specPipelineMap: Partial<Record<ChartType, SpecPipeline>> = {}\n\n static _customAdvancedPipe: Partial<Record<ChartType, AdvancedPipe>> = {}\n static _customSpecPipe: Partial<Record<ChartType, SpecPipe>> = {}\n\n static _themeMap: Record<string, CustomThemeConfig> = {}\n static from = (vseed: VSeed) => new Builder(vseed)\n}\n","import {\n areaAdvancedPipeline,\n areaPercentAdvancedPipeline,\n areaPercentSpecPipeline,\n areaRangeAdvancedPipeline,\n areaRangeSpecPipeline,\n areaSpecPipeline,\n barAdvancedPipeline,\n barParallelAdvancedPipeline,\n barParallelSpecPipeline,\n barPercentAdvancedPipeline,\n barPercentSpecPipeline,\n barSpecPipeline,\n columnAdvancedPipeline,\n columnParallelAdvancedPipeline,\n columnParallelSpecPipeline,\n columnPercentAdvancedPipeline,\n columnPercentSpecPipeline,\n columnSpecPipeline,\n donutAdvancedPipeline,\n donutSpecPipeline,\n funnelAdvancedPipeline,\n funnelSpecPipeline,\n heatmapAdvancedPipeline,\n heatmapSpecPipeline,\n lineAdvancedPipeline,\n lineSpecPipeline,\n pieAdvancedPipeline,\n pieSpecPipeline,\n pivotTableAdvancedPipeline,\n pivotTableSpecPipeline,\n radarAdvancedPipeline,\n radarSpecPipeline,\n roseAdvancedPipeline,\n roseParallelAdvancedPipeline,\n roseParallelSpecPipeline,\n roseSpecPipeline,\n scatterAdvancedPipeline,\n scatterSpecPipeline,\n tableAdvancedPipeline,\n tableSpecPipeline,\n} from '../../pipeline'\nimport { Builder } from '../builder'\n\nexport const registerColumn = () => {\n Builder._advancedPipelineMap['column'] = columnAdvancedPipeline\n Builder._specPipelineMap['column'] = columnSpecPipeline\n}\n\nexport const registerBar = () => {\n Builder._advancedPipelineMap['bar'] = barAdvancedPipeline\n Builder._specPipelineMap['bar'] = barSpecPipeline\n}\n\nexport const registerLine = () => {\n Builder._advancedPipelineMap['line'] = lineAdvancedPipeline\n Builder._specPipelineMap['line'] = lineSpecPipeline\n}\n\nexport const registerArea = () => {\n Builder._advancedPipelineMap['area'] = areaAdvancedPipeline\n Builder._specPipelineMap['area'] = areaSpecPipeline\n}\n\nexport const registerAreaPercent = () => {\n Builder._advancedPipelineMap['areaPercent'] = areaPercentAdvancedPipeline\n Builder._specPipelineMap['areaPercent'] = areaPercentSpecPipeline\n}\n\nexport const registerAreaRange = () => {\n Builder._advancedPipelineMap['areaRange'] = areaRangeAdvancedPipeline\n Builder._specPipelineMap['areaRange'] = areaRangeSpecPipeline\n}\n\nexport const registerBarPercent = () => {\n Builder._advancedPipelineMap['barPercent'] = barPercentAdvancedPipeline\n Builder._specPipelineMap['barPercent'] = barPercentSpecPipeline\n}\n\nexport const registerColumnPercent = () => {\n Builder._advancedPipelineMap['columnPercent'] = columnPercentAdvancedPipeline\n Builder._specPipelineMap['columnPercent'] = columnPercentSpecPipeline\n}\n\nexport const registerColumnParallel = () => {\n Builder._advancedPipelineMap['columnParallel'] = columnParallelAdvancedPipeline\n Builder._specPipelineMap['columnParallel'] = columnParallelSpecPipeline\n}\n\nexport const registerBarParallel = () => {\n Builder._advancedPipelineMap['barParallel'] = barParallelAdvancedPipeline\n Builder._specPipelineMap['barParallel'] = barParallelSpecPipeline\n}\n\nexport const registerPie = () => {\n Builder._advancedPipelineMap['pie'] = pieAdvancedPipeline\n Builder._specPipelineMap['pie'] = pieSpecPipeline\n}\n\nexport const registerDonut = () => {\n Builder._advancedPipelineMap['donut'] = donutAdvancedPipeline\n Builder._specPipelineMap['donut'] = donutSpecPipeline\n}\n\nexport const registerRose = () => {\n Builder._advancedPipelineMap['rose'] = roseAdvancedPipeline\n Builder._specPipelineMap['rose'] = roseSpecPipeline\n}\n\nexport const registerRoseParallel = () => {\n Builder._advancedPipelineMap['roseParallel'] = roseParallelAdvancedPipeline\n Builder._specPipelineMap['roseParallel'] = roseParallelSpecPipeline\n}\n\nexport const registerFunnel = () => {\n Builder._advancedPipelineMap['funnel'] = funnelAdvancedPipeline\n Builder._specPipelineMap['funnel'] = funnelSpecPipeline\n}\n\nexport const registerScatter = () => {\n Builder._advancedPipelineMap['scatter'] = scatterAdvancedPipeline\n Builder._specPipelineMap['scatter'] = scatterSpecPipeline\n}\n\nexport const registerTable = () => {\n Builder._advancedPipelineMap['table'] = tableAdvancedPipeline\n Builder._specPipelineMap['table'] = tableSpecPipeline\n}\n\nexport const registerPivotTable = () => {\n Builder._advancedPipelineMap['pivotTable'] = pivotTableAdvancedPipeline\n Builder._specPipelineMap['pivotTable'] = pivotTableSpecPipeline\n}\nexport const registerHeatmap = () => {\n Builder._advancedPipelineMap['heatmap'] = heatmapAdvancedPipeline\n Builder._specPipelineMap['heatmap'] = heatmapSpecPipeline\n}\nexport const registerRadar = () => {\n Builder._advancedPipelineMap['radar'] = radarAdvancedPipeline\n Builder._specPipelineMap['radar'] = radarSpecPipeline\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: 100,\n labelAutoRotate: false,\n labelAutoRotateAngleRange: [0, -45, -90],\n label: {\n visible: true,\n labelAngle: 0,\n labelColor: '#797B85',\n labelFontSize: 12,\n labelFontWeight: 400,\n },\n title: {\n visible: false,\n titleText: '',\n titleColor: '#646A73',\n titleFontSize: 12,\n titleFontWeight: 400,\n },\n grid: {\n visible: false,\n gridColor: '#36415926',\n gridWidth: 0.5,\n },\n tick: {\n visible: false,\n tickInside: false,\n tickSize: 4,\n tickColor: '#3641594d',\n },\n line: {\n visible: true,\n lineColor: '#3641594d',\n lineWidth: 1,\n },\n }\n const barBandAxis: YBandAxis = {\n ...bandAxis,\n labelAutoHide: false,\n labelAutoHideGap: 1,\n labelAutoLimit: false,\n labelAutoLimitLength: undefined,\n labelAutoRotate: false,\n labelAutoRotateAngleRange: [0, -45, -90],\n }\n\n const crosshairLine = {\n visible: true,\n labelVisible: true,\n lineColor: '#3641594d',\n labelColor: '#ffffff',\n labelBackgroundColor: '#364159',\n }\n const crosshairRect = {\n visible: true,\n labelVisible: true,\n rectColor: '#3641594d',\n labelColor: '#ffffff',\n labelBackgroundColor: '#364159',\n }\n\n const baseConfig: {\n backgroundColor?: BackgroundColor\n color?: Color\n label?: Label\n tooltip?: Tooltip\n legend?: Legend\n } = {\n backgroundColor: 'transparent',\n color: {\n colorScheme: [\n '#8D72F6',\n '#5766EC',\n '#66A3FE',\n '#51D5E6',\n '#4EC0B3',\n '#F9DF90',\n '#F9AD71',\n '#ED8888',\n '#E9A0C3',\n '#D77DD3',\n ],\n },\n label: {\n enable: true,\n },\n tooltip: {\n enable: true,\n },\n legend: {\n enable: true,\n border: true,\n maxSize: 1,\n shapeType: 'rectRound',\n position: 'rt',\n labelFontColor: '#646A73',\n labelFontSize: 12,\n labelFontWeight: 400,\n },\n }\n const tableConfig: TableConfig = {\n borderColor: '#e3e5eb',\n\n bodyFontSize: 12,\n bodyFontColor: '#141414',\n bodyBackgroundColor: 'transparent',\n\n headerFontSize: 12,\n headerFontColor: '#21252c',\n headerBackgroundColor: '#f6f7f9',\n\n hoverBodyBackgroundColor: '#bedaff',\n hoverHeaderBackgroundColor: '#D9DDE488',\n selectedBorderColor: '#4080ff',\n }\n\n return {\n config: {\n // table\n table: tableConfig,\n pivotTable: tableConfig,\n // cartesian\n line: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine,\n },\n column: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairRect,\n stackCornerRadius: [4, 4, 0, 0],\n },\n columnParallel: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairRect,\n stackCornerRadius: [4, 4, 0, 0],\n },\n columnPercent: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairRect,\n stackCornerRadius: [4, 4, 0, 0],\n },\n bar: {\n ...baseConfig,\n xAxis: linearAxis,\n yAxis: barBandAxis,\n crosshairRect,\n stackCornerRadius: [0, 4, 4, 0],\n },\n barParallel: {\n ...baseConfig,\n xAxis: linearAxis,\n yAxis: barBandAxis,\n crosshairRect,\n stackCornerRadius: [0, 4, 4, 0],\n },\n barPercent: {\n ...baseConfig,\n xAxis: linearAxis,\n yAxis: barBandAxis,\n crosshairRect,\n stackCornerRadius: [0, 4, 4, 0],\n },\n area: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine,\n },\n areaPercent: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine,\n },\n areaRange: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine,\n },\n scatter: {\n ...baseConfig,\n xAxis: {\n ...linearAxis,\n line: {\n ...linearAxis.line,\n visible: true,\n },\n },\n yAxis: {\n ...linearAxis,\n line: {\n ...linearAxis.line,\n visible: true,\n },\n },\n crosshairLine,\n },\n // polar\n pie: {\n ...baseConfig,\n },\n donut: {\n ...baseConfig,\n },\n radar: {\n ...baseConfig,\n },\n rose: {\n ...baseConfig,\n },\n roseParallel: {\n ...baseConfig,\n },\n // other\n funnel: {\n ...baseConfig,\n color: {\n colorScheme: [\n '#5766EC',\n '#6372F0',\n '#7080F4',\n '#7C8CFA',\n '#8998FF',\n '#95A3FF',\n '#A0AEFF',\n '#ACB9FF',\n '#B7C4FF',\n '#C2CEFF',\n ].reverse(),\n },\n },\n heatmap: {\n ...baseConfig,\n color: {\n colorScheme: [\n '#5766EC',\n '#6372F0',\n '#7080F4',\n '#7C8CFA',\n '#8998FF',\n '#95A3FF',\n '#A0AEFF',\n '#ACB9FF',\n '#B7C4FF',\n '#C2CEFF',\n ].reverse(),\n },\n },\n },\n }\n}\n","import type {\n BackgroundColor,\n Color,\n CustomThemeConfig,\n Label,\n Legend,\n TableConfig,\n Tooltip,\n YBandAxis,\n YLinearAxis,\n} from 'src/types'\n\nexport const darkTheme = (): CustomThemeConfig => {\n const linearAxis: YLinearAxis = {\n nice: true,\n zero: true,\n label: {\n visible: true,\n labelAngle: 0,\n labelColor: '#E2E3E6',\n labelFontSize: 12,\n labelFontWeight: 400,\n },\n title: {\n visible: false,\n titleText: '',\n titleColor: '#FDFDFD',\n titleFontSize: 12,\n titleFontWeight: 400,\n },\n grid: {\n visible: true,\n gridColor: '#404349',\n gridWidth: 0.5,\n },\n tick: {\n visible: false,\n tickInside: false,\n tickSize: 4,\n tickColor: '#4B4F54',\n },\n line: {\n visible: false,\n lineColor: '#4B4F54',\n lineWidth: 1,\n },\n }\n const bandAxis: YBandAxis = {\n labelAutoHide: true,\n labelAutoHideGap: 4,\n labelAutoLimit: true,\n labelAutoLimitLength: 100,\n labelAutoRotate: false,\n labelAutoRotateAngleRange: [0, -45, -90],\n label: {\n visible: true,\n labelAngle: 0,\n labelColor: '#E2E3E6',\n labelFontSize: 12,\n labelFontWeight: 400,\n },\n title: {\n visible: false,\n titleText: '',\n titleColor: '#FDFDFD',\n titleFontSize: 12,\n titleFontWeight: 400,\n },\n grid: {\n visible: false,\n gridColor: '#404349',\n gridWidth: 0.5,\n },\n tick: {\n visible: false,\n tickInside: false,\n tickSize: 4,\n tickColor: '#4B4F54',\n },\n line: {\n visible: true,\n lineColor: '#4B4F54',\n lineWidth: 1,\n },\n }\n const barBandAxis: YBandAxis = {\n ...bandAxis,\n labelAutoHide: false,\n labelAutoHideGap: 1,\n labelAutoLimit: false,\n labelAutoLimitLength: undefined,\n labelAutoRotate: false,\n labelAutoRotateAngleRange: [0, -45, -90],\n }\n const crosshairLine = {\n visible: true,\n labelVisible: true,\n lineColor: '#E2E3E6',\n labelColor: '#4B4F54',\n labelBackgroundColor: '#ffffff',\n }\n const crosshairRect = {\n visible: true,\n labelVisible: true,\n lineColor: '#E2E3E6',\n labelColor: '#4B4F54',\n labelBackgroundColor: '#ffffff',\n }\n\n const baseConfig: {\n backgroundColor?: BackgroundColor\n color?: Color\n label?: Label\n tooltip?: Tooltip\n legend?: Legend\n } = {\n backgroundColor: 'transparent',\n color: {\n colorScheme: [\n '#2E62F1',\n '#4DC36A',\n '#FF8406',\n '#FFCC00',\n '#4F44CF',\n '#5AC8FA',\n '#003A8C',\n '#B08AE2',\n '#FF6341',\n '#98DD62',\n ],\n },\n label: {\n enable: true,\n },\n tooltip: {\n enable: true,\n },\n legend: {\n enable: true,\n border: true,\n maxSize: 1,\n position: 'rt',\n shapeType: 'rectRound',\n labelFontColor: '#FDFDFD',\n labelFontSize: 12,\n labelFontWeight: 400,\n },\n }\n\n const tableConfig: TableConfig = {\n borderColor: '#4b4e53',\n\n bodyFontSize: 12,\n bodyFontColor: '#fdfdfd',\n bodyBackgroundColor: 'transparent',\n\n headerFontSize: 12,\n headerFontColor: '#fdfdfd',\n headerBackgroundColor: '#36393e',\n\n hoverBodyBackgroundColor: '#4284ff66',\n hoverHeaderBackgroundColor: '#5f5f5f88',\n selectedBorderColor: '#3073F2',\n }\n\n return {\n config: {\n table: tableConfig,\n pivotTable: tableConfig,\n\n // cartesian\n line: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine: crosshairLine,\n },\n column: {\n ...baseConfig,\n\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairRect: crosshairRect,\n stackCornerRadius: [4, 4, 0, 0],\n },\n columnParallel: {\n ...baseConfig,\n\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairRect: crosshairRect,\n stackCornerRadius: [4, 4, 0, 0],\n },\n columnPercent: {\n ...baseConfig,\n\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairRect: crosshairRect,\n stackCornerRadius: [4, 4, 0, 0],\n },\n bar: {\n ...baseConfig,\n\n xAxis: linearAxis,\n yAxis: barBandAxis,\n crosshairRect: crosshairRect,\n stackCornerRadius: [0, 4, 4, 0],\n },\n barParallel: {\n ...baseConfig,\n\n xAxis: linearAxis,\n yAxis: barBandAxis,\n crosshairRect: crosshairRect,\n stackCornerRadius: [0, 4, 4, 0],\n },\n barPercent: {\n ...baseConfig,\n\n xAxis: linearAxis,\n yAxis: barBandAxis,\n crosshairRect: crosshairRect,\n stackCornerRadius: [0, 4, 4, 0],\n },\n area: {\n ...baseConfig,\n\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine: crosshairLine,\n },\n areaPercent: {\n ...baseConfig,\n\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine: crosshairLine,\n },\n areaRange: {\n ...baseConfig,\n\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine: crosshairLine,\n },\n scatter: {\n ...baseConfig,\n\n xAxis: {\n ...linearAxis,\n line: {\n ...linearAxis.line,\n visible: true,\n },\n },\n yAxis: {\n ...linearAxis,\n line: {\n ...linearAxis.line,\n visible: true,\n },\n },\n crosshairLine,\n },\n // polar\n pie: {\n ...baseConfig,\n },\n donut: {\n ...baseConfig,\n },\n radar: {\n ...baseConfig,\n },\n rose: {\n ...baseConfig,\n },\n roseParallel: {\n ...baseConfig,\n },\n // other\n funnel: {\n ...baseConfig,\n color: {\n colorScheme: [\n '#2E62F1',\n '#3A6EF6',\n '#4780FA',\n '#548CFE',\n '#6198FF',\n '#6FA3FF',\n '#7CACFF',\n '#88B7FF',\n '#94C2FF',\n '#A0CEFF',\n ],\n },\n },\n heatmap: {\n ...baseConfig,\n },\n },\n }\n}\n","import type { CustomThemeConfig } from 'src/types'\nimport { Builder } from '../builder'\nimport { darkTheme, lightTheme } from '../../theme'\n\nexport const registerCustomTheme = (\n key: string,\n themeConfig:\n | CustomThemeConfig\n | ((props: { lightTheme: CustomThemeConfig; darkTheme: CustomThemeConfig }) => CustomThemeConfig),\n) => {\n const customTheme =\n typeof themeConfig === 'function' ? themeConfig({ lightTheme: lightTheme(), darkTheme: darkTheme() }) : themeConfig\n Builder._themeMap[key] = customTheme\n}\n\nexport const registerLightTheme = () => {\n registerCustomTheme('light', lightTheme())\n}\n\nexport const registerDarkTheme = () => {\n registerCustomTheme('dark', darkTheme())\n}\n","import {\n registerArea,\n registerAreaPercent,\n registerBar,\n registerBarParallel,\n registerBarPercent,\n registerColumn,\n registerColumnParallel,\n registerColumnPercent,\n registerLine,\n registerPie,\n registerDonut,\n registerRose,\n registerRoseParallel,\n registerFunnel,\n registerScatter,\n registerTable,\n registerPivotTable,\n registerAreaRange,\n registerHeatmap,\n registerRadar,\n} from './chartType'\nimport { registerDarkTheme, registerLightTheme } from './theme'\n\nexport const registerAll = () => {\n /**\n * ------------------\n * ChartTypes\n * ------------------\n */\n\n // table\n registerTable()\n registerPivotTable()\n // cartesian\n registerLine()\n registerColumn()\n registerColumnParallel()\n registerColumnPercent()\n registerBar()\n registerBarParallel()\n registerBarPercent()\n registerArea()\n registerAreaPercent()\n registerAreaRange()\n registerScatter()\n // polar\n registerPie()\n registerDonut()\n registerRose()\n registerRoseParallel()\n registerRadar()\n // other\n registerFunnel()\n registerHeatmap()\n\n /**\n * ------------------\n * Theme\n * ------------------\n */\n registerLightTheme()\n registerDarkTheme()\n}\n","import type { AdvancedPipe, ChartType, SpecPipe } from 'src/types'\nimport { Builder } from '../builder'\n\nexport const updateAdvanced = (chartType: ChartType, advancedPipe: AdvancedPipe) => {\n Builder._customAdvancedPipe[chartType] = advancedPipe\n}\nexport const updateSpec = (chartType: ChartType, specPipe: SpecPipe) => {\n Builder._customSpecPipe[chartType] = specPipe\n}\n","import { z } from 'zod'\n\nexport type ChartType =\n | 'table'\n | 'pivotTable'\n // cartesian\n | 'line'\n | 'column'\n | 'columnPercent'\n | 'columnParallel'\n | 'bar'\n | 'barPercent'\n | 'barParallel'\n | 'area'\n | 'areaPercent'\n | 'areaRange'\n | 'scatter'\n | 'dualAxis'\n // polar\n | 'rose'\n | 'roseParallel'\n | 'pie'\n | 'donut'\n | 'radar'\n // other\n | 'heatmap'\n | 'funnel'\n\nexport enum ChartTypeEnum {\n Table = 'table',\n PivotTable = 'pivotTable',\n // cartesian\n Line = 'line',\n Column = 'column',\n ColumnPercent = 'columnPercent',\n ColumnParallel = 'columnParallel',\n Bar = 'bar',\n BarPercent = 'barPercent',\n BarParallel = 'barParallel',\n Area = 'area',\n AreaPercent = 'areaPercent',\n AreaRange = 'areaRange',\n DualAxis = 'dualAxis',\n Scatter = 'scatter',\n // polar\n Rose = 'rose',\n RoseParallel = 'roseParallel',\n Pie = 'pie',\n Donut = 'donut',\n Radar = 'radar',\n // other\n Funnel = 'funnel',\n Heatmap = 'heatmap',\n}\n\nexport const zChartType = z.enum([\n 'table',\n 'pivotTable',\n // cartesian\n 'line',\n 'column',\n 'columnPercent',\n 'columnParallel',\n 'bar',\n 'barPercent',\n 'barParallel',\n 'area',\n 'areaPercent',\n 'areaRange',\n 'scatter',\n 'dualAxis',\n // polar\n 'rose',\n 'roseParallel',\n 'pie',\n 'donut',\n 'radar',\n // other\n 'funnel',\n 'heatmap',\n])\n","import { z } from 'zod'\n\n/**\n * example dataset link:\n * [\n * { date: '2019', 20001:'type', profit:10, sales: null, },\n * { date: '2020', 20001:'type', profit:30, sales: -1.1, },\n * { date: '2021', 20001:'type', profit:30, sales: 1, },\n * { date: '2023', 20001:'type', profit:40, sales: undefined, },\n * { date: '2022', 20001:'type', profit:50, sales: 100, },\n * ]\n */\nexport const zDatum = z.record(z.string().or(z.number()), z.any())\nexport const zDataset = z.array(zDatum)\n\nexport type Datum = z.infer<typeof zDatum>\nexport type Dataset = z.infer<typeof zDataset>\n","import { z } from 'zod'\n\nexport type Dimension = {\n id: string\n alias?: string\n location?: 'dimension' | 'rowDimension' | 'columnDimension'\n}\n\nexport type DimensionGroup = {\n id: string\n alias?: string\n children?: (Dimension | DimensionGroup)[]\n}\n\nexport type Dimensions = Dimension[]\n\nexport type DimensionTree = (Dimension | DimensionGroup)[]\n\nexport const zDimension = z.object({\n id: z.string(),\n alias: z.string().optional(),\n location: z.enum(['dimension', 'rowDimension', 'columnDimension']).default('dimension'),\n})\nexport const zDimensionGroup: z.ZodType<DimensionGroup> = z.object({\n id: z.string(),\n alias: z.string().optional(),\n get children() {\n return z.array(zDimensionGroup.or(zDimension)).optional()\n },\n})\nexport const zDimensions = z.array(zDimension)\nexport const zDimensionTree = z.array(zDimensionGroup.or(zDimension))\n","import { z } from 'zod'\n\nexport interface NumFormat {\n /**\n * @description 数字格式化类型, 支持数值(十进制)、百分比(%)、千分比(‰)、科学计数法\n * @default 'number'\n */\n type?: 'number' | 'percent' | 'permille' | 'scientific'\n\n /**\n * @description 数值格式化比例, 百分比和千分比需要设置比例\n * @default 1\n * @example\n * - 100000 转换为 10万, ratio:10000, symbol:\"万\"\n * - 100000 转换为 10K, ratio:1000, symbol:\"K\"\n * - 100000 转换为 100%, ratio:100, symbol:\"%\"\n * - 100000 转换为 100‰, ratio:1000, symbol:\"‰\"\n */\n ratio?: number\n\n /**\n * @description 数值格式化符号, 例如%、‰\n * @default ''\n * @example\n * - 100000 转换为 10万, ratio:10000, symbol:\"万\"\n * - 100000 转换为 10K, ratio:1000, symbol:\"K\"\n * - 100000 转换为 100%, ratio:100, symbol:\"%\"\n * - 100000 转换为 100‰, ratio:1000, symbol:\"‰\"\n */\n symbol?: string\n\n /**\n * @description 数值格式化千分位分隔符\n * @default true\n */\n thousandSeparator?: boolean\n\n /**\n * @description 数值格式化后缀\n * @default ''\n */\n suffix?: string\n /**\n * @description 数值格式化前缀\n * @default ''\n */\n prefix?: string\n\n /**\n * @description 数值格式化小数位, 使用浏览器提供的 Intl.NumberFormat 中的 minimumFractionDigits 和 maximumFractionDigits 进行格式化, 优先级低于 significantDigits\n * @default 2\n * @example\n * - 1234.5678 转换为 1235, fractionDigits:0 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.6, fractionDigits:1 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.57, fractionDigits:2 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1230.568, fractionDigits:3 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.5678, fractionDigits:4 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.56780, fractionDigits:5 (roundingMode:halfCeil)\n */\n fractionDigits?: number\n\n /**\n * @description 数值格式化有效位, 使用浏览器提供的 Intl.NumberFormat 中的 minimumSignificantDigits 和 maximumSignificantDigits 进行格式化, 优先级高于 fractionDigits\n * @default undefined\n * @example\n * - 1234.5678 转换为 1000, significantDigits:1\n * - 1234.5678 转换为 1200, significantDigits:2\n * - 1234.5678 转换为 1230, significantDigits:3\n * - 1234.5678 转换为 1234, significantDigits:4\n * - 1234.5678 转换为 1234.6, significantDigits:5 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.57, significantDigits:6 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.568, significantDigits:7 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.5678, significantDigits:8 (roundingMode:halfCeil)\n */\n significantDigits?: number\n\n /**\n * @description 数值格式化舍入优先级, 处理同时设置了 significantDigits 和 fractionDigits 时的舍入优先级, 使用浏览器提供的 Intl.NumberFormat 进行格式化, 规则同 Intl.NumberFormat 中的 roundingPriority\n * @default 'morePrecision'\n * @example\n * - 1234.5678 转换为 1230, significantDigits:3 (roundingPriority:lessPrecision)\n * - 1234.5678 转换为 1234.5678, significantDigits:3 (roundingPriority:morePrecision)\n */\n roundingPriority?: 'morePrecision' | 'lessPrecision'\n\n /**\n * @description 数值格式化舍入模式, 使用浏览器提供的 Intl.NumberFormat 进行格式化, 规则同 Intl.NumberFormat 中的 roundingMode\n * @default 'halfExpand'\n * @example\n */\n roundingMode?:\n | 'floor'\n | 'ceil'\n | 'expand'\n | 'trunc'\n | 'halfCeil'\n | 'halfFloor'\n | 'halfExpand'\n | 'halfTrunc'\n | 'halfEven'\n}\n\nexport const zNumFormat = z\n .object({\n type: z.enum(['number', 'percent', 'permille', 'scientific']).default('number').optional(),\n ratio: z.number().default(1).optional(),\n symbol: z.string().default('').optional(),\n thousandSeparator: z.boolean().default(false).optional(),\n prefix: z.string().default('').optional(),\n suffix: z.string().default('').optional(),\n\n fractionDigits: z.number().default(2).optional(),\n significantDigits: z.number().default(0).optional(),\n roundingPriority: z.enum(['morePrecision', 'lessPrecision']).default('morePrecision').optional(),\n roundingMode: z\n .enum(['floor', 'ceil', 'halfEven', 'expand', 'trunc', 'halfFloor', 'halfCeil', 'halfExpand', 'halfTrunc'])\n .default('halfCeil')\n .optional(),\n })\n .optional()\n","import { z } from 'zod'\nimport type { NumFormat } from './format/numFormat'\nimport { zNumFormat } from './format/numFormat'\n\nexport type Measure = {\n /**\n * @description 指标id, 不能重复\n */\n id: string\n /**\n * @description 指标别名, 允许重复, 未填写时, alias 为 id\n * @default id\n */\n alias?: string\n /**\n * @description 是否自动格式化\n * @default true\n */\n autoFormat?: boolean\n /**\n * @description 指标的数值格式化, 会自动应用于label、tooltip\n */\n format?: NumFormat\n}\nexport type MeasureGroup = {\n /**\n * @description 指标组id, 不能重复\n */\n id: string\n /**\n * @description 指标组别名, 允许重复, 未填写时, alias 为 id\n * @default id\n */\n alias?: string\n /**\n * @description 指标组的子指标或指标组\n */\n children?: (Measure | MeasureGroup)[]\n}\nexport type Measures = Measure[]\nexport type MeasureTree = (Measure | MeasureGroup)[]\n\nexport const zMeasure = z.object({\n id: z.string(),\n alias: z.string().optional(),\n autoFormat: z.boolean().default(true),\n format: zNumFormat.default({}),\n})\n\nexport const zMeasureGroup: z.ZodType<MeasureGroup> = z.object({\n id: z.string(),\n alias: z.string().optional(),\n get children() {\n return z.array(zMeasureGroup.or(zMeasure)).optional()\n },\n})\n\nexport const zMeasures = z.array(zMeasure)\nexport const zMeasureTree = z.array(zMeasureGroup.or(zMeasure))\n","import { z } from 'zod'\n\nexport type FoldInfo = {\n foldMap: Record<string, string | undefined>\n measureId: string\n measureName: string\n measureValue: string\n}\n\nexport type UnfoldInfo = {\n groupName: string\n groupId: string\n colorItems: string[]\n colorIdMap: Record<string, string>\n}\n\nexport const zFoldInfo = z.object({\n foldMap: z.record(z.string(), z.string().or(z.undefined())),\n measureId: z.string(),\n measureName: z.string(),\n measureValue: z.string(),\n})\nexport const zUnfoldInfo = z.object({\n colorItems: z.array(z.string()),\n groupId: z.string(),\n colorIdMap: z.record(z.string(), z.string()),\n groupName: z.string(),\n})\n\nexport const zDatasetReshapeInfo = z.array(\n z.object({\n id: z.string(),\n foldInfo: zFoldInfo,\n unfoldInfo: zUnfoldInfo,\n }),\n)\n\nexport type DatasetReshapeInfo = z.infer<typeof zDatasetReshapeInfo>\n","import { z } from 'zod'\n\nexport const zEncoding = z.array(\n z.object({\n x: z.array(z.string()).optional(),\n y: z.array(z.string()).optional(),\n color: z.array(z.string()).optional(),\n group: z.array(z.string()).optional(),\n angle: z.array(z.string()).optional(),\n radius: z.array(z.string()).optional(),\n tooltip: z.array(z.string()).optional(),\n size: z.array(z.string()).optional(),\n }),\n)\n\nexport type Encoding = Array<{\n x?: string[]\n y?: string[]\n color?: string[]\n group?: string[]\n angle?: string[]\n radius?: string[]\n tooltip?: string[]\n size?: string[]\n}>\n","import { z } from 'zod'\nimport type { Axis } from './axis'\n\nexport type XBandAxis = Omit<Axis, 'min' | 'max' | 'nice' | 'zero' | 'log' | 'logBase'>\nexport type YBandAxis = Omit<Axis, 'min' | 'max' | 'nice' | 'zero' | 'log' | 'logBase'>\n\nexport const zXBandAxis = z.object({\n visible: z.boolean().default(true).optional(),\n\n labelAutoHide: z.boolean().default(true).optional(),\n labelAutoHideGap: z.number().default(0).optional(),\n labelAutoRotate: z.boolean().default(true).optional(),\n labelAutoRotateAngleRange: z.array(z.number()).default([0, -45, -90]).optional(),\n labelAutoLimit: z.boolean().default(true).optional(),\n labelAutoLimitLength: z.number().default(100).optional(),\n label: z\n .object({\n visible: z.boolean().default(true).optional(),\n labelColor: z.string().default('#797B85').optional(),\n labelFontSize: z.number().default(12).optional(),\n labelFontWeight: z.number().default(400).optional(),\n labelAngle: z.number().default(0).optional(),\n })\n .optional(),\n line: z\n .object({\n visible: z.boolean().default(true).optional(),\n lineColor: z.string().default('rgba(54, 65, 89, 0.30)').optional(),\n lineWidth: z.number().default(1).optional(),\n })\n .optional(),\n tick: z\n .object({\n visible: z.boolean().default(true).optional(),\n tickInside: z.boolean().default(false).optional(),\n tickColor: z.string().default('rgba(54, 65, 89, 0.30)').optional(),\n tickSize: z.number().default(4).optional(),\n })\n .optional(),\n title: z\n .object({\n visible: z.boolean().default(false).optional(),\n titleText: z.string().default('').optional(),\n titleColor: z.string().default('#646A73').optional(),\n titleFontSize: z.number().default(12).optional(),\n titleFontWeight: z.number().default(400).optional(),\n })\n .optional(),\n grid: z\n .object({\n visible: z.boolean().default(false).optional(),\n gridColor: z.string().default('rgba(54, 65, 89, 0.15)').optional(),\n gridWidth: z.number().default(0.5).optional(),\n })\n .optional(),\n})\nexport const zYBandAxis = zXBandAxis\n","import { z } from 'zod'\nimport { type Axis } from './axis'\n\nexport type XLinearAxis = Omit<\n Axis,\n | 'labelAutoHide'\n | 'labelAutoHideGap'\n | 'labelAutoRotate'\n | 'labelAutoRotateAngleRange'\n | 'labelAutoLimit'\n | 'labelAutoLimitLength'\n>\nexport type YLinearAxis = Omit<\n Axis,\n | 'labelAutoHide'\n | 'labelAutoHideGap'\n | 'labelAutoRotate'\n | 'labelAutoRotateAngleRange'\n | 'labelAutoLimit'\n | 'labelAutoLimitLength'\n>\n\nexport const zXLinearAxis = z.object({\n visible: z.boolean().default(true).optional(),\n\n min: z.number().optional(),\n max: z.number().optional(),\n nice: z.boolean().default(true).optional(),\n zero: z.boolean().default(true).optional(),\n log: z.boolean().default(false).optional(),\n logBase: z.number().default(10).optional(),\n inverse: z.boolean().default(false).optional(),\n\n label: z\n .object({\n visible: z.boolean().default(true).optional(),\n labelColor: z.string().default('#797B85').optional(),\n labelFontSize: z.number().default(12).optional(),\n labelFontWeight: z.number().default(400).optional(),\n labelAngle: z.number().default(0).optional(),\n })\n .optional(),\n line: z\n .object({\n visible: z.boolean().default(true).optional(),\n lineColor: z.string().default('rgba(54, 65, 89, 0.30)').optional(),\n lineWidth: z.number().default(1).optional(),\n })\n .optional(),\n tick: z\n .object({\n visible: z.boolean().default(true).optional(),\n tickInside: z.boolean().default(false).optional(),\n tickColor: z.string().default('rgba(54, 65, 89, 0.30)').optional(),\n tickSize: z.number().default(4).optional(),\n })\n .optional(),\n title: z\n .object({\n visible: z.boolean().default(false).optional(),\n titleText: z.string().default('').optional(),\n titleColor: z.string().default('#646A73').optional(),\n titleFontSize: z.number().default(12).optional(),\n titleFontWeight: z.number().default(400).optional(),\n })\n .optional(),\n grid: z\n .object({\n visible: z.boolean().default(false).optional(),\n gridColor: z.string().default('rgba(54, 65, 89, 0.15)').optional(),\n gridWidth: z.number().default(0.5).optional(),\n })\n .optional(),\n})\n\nexport const zYLinearAxis = zXLinearAxis\n","import { z } from 'zod'\n\nexport const zCrosshairLine = z.object({\n visible: z.boolean().optional(),\n lineColor: z.string().optional(),\n labelColor: z.string().optional(),\n labelVisible: z.boolean().optional(),\n labelBackgroundColor: z.string().optional(),\n})\n\nexport type CrosshairLine = z.infer<typeof zCrosshairLine>\n\nexport const zCrosshairRect = z.object({\n visible: z.boolean().optional(),\n rectColor: z.string().optional(),\n labelColor: z.string().optional(),\n labelVisible: z.boolean().optional(),\n labelBackgroundColor: z.string().optional(),\n})\n\nexport type CrosshairRect = z.infer<typeof zCrosshairLine>\n","import { z } from 'zod'\n\nexport const zStackCornerRadius = z.number().or(z.array(z.number())).default([3, 3, 0, 0])\n\nexport type StackCornerRadius = z.infer<typeof zStackCornerRadius>\n","import { z } from 'zod'\nexport const zBackgroundColor = z.string().default('transparent').optional()\n\n/**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\nexport type BackgroundColor = string | undefined\n","import { z } from 'zod'\n\nexport const zColor = z.object({\n colorScheme: z.array(z.string()).optional(),\n colorMapping: z.record(z.string(), z.string()).optional(),\n})\n\nexport const zLinearColor = z.object({\n colorScheme: z.array(z.string()).optional(),\n})\n\nexport type Color = {\n /**\n * 颜色配色方案\n * @description 颜色配色方案用于定义图表中不同元素的颜色\n * @example ['#FFCDD2,#F8BBD0,#E1BEE7,#D1C4E9,#C5CAE9,#BBDEFB,#B3E5FC,#B2EBF2,#B2DFDB,#C8E6C9,#DCEDC8,#F0F4C3,#FFF9C4,#FFECB3,#FFE0B2']\n */\n colorScheme?: string[]\n /**\n * 颜色映射\n * @description 颜色映射用于将数据值映射到具体的颜色\n * @example\n * {\n * 'profit': 'red',\n * 'sales': 'blue',\n * }\n */\n colorMapping?: Record<string, string>\n}\n\nexport type LinearColor = {\n /**\n * 线性渐变颜色配色方案\n * @description 线性渐变颜色配色方案用于定义图表中不同元素的颜色\n * @example ['#FFCDD2,#F8BBD0,#E1BEE7,#D1C4E9,#C5CAE9,#BBDEFB,#B3E5FC,#B2EBF2,#B2DFDB,#C8E6C9,#DCEDC8,#F0F4C3,#FFF9C4,#FFECB3,#FFE0B2']\n */\n colorScheme?: string[]\n}\n","import { z } from 'zod'\n\nexport const zLabel = z.object({\n enable: z.boolean().default(true).optional(),\n})\n\nexport type Label = {\n /**\n * 标签功能是否开启\n * @default true\n */\n enable: boolean\n}\n","import { z } from 'zod'\n\nexport type Legend = {\n /**\n * 图例功能是否开启\n * @default true\n * @example enable: true\n */\n enable?: boolean\n /**\n * 图例边框是否开启\n * @default true\n * @example border: true\n */\n border?: boolean\n /**\n * 图例最大列数 或 图例最大行数\n * @default 1\n * @description\n * 如果图例在水平方向上, maxSize控制显示的列数\n * 如果图例在垂直方向上, maxSize控制显示的行数\n * @example maxSize: 2\n */\n maxSize?: number\n /**\n * 图例字体大小\n * @default 12\n * @example labelFontSize: 10\n */\n labelFontSize?: number\n /**\n * 图例字体颜色\n * @default '#fff'\n * @example labelFontColor: '#212121'\n */\n labelFontColor?: string\n /**\n * 图例字体粗细\n * @default 400\n * @example labelFontWeight: 400\n */\n labelFontWeight?: number | string\n /**\n * 图例形状\n * @default 'rectRound'\n * @example shapeType: 'circle'\n */\n shapeType?:\n | 'circle'\n | 'cross'\n | 'diamond'\n | 'square'\n | 'arrow'\n | 'arrow2Left'\n | 'arrow2Right'\n | 'wedge'\n | 'thinTriangle'\n | 'triangle'\n | 'triangleUp'\n | 'triangleDown'\n | 'triangleRight'\n | 'triangleLeft'\n | 'stroke'\n | 'star'\n | 'wye'\n | 'rect'\n | 'arrowLeft'\n | 'arrowRight'\n | 'rectRound'\n | 'roundLine'\n /**\n * 图例位置\n * @default 'top'\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\nexport const zLegend = z.object({\n enable: z.boolean().default(true).optional(),\n border: z.boolean().default(true).optional(),\n maxSize: z.number().default(1).optional(),\n shapeType: z\n .enum([\n 'circle',\n 'cross',\n 'diamond',\n 'square',\n 'arrow',\n 'arrow2Left',\n 'arrow2Right',\n 'wedge',\n 'thinTriangle',\n 'triangle',\n 'triangleUp',\n 'triangleDown',\n 'triangleRight',\n 'triangleLeft',\n 'stroke',\n 'star',\n 'wye',\n 'rect',\n 'arrowLeft',\n 'arrowRight',\n 'rectRound',\n 'roundLine',\n ])\n .default('rectRound')\n .optional(),\n position: z\n .enum([\n 'left',\n 'leftTop',\n 'leftBottom',\n 'lt',\n 'lb',\n 'top',\n 'topLeft',\n 'topRight',\n 'tl',\n 'tr',\n 'right',\n 'rightTop',\n 'rightBottom',\n 'rt',\n 'rb',\n 'bottom',\n 'bottomLeft',\n 'bottomRight',\n 'bl',\n 'br',\n ])\n .default('bottom')\n .optional(),\n labelFontSize: z.number().default(12).optional(),\n labelFontColor: z.string().default('#fff').optional(),\n labelFontWeight: z.number().or(z.string()).default(400).optional(),\n})\n\nexport type ColorLegend = Pick<Legend, 'position' | 'enable'>\nexport const zColorLegend = z.object({\n position: z\n .enum([\n 'left',\n 'leftTop',\n 'leftBottom',\n 'lt',\n 'lb',\n 'top',\n 'topLeft',\n 'topRight',\n 'tl',\n 'tr',\n 'right',\n 'rightTop',\n 'rightBottom',\n 'rt',\n 'rb',\n 'bottom',\n 'bottomLeft',\n 'bottomRight',\n 'bl',\n 'br',\n ])\n .default('bottom')\n .optional(),\n enable: z.boolean().default(true).optional(),\n})\n","import { z } from 'zod'\n\nexport const zTooltip = z.object({\n enable: z.boolean().default(true).optional(),\n})\n\nexport type Tooltip = {\n /**\n * 提示信息功能是否开启\n * @default true\n */\n enable: boolean\n}\n","import { z } from 'zod'\nimport { zXBandAxis, zYBandAxis } from './axes/bandAxis'\nimport { zXLinearAxis, zYLinearAxis } from './axes/linearAxis'\nimport { zCrosshairLine, zCrosshairRect } from './crosshair/crosshair'\nimport { zStackCornerRadius } from './stackCornerRadius/stackCornerRadius'\nimport { zBackgroundColor } from './backgroundColor/backgroundColor'\nimport { zColor } from './color/color'\nimport { zLabel } from './label/label'\nimport { zLegend } from './legend/legend'\nimport { zTooltip } from './tooltip/tooltip'\n\n/**\n * ---\n * zConfig by 图表类型\n */\nexport const zTableConfig = z.object({\n // Border\n borderColor: z.string().optional(),\n\n // Body\n bodyFontSize: z.number().optional(),\n bodyFontColor: z.string().optional(),\n bodyBackgroundColor: z.string().optional(),\n hoverBodyBackgroundColor: z.string().optional(),\n\n // Header\n headerFontSize: z.number().optional(),\n headerFontColor: z.string().optional(),\n headerBackgroundColor: z.string().optional(),\n hoverHeaderBackgroundColor: z.string().optional(),\n\n // Interaction\n selectedBorderColor: z.string().optional(),\n})\nexport const zPivotTableConfig = zTableConfig\n\nexport const zLineConfig = z.object({\n backgroundColor: zBackgroundColor.optional(),\n label: zLabel.optional(),\n color: zColor.optional(),\n tooltip: zTooltip.optional(),\n legend: zLegend.optional(),\n\n xAxis: zXBandAxis.optional(),\n yAxis: zYLinearAxis.optional(),\n crosshairLine: zCrosshairLine.optional(),\n})\nexport const zColumnConfig = z.object({\n backgroundColor: zBackgroundColor.optional(),\n label: zLabel.optional(),\n color: zColor.optional(),\n tooltip: zTooltip.optional(),\n legend: zLegend.optional(),\n\n xAxis: zXBandAxis.optional(),\n yAxis: zYLinearAxis.optional(),\n crosshairRect: zCrosshairRect.optional(),\n stackCornerRadius: zStackCornerRadius.optional(),\n})\nexport const zColumnParallelConfig = zColumnConfig\nexport const zColumnPercentConfig = zColumnConfig\nexport const zBarConfig = z.object({\n backgroundColor: zBackgroundColor.optional(),\n label: zLabel.optional(),\n color: zColor.optional(),\n tooltip: zTooltip.optional(),\n legend: zLegend.optional(),\n\n xAxis: zXLinearAxis.optional(),\n yAxis: zYBandAxis.optional(),\n crosshairRect: zCrosshairRect.optional(),\n stackCornerRadius: zStackCornerRadius.optional(),\n})\nexport const zBarParallelConfig = zBarConfig\nexport const zBarPercentConfig = zBarConfig\nexport const zAreaConfig = z.object({\n backgroundColor: zBackgroundColor.optional(),\n label: zLabel.optional(),\n color: zColor.optional(),\n tooltip: zTooltip.optional(),\n legend: zLegend.optional(),\n\n xAxis: zXBandAxis.optional(),\n yAxis: zYLinearAxis.optional(),\n crosshairLine: zCrosshairLine.optional(),\n})\nexport const zAreaPercentConfig = zAreaConfig\nexport const zAreaRangeConfig = zAreaConfig\nexport const zDualAxisConfig = z.object({\n backgroundColor: zBackgroundColor.optional(),\n label: zLabel.optional(),\n color: zColor.optional(),\n tooltip: zTooltip.optional(),\n legend: zLegend.optional(),\n})\nexport const zScatterConfig = z.object({\n backgroundColor: zBackgroundColor.optional(),\n label: zLabel.optional(),\n color: zColor.optional(),\n tooltip: zTooltip.optional(),\n legend: zLegend.optional(),\n\n xAxis: zXLinearAxis.optional(),\n yAxis: zYLinearAxis.optional(),\n crosshairLine: zCrosshairLine.optional(),\n})\n\n// polar\nexport const zRoseConfig = z.object({\n backgroundColor: zBackgroundColor.optional(),\n label: zLabel.optional(),\n color: zColor.optional(),\n tooltip: zTooltip.optional(),\n legend: zLegend.optional(),\n})\nexport const zRoseParallelConfig = zRoseConfig\nexport const zPieConfig = z.object({\n backgroundColor: zBackgroundColor.optional(),\n label: zLabel.optional(),\n color: zColor.optional(),\n tooltip: zTooltip.optional(),\n legend: zLegend.optional(),\n})\nexport const zDonutConfig = zPieConfig\nexport const zRadarConfig = zPieConfig\n// other\nexport const zFunnelConfig = zPieConfig\nexport const zHeatmapConfig = zPieConfig\n\n/**\n * ---\n * Type config by chart type\n */\nexport type TableConfig = z.infer<typeof zTableConfig>\nexport type PivotTableConfig = z.infer<typeof zPivotTableConfig>\n// cartesian\nexport type LineConfig = z.infer<typeof zLineConfig>\nexport type ColumnConfig = z.infer<typeof zColumnConfig>\nexport type ColumnParallelConfig = z.infer<typeof zColumnParallelConfig>\nexport type ColumnPercentConfig = z.infer<typeof zColumnPercentConfig>\nexport type BarConfig = z.infer<typeof zBarConfig>\nexport type BarParallelConfig = z.infer<typeof zBarParallelConfig>\nexport type BarPercentConfig = z.infer<typeof zBarPercentConfig>\nexport type AreaConfig = z.infer<typeof zAreaConfig>\nexport type AreaPercentConfig = z.infer<typeof zAreaPercentConfig>\nexport type AreaRangeConfig = z.infer<typeof zAreaRangeConfig>\nexport type ScatterConfig = z.infer<typeof zScatterConfig>\nexport type DualAxisConfig = z.infer<typeof zDualAxisConfig>\n// polar\nexport type RoseConfig = z.infer<typeof zRoseConfig>\nexport type RoseParallelConfig = z.infer<typeof zRoseParallelConfig>\nexport type PieConfig = z.infer<typeof zPieConfig>\nexport type DonutConfig = z.infer<typeof zDonutConfig>\nexport type RadarConfig = z.infer<typeof zRadarConfig>\n// other\nexport type FunnelConfig = z.infer<typeof zFunnelConfig>\nexport type HeatmapConfig = z.infer<typeof zHeatmapConfig>\n\n/**\n * config and type\n */\nexport type Config = z.infer<typeof zConfig>\nexport const zConfig = z.object({\n table: zTableConfig.optional(),\n pivotTable: zPivotTableConfig.optional(),\n\n // cartesian\n line: zLineConfig.optional(),\n column: zColumnConfig.optional(),\n columnParallel: zColumnParallelConfig.optional(),\n columnPercent: zColumnPercentConfig.optional(),\n bar: zBarConfig.optional(),\n barParallel: zBarParallelConfig.optional(),\n barPercent: zBarPercentConfig.optional(),\n area: zAreaConfig.optional(),\n areaPercent: zAreaPercentConfig.optional(),\n areaRange: zAreaRangeConfig.optional(),\n dualAxis: zDualAxisConfig.optional(),\n scatter: zScatterConfig.optional(),\n\n // polar\n rose: zRoseConfig.optional(),\n roseParallel: zRoseParallelConfig.optional(),\n pie: zPieConfig.optional(),\n donut: zDonutConfig.optional(),\n radar: zRadarConfig.optional(),\n // other\n funnel: zFunnelConfig.optional(),\n heatmap: zHeatmapConfig.optional(),\n})\n","import { z } from 'zod'\n\nexport type Axis = {\n /**\n * 轴是否可见\n * @default true\n * @example true\n */\n visible?: boolean\n\n /**\n * 轴的最小值\n * @description 优先级高于 nice 与 zero\n * @default undefined\n * @example 100\n */\n min?: number\n\n /**\n * 轴的最大值\n * @description 优先级高于 nice 与 zero\n * @default undefined\n * @example 10000\n */\n max?: number\n\n /**\n * @description 是否使用对数轴, 仅对数值轴生效\n * @default false\n */\n log?: boolean\n\n /**\n * @description 对数轴的底数, 仅对数值轴生效\n * @default 10\n */\n logBase?: number\n\n /**\n * 是否自动调整轴的刻度间隔,使刻度标签更易读\n * @description 当配置了 min 和 max, 该配置项失效, 仅对数值轴生效\n * @default true\n * @example true\n */\n nice?: boolean\n\n /**\n * 轴是否反向展示\n * @description 仅对数值轴生效\n * @default false\n * @example false\n */\n inverse?: boolean\n\n /**\n * 是否在坐标轴上显示 0 值,\n * @description 当配置了 min 和 max, 该配置项失效, 仅对数值轴生效\n * @default true\n * @example true\n */\n zero?: boolean\n\n /**\n * 轴标签, 自动隐藏\n * @description 2个标签若重叠(间隔小于autoHideGap), 则自动隐藏导致重叠的标签. 仅对类目轴生效.\n * @default true\n */\n labelAutoHide?: boolean\n /**\n * 轴标签, 自动隐藏间隔\n * @description 若2个文本标签的间隔小于autoHideGap, 则自动隐藏导致重叠的标签. 仅对类目轴生效.\n * autoHide开启时, 使用autoHide, 设置在autoHideSeparation上\n * autoHide关闭时, 使用sampling采样, 设置在minGap上\n * @default 4\n */\n labelAutoHideGap?: number\n /**\n * 轴标签, 自动旋转\n * @description 当标签宽度超过轴长度时, 自动旋转标签. 仅对类目轴生效.\n * @default true\n */\n labelAutoRotate?: boolean\n /**\n * 轴标签, 自动旋转角度范围\n * @description 当自动旋转开启时, 标签旋转角度范围. 仅对类目轴生效.\n * @default [0, -45, -90]\n */\n labelAutoRotateAngleRange?: number[]\n /**\n * 轴标签, 自动限制长度,\n * @description 当标签宽度超过轴长度时, 超出部分省略号表示, 鼠标悬浮后可见标签, 自动限制标签宽度. 仅对类目轴生效.\n * @default true\n */\n labelAutoLimit?: boolean\n /**\n * 轴标签, 自动限制长度的最大长度\n * @description 当标签文本长度超过最大长度时, 超出部分省略号表示, 鼠标悬浮后可见标签. 仅对类目轴生效.\n * @default 100\n */\n labelAutoLimitLength?: number\n\n /**\n * X轴刻度标签\n * @default true\n */\n label?: {\n /**\n * 标签是否可见\n * @default true\n */\n visible?: boolean\n /**\n * 标签颜色\n * @default '#797B85'\n */\n labelColor?: string\n /**\n * 标签字体大小\n * @default 12\n */\n labelFontSize?: number\n /**\n * 标签字体粗细\n * @default 400\n */\n labelFontWeight?: number\n /**\n * 标签旋转角度\n * @default 0\n */\n labelAngle?: number\n }\n\n /**\n * X轴线\n * @example\n * {\n * visible: true,\n * lineColor: '#ffeecc',\n * lineWidth: 2,\n * }\n */\n line?: {\n /**\n * 轴线是否可见\n * @default true\n */\n visible?: boolean\n /**\n * 轴线颜色\n * @default 'rgba(54, 65, 89, 0.30)'\n */\n lineColor?: string\n /**\n * 轴线宽度\n * @default 1\n */\n lineWidth?: number\n }\n\n /**\n * X轴刻度\n * @default true\n */\n tick?: {\n /**\n * 刻度是否可见\n * @default true\n */\n visible?: boolean\n /**\n * 刻度是否朝内\n * @default false\n */\n tickInside?: boolean\n /**\n * 刻度颜色\n * @default 'rgba(54, 65, 89, 0.30)'\n */\n tickColor?: string\n /**\n * 刻度尺寸\n * @default 4\n */\n tickSize?: number\n }\n\n /**\n * X轴标题\n * @default false\n */\n title?: {\n /**\n * 标题是否可见\n * @default false\n */\n visible?: boolean\n /**\n * 标题文本, 默认跟随字段配置\n * @default ''\n */\n titleText?: string\n /**\n * 标题颜色\n * @default '#646A73'\n */\n titleColor?: string\n /**\n * 标题字体大小\n * @default 12\n */\n titleFontSize?: number\n /**\n * 标题字体粗细\n * @default 400\n */\n titleFontWeight?: number\n }\n\n /**\n * X轴网格线\n * @default false\n */\n grid?: {\n visible?: boolean\n /**\n * 网格线颜色\n * @default 'rgba(54, 65, 89, 0.15)'\n */\n gridColor?: string\n /**\n * 网格线宽度\n * @default 0.5\n */\n gridWidth?: number\n }\n}\n\nexport const zAxis = z.object({\n visible: z.boolean().default(true).optional(),\n\n min: z.number().optional(),\n max: z.number().optional(),\n nice: z.boolean().default(true).optional(),\n zero: z.boolean().default(true).optional(),\n inverse: z.boolean().default(false).optional(),\n log: z.boolean().default(false).optional(),\n logBase: z.number().default(10).optional(),\n\n labelAutoHide: z.boolean().default(true).optional(),\n labelAutoHideGap: z.number().default(4).optional(),\n labelAutoRotate: z.boolean().default(true).optional(),\n labelAutoRotateAngleRange: z.array(z.number()).default([0, -45, -90]).optional(),\n labelAutoLimit: z.boolean().default(true).optional(),\n labelAutoLimitLength: z.number().default(100).optional(),\n label: z\n .object({\n visible: z.boolean().default(true).optional(),\n labelColor: z.string().default('#797B85').optional(),\n labelFontSize: z.number().default(12).optional(),\n labelFontWeight: z.number().default(400).optional(),\n labelAngle: z.number().default(0).optional(),\n })\n .optional(),\n line: z\n .object({\n visible: z.boolean().default(true).optional(),\n lineColor: z.string().default('rgba(54, 65, 89, 0.30)').optional(),\n lineWidth: z.number().default(1).optional(),\n })\n .optional(),\n tick: z\n .object({\n visible: z.boolean().default(true).optional(),\n tickInside: z.boolean().default(false).optional(),\n tickColor: z.string().default('rgba(54, 65, 89, 0.30)').optional(),\n tickSize: z.number().default(4).optional(),\n })\n .optional(),\n title: z\n .object({\n visible: z.boolean().default(false).optional(),\n titleText: z.string().default('').optional(),\n titleColor: z.string().default('#646A73').optional(),\n titleFontSize: z.number().default(12).optional(),\n titleFontWeight: z.number().default(400).optional(),\n })\n .optional(),\n grid: z\n .object({\n visible: z.boolean().default(false).optional(),\n gridColor: z.string().default('rgba(54, 65, 89, 0.15)').optional(),\n gridWidth: z.number().default(0.5).optional(),\n })\n .optional(),\n})\n","import { z } from 'zod'\nimport { zConfig } from '../config'\n\nexport const zCustomThemeConfig = z.object({\n config: zConfig.optional(),\n})\n\nexport const zCustomTheme = z.record(z.string(), zCustomThemeConfig).optional()\n\nexport type CustomTheme = z.infer<typeof zCustomTheme>\nexport type CustomThemeConfig = z.infer<typeof zCustomThemeConfig>\n","import { z } from 'zod'\n\nexport const zTheme = z.string()\n\ntype Light = 'light' & { readonly brand: unique symbol }\ntype Dark = 'dark' & { readonly brand: unique symbol }\n\n/**\n * 主题\n * @default light\n * @description 内置 light、dark 两种主题, 新的主题可以通过registerTheme自定义主题.\n */\nexport type Theme = Light | Dark | string\n","import { z } from 'zod'\nimport type { Datum } from '../properties'\n\nexport type ValueSelector = string | number\n\nexport type PartialDatumSelector = Datum\n\nexport type MeasureSelector = {\n field: string\n operator?: '=' | '==' | '!=' | '>' | '<' | '>=' | '<=' | 'between'\n op?: '=' | '==' | '!=' | '>' | '<' | '>=' | '<=' | 'between'\n value: string | number | Array<string | number>\n}\n\nexport type DimensionSelector = {\n field: string\n operator?: 'in' | 'not in'\n op?: 'in' | 'not in'\n value: string | number | Array<string | number>\n}\n\nexport type Selector = ValueSelector | PartialDatumSelector | MeasureSelector | DimensionSelector\n\nexport type Selectors = Array<Selector>\n\nexport const zSelector = z.union([\n z.string(),\n z.number(),\n z.object({\n field: z.string(),\n operator: z.enum(['=', '==', '!=', '>', '<', '>=', '<=', 'between']).optional(),\n op: z.enum(['=', '==', '!=', '>', '<', '>=', '<=', 'between']).optional(),\n value: z.union([z.string(), z.number(), z.array(z.union([z.string(), z.number()]))]),\n }),\n z.object({\n field: z.string(),\n operator: z.enum(['in', 'not in']).optional(),\n op: z.enum(['in', 'not in']).optional(),\n value: z.union([z.string(), z.number(), z.array(z.union([z.string(), z.number()]))]),\n }),\n])\n\nexport const zSelectors = z.array(zSelector)\n","import { z } from 'zod'\nimport { zSelector, zSelectors, type Selector, type Selectors } from '../../dataSelector'\n\nexport type BarStyle = {\n /**\n * 数据选择器\n * @description\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n * @type {Selector | Selectors}\n * @example 数值选择器\n * selector = \"tool\"\n * selector = [\"tool\", \"book\"]\n * selector = 100\n * selector = [100, 200]\n * @example 局部数据选择器\n * selector = { profit: 100 }\n * selector = [{ profit: 100 }, { profit: 200 }]\n * @example 条件维度选择器\n * selector = {\n * field: 'category',\n * operator: 'in',\n * value: 'tool'\n * }\n * selector = {\n * field: 'category',\n * operator: 'not in',\n * value: 'book'\n * }\n * @example 条件指标选择器\n * selector = {\n * field: 'profit',\n * operator: '>=',\n * value: 100\n * }\n * selector = {\n * field: 'profit',\n * operator: 'between'\n * value: [100, 300]\n * }\n */\n selector?: Selector | Selectors\n\n /**\n * 柱状图颜色\n * @description 柱状图颜色\n * @type {string}\n */\n barColor?: string\n /**\n * 柱状图颜色透明度\n * @description 柱状图颜色透明度\n * @type {number}\n */\n barColorOpacity?: number\n /**\n * 柱状图边框颜色\n * @description 柱状图边框颜色\n * @type {string}\n */\n barBorderColor?: string\n /**\n * 柱状图边框宽度\n * @description 柱状图边框宽度\n * @type {number}\n */\n barBorderWidth?: number\n /**\n * 柱状图边框样式\n * @description 柱状图边框样式\n * @type {number}\n * @example solid\n * @example dashed\n * @example dotted\n */\n barBorderStyle?: 'solid' | 'dashed' | 'dotted'\n /**\n * 柱状图圆角\n * @description 柱状图圆角\n * @type {number | number[]}\n * @example 4\n * @example [0, 0, 10, 10]\n */\n barRadius?: number | number[]\n}\n\nexport const zBarStyle = z.object({\n selector: z.union([zSelector, zSelectors]).optional(),\n barColor: z.string().optional(),\n barColorOpacity: z.number().optional(),\n barBorderColor: z.string().optional(),\n barBorderWidth: z.number().optional(),\n barBorderStyle: z.union([z.literal('solid'), z.literal('dashed'), z.literal('dotted')]).optional(),\n barRadius: z.union([z.number(), z.array(z.number())]).optional(),\n})\n","import { z } from 'zod'\nimport { zSelector, zSelectors, type Selector, type Selectors } from '../../dataSelector'\n\nexport type PointStyle = {\n /**\n * 数据选择器\n * @description\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n * @type {Selector | Selectors}\n * @example 数值选择器\n * selector = \"tool\"\n * selector = [\"tool\", \"book\"]\n * selector = 100\n * selector = [100, 200]\n * @example 局部数据选择器\n * selector = { profit: 100 }\n * selector = [{ profit: 100 }, { profit: 200 }]\n * @example 条件维度选择器\n * selector = {\n * field: 'category',\n * operator: 'in',\n * value: 'tool'\n * }\n * selector = {\n * field: 'category',\n * operator: 'not in',\n * value: 'book'\n * }\n * @example 条件指标选择器\n * selector = {\n * field: 'profit',\n * operator: '>=',\n * value: 100\n * }\n * selector = {\n * field: 'profit',\n * operator: 'between'\n * value: [100, 300]\n * }\n */\n selector?: Selector | Selectors\n\n /**\n * 点大小\n * @description 点大小\n * @type {number}\n */\n pointSize?: number\n /**\n * 柱状图颜色\n * @description 柱状图颜色\n * @type {string}\n */\n pointColor?: string\n /**\n * 柱状图颜色透明度\n * @description 柱状图颜色透明度\n * @type {number}\n */\n pointColorOpacity?: number\n /**\n * 柱状图边框颜色\n * @description 柱状图边框颜色\n * @type {string}\n */\n pointBorderColor?: string\n /**\n * 柱状图边框宽度\n * @description 柱状图边框宽度\n * @type {number}\n */\n pointBorderWidth?: number\n /**\n * 柱状图边框样式\n * @description 柱状图边框样式\n * @type {number}\n * @example solid\n * @example dashed\n * @example dotted\n */\n pointBorderStyle?: 'solid' | 'dashed' | 'dotted'\n}\n\nexport const zPointStyle = z.object({\n selector: z.union([zSelector, zSelectors]).optional(),\n pointSize: z.number().optional(),\n pointColor: z.string().optional(),\n pointColorOpacity: z.number().optional(),\n pointBorderColor: z.string().optional(),\n pointBorderWidth: z.number().optional(),\n pointBorderStyle: z.union([z.enum(['solid', 'dashed', 'dotted'])]).optional(),\n})\n","import { z } from 'zod'\nimport { zSelector, zSelectors, type Selector, type Selectors } from '../../dataSelector'\n\nexport type LineStyle = {\n /**\n * 数据选择器\n * @description\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n * @type {Selector | Selectors}\n * @example 数值选择器\n * selector = \"tool\"\n * selector = [\"tool\", \"book\"]\n * selector = 100\n * selector = [100, 200]\n * @example 局部数据选择器\n * selector = { profit: 100 }\n * selector = [{ profit: 100 }, { profit: 200 }]\n * @example 条件维度选择器\n * selector = {\n * field: 'category',\n * operator: 'in',\n * value: 'tool'\n * }\n * selector = {\n * field: 'category',\n * operator: 'not in',\n * value: 'book'\n * }\n * @example 条件指标选择器\n * selector = {\n * field: 'profit',\n * operator: '>=',\n * value: 100\n * }\n * selector = {\n * field: 'profit',\n * operator: 'between'\n * value: [100, 300]\n * }\n */\n selector?: Selector | Selectors\n\n /**\n * 折线图是否平滑\n * @description 折线图是否平滑\n * @type {boolean}\n */\n lineSmooth?: boolean\n\n /**\n * 柱状图颜色\n * @description 柱状图颜色\n * @type {string}\n */\n lineColor?: string\n /**\n * 柱状图颜色透明度\n * @description 柱状图颜色透明度\n * @type {number}\n */\n lineColorOpacity?: number\n /**\n * 柱状图边框宽度\n * @description 柱状图边框宽度\n * @type {number}\n */\n lineWidth?: number\n /**\n * 柱状图边框样式\n * @description 柱状图边框样式\n * @type {number}\n * @example solid\n * @example dashed\n * @example dotted\n */\n lineStyle?: 'solid' | 'dashed' | 'dotted'\n}\n\nexport const zLineStyle = z.object({\n selector: z.union([zSelector, zSelectors]).optional(),\n lineSmooth: z.boolean().optional(),\n lineColor: z.string().optional(),\n lineColorOpacity: z.number().optional(),\n lineWidth: z.number().optional(),\n lineStyle: z.union([z.enum(['solid', 'dashed', 'dotted'])]).optional(),\n})\n","import { z } from 'zod'\nimport { zSelector, zSelectors, type Selector, type Selectors } from '../../dataSelector'\n\nexport type AreaStyle = {\n /**\n * 数据选择器\n * @description\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n * @type {Selector | Selectors}\n * @example 数值选择器\n * selector = \"tool\"\n * selector = [\"tool\", \"book\"]\n * selector = 100\n * selector = [100, 200]\n * @example 局部数据选择器\n * selector = { profit: 100 }\n * selector = [{ profit: 100 }, { profit: 200 }]\n * @example 条件维度选择器\n * selector = {\n * field: 'category',\n * operator: 'in',\n * value: 'tool'\n * }\n * selector = {\n * field: 'category',\n * operator: 'not in',\n * value: 'book'\n * }\n * @example 条件指标选择器\n * selector = {\n * field: 'profit',\n * operator: '>=',\n * value: 100\n * }\n * selector = {\n * field: 'profit',\n * operator: 'between'\n * value: [100, 300]\n * }\n */\n selector?: Selector | Selectors\n\n /**\n * 面积图元的颜色\n * @description 面积图元的颜色\n * @type {string}\n */\n areaColor?: string\n /**\n * 面积图元的颜色透明度\n * @description 面积图元的颜色透明度\n * @type {number}\n */\n areaColorOpacity?: number\n}\n\nexport const zAreaStyle = z.object({\n selector: z.union([zSelector, zSelectors]).optional(),\n areaColor: z.string().optional(),\n areaColorOpacity: z.number().optional(),\n})\n","import { z } from 'zod'\nimport { zBarStyle } from './barStyle'\nimport { zPointStyle } from './pointStyle'\nimport { zLineStyle } from './lineStyle'\nimport { zAreaStyle } from './areaStyle'\n\nexport const zMarkStyle = z.object({\n barStyle: zBarStyle.or(z.array(zBarStyle)).optional(),\n pointStyle: zPointStyle.or(z.array(zPointStyle)).optional(),\n lineStyle: zLineStyle.or(z.array(zLineStyle)).optional(),\n areaStyle: zAreaStyle.or(z.array(zAreaStyle)).optional(),\n})\n\nexport type MarkStyle = z.infer<typeof zMarkStyle>\n","import { zSelector, zSelectors, type Selector, type Selectors } from '../../dataSelector'\nimport { z } from 'zod'\n\nexport type AnnotationPoint = {\n /**\n * 依赖选择的数据, 进行数据标记.\n */\n selector: Selector | Selectors\n /**\n * 标注的文本\n * @description 标注的文本\n * @default ''\n * @example '标注文本'\n */\n text?: string | string[]\n /**\n * 文本颜色\n * @description 文本颜色\n * @default '#ffffff'\n * @example 'red'\n */\n textColor?: string\n /**\n * 文本字体大小\n * @description 文本字体大小\n * @default 12\n * @example 12\n */\n textFontSize?: number\n /**\n * 文本字体重量\n * @description 文本字体重量\n * @default 400\n * @example 400\n */\n textFontWeight?: number\n\n /**\n * 文本对齐方式\n * @description 文本对齐方式\n * @default 'left'\n * @example 'left'\n */\n textAlign?: 'left' | 'right' | 'center'\n /**\n * 文本垂直对齐方式\n * @description 文本垂直对齐方式\n * @default 'middle'\n * @example 'middle'\n */\n textBaseline?: 'top' | 'middle' | 'bottom'\n\n /**\n * 文本Y方向的, 偏移量\n * @description 文本Y方向的, 偏移量, 支持正负\n * @default 0\n * @example offsetY: 10\n */\n offsetY?: number\n /**\n * 文本X方向的, 偏移量\n * @description 文本X方向的, 偏移量, 支持正负\n * @default 0\n * @example offsetX: -10\n */\n offsetX?: number\n /**\n * 背景可见\n * @description 背景可见\n * @default true\n * @example true\n */\n backgroundVisible?: boolean\n /**\n * 背景颜色\n * @description 背景颜色\n * @default '#212121'\n * @example 'red'\n */\n backgroundColor?: string\n /**\n * 背景边框颜色\n * @description 背景边框颜色\n * @default 'red'\n * @example 'red'\n */\n backgroundBorderColor?: string\n /**\n * 背景边框宽度\n * @description 背景边框宽度\n * @default 1\n * @example 2\n */\n backgroundBorderWidth?: number\n /**\n * 背景边框圆角\n * @description 背景边框圆角\n * @default 4\n * @example 4\n */\n backgroundBorderRadius?: number\n /**\n * 背景内边距\n * @description 背景内边距\n * @default 4\n * @example 4\n */\n backgroundPadding?: number\n}\n\nexport const zAnnotationPoint = z.object({\n selector: z.union([zSelector, zSelectors]),\n text: z.string().or(z.array(z.string())).optional(),\n textColor: z.string().default('#ffffff').optional(),\n textFontSize: z.number().default(12).optional(),\n textFontWeight: z.number().default(400).optional(),\n textAlign: z.enum(['left', 'right', 'center']).default('center').optional(),\n textBaseline: z.enum(['top', 'middle', 'bottom']).default('middle').optional(),\n backgroundVisible: z.boolean().default(true).optional(),\n backgroundColor: z.string().default('#212121').optional(),\n backgroundBorderColor: z.string().optional(),\n backgroundBorderWidth: z.number().default(1).optional(),\n backgroundBorderRadius: z.number().default(4).optional(),\n backgroundPadding: z.number().optional(),\n offsetY: z.number().default(0).optional(),\n offsetX: z.number().default(0).optional(),\n})\n","import { zSelector, zSelectors, type Selector, type Selectors } from '../../dataSelector'\nimport { z } from 'zod'\n\nexport type AnnotationVerticalLine = {\n /**\n * 依赖选择的数据, 进行数据标记.\n */\n selector?: Selector | Selectors\n /**\n * 固定的x值, 用于标注垂直线\n * @description 类目轴在x方向, 则可输入维值, 数值轴在x方向, 则可输入具体的数值\n * @default []\n */\n xValue?: (number | string) | (number | string)[]\n /**\n * 标注的文本\n * @description 标注的文本\n * @default ''\n * @example '标注文本'\n */\n text?: string | string[]\n /**\n * 文本位置\n * @description 标注线的标签位置(标签相对线的相对位置)。\n * @default 'insideEnd'\n * @example 'outsideEnd'\n */\n textPosition?: 'outsideStart' | 'outsideEnd' | 'outsideMiddle' | 'insideStart' | 'insideMiddle' | 'insideEnd'\n /**\n * 文本颜色\n * @description 文本颜色\n * @default '#ffffff'\n * @example 'red'\n */\n textColor?: string\n /**\n * 文本字体大小\n * @description 文本字体大小\n * @default 12\n * @example 12\n */\n textFontSize?: number\n /**\n * 文本字体重量\n * @description 文本字体重量\n * @default 400\n * @example 400\n */\n textFontWeight?: number\n /**\n * 文本对齐方式\n * @description 文本对齐方式\n * @default 'right'\n * @example 'left'\n */\n textAlign?: 'left' | 'right' | 'center'\n /**\n * 文本垂直对齐方式\n * @description 文本垂直对齐方式\n * @default 'top'\n * @example 'middle'\n */\n textBaseline?: 'top' | 'middle' | 'bottom'\n /**\n * 文本Y方向的, 偏移量\n * @description 文本Y方向的, 偏移量, 支持正负\n * @default 0\n * @example offsetY: 10\n */\n offsetY?: number\n /**\n * 文本X方向的, 偏移量\n * @description 文本X方向的, 偏移量, 支持正负\n * @default 0\n * @example offsetX: -10\n */\n offsetX?: number\n /**\n * 线可见\n * @description 线可见\n * @default true\n * @example true\n */\n lineVisible?: boolean\n /**\n * 线颜色\n * @description 线颜色\n * @default 'red'\n * @example 'red'\n */\n lineColor?: string\n /**\n * 线宽度\n * @description 线宽度\n * @default 2\n * @example 2\n */\n lineWidth?: number\n /**\n * 线样式\n * @description 线样式\n * @default 'solid'\n * @example 'solid'\n */\n lineStyle?: 'solid' | 'dashed' | 'dotted'\n /**\n * 背景可见\n * @description 背景可见\n * @default true\n * @example true\n */\n backgroundVisible?: boolean\n /**\n * 背景颜色\n * @description 背景颜色\n * @default '#212121'\n * @example 'red'\n */\n backgroundColor?: string\n /**\n * 背景边框颜色\n * @description 背景边框颜色\n * @default 'red'\n * @example 'red'\n */\n backgroundBorderColor?: string\n /**\n * 背景边框宽度\n * @description 背景边框宽度\n * @default 1\n * @example 2\n */\n backgroundBorderWidth?: number\n /**\n * 背景边框圆角\n * @description 背景边框圆角\n * @default 4\n * @example 4\n */\n backgroundBorderRadius?: number\n /**\n * 背景内边距\n * @description 背景内边距\n * @default 4\n * @example 4\n */\n backgroundPadding?: number\n}\n\nexport const zAnnotationVerticalLine = z.object({\n selector: z.union([zSelector, zSelectors]).optional(),\n xValue: z.union([z.number(), z.string(), z.array(z.union([z.number(), z.string()]))]).optional(),\n text: z.string().or(z.array(z.string())).optional(),\n textPosition: z\n .enum(['outsideStart', 'outsideEnd', 'outsideMiddle', 'insideStart', 'insideMiddle', 'insideEnd'])\n .default('insideEnd')\n .optional(),\n textColor: z.string().default('#ffffff').optional(),\n textFontSize: z.number().default(12).optional(),\n textFontWeight: z.number().default(400).optional(),\n textAlign: z.enum(['left', 'right', 'center']).default('right').optional(),\n textBaseline: z.enum(['top', 'middle', 'bottom']).default('top').optional(),\n lineVisible: z.boolean().optional(),\n lineColor: z.string().optional(),\n lineWidth: z.number().optional(),\n lineStyle: z.union([z.literal('solid'), z.literal('dashed'), z.literal('dotted')]).optional(),\n backgroundVisible: z.boolean().default(true).optional(),\n backgroundColor: z.string().default('#212121').optional(),\n backgroundBorderColor: z.string().optional(),\n backgroundBorderWidth: z.number().default(1).optional(),\n backgroundBorderRadius: z.number().default(4).optional(),\n backgroundPadding: z.number().optional(),\n})\n","import { zSelector, zSelectors, type Selector, type Selectors } from '../../dataSelector'\nimport { z } from 'zod'\n\nexport type AnnotationHorizontalLine = {\n /**\n * 依赖选择的数据, 进行数据标记.\n */\n selector?: Selector | Selectors\n /**\n * 固定的y值, 用于标注水平线\n * @description 类目轴在y方向, 则可输入维值, 数值轴在y方向, 则可输入具体的数值\n * @default []\n */\n yValue?: (number | string) | (number | string)[]\n /**\n * 标注的文本\n * @description 标注的文本\n * @default ''\n * @example '标注文本'\n */\n text?: string | string[]\n /**\n * 文本位置\n * @description 标注线的标签位置(标签相对线的相对位置)。\n * @default 'insideEnd'\n * @example 'outsideEnd'\n */\n textPosition?: 'outsideStart' | 'outsideEnd' | 'outsideMiddle' | 'insideStart' | 'insideMiddle' | 'insideEnd'\n /**\n * 文本颜色\n * @description 文本颜色\n * @default '#ffffff'\n * @example 'red'\n */\n textColor?: string\n /**\n * 文本字体大小\n * @description 文本字体大小\n * @default 12\n * @example 12\n */\n textFontSize?: number\n /**\n * 文本字体重量\n * @description 文本字体重量\n * @default 400\n * @example 400\n */\n textFontWeight?: number\n\n /**\n * 文本对齐方式\n * @description 文本对齐方式\n * @default 'left'\n * @example 'center'\n */\n textAlign?: 'left' | 'right' | 'center'\n /**\n * 文本垂直对齐方式\n * @description 文本垂直对齐方式\n * @default 'bottom'\n * @example 'middle'\n */\n textBaseline?: 'top' | 'middle' | 'bottom'\n /**\n * 文本Y方向的, 偏移量\n * @description 文本Y方向的, 偏移量, 支持正负\n * @default 0\n * @example offsetY: 10\n */\n offsetY?: number\n /**\n * 文本X方向的, 偏移量\n * @description 文本X方向的, 偏移量, 支持正负\n * @default 0\n * @example offsetX: -10\n */\n offsetX?: number\n /**\n * 线可见\n * @description 线可见\n * @default true\n * @example true\n */\n lineVisible?: boolean\n /**\n * 线颜色\n * @description 线颜色\n * @default 'red'\n * @example 'red'\n */\n lineColor?: string\n /**\n * 线宽度\n * @description 线宽度\n * @default 2\n * @example 2\n */\n lineWidth?: number\n /**\n * 线样式\n * @description 线样式\n * @default 'solid'\n * @example 'solid'\n */\n lineStyle?: 'solid' | 'dashed' | 'dotted'\n /**\n * 背景可见\n * @description 背景可见\n * @default true\n * @example true\n */\n backgroundVisible?: boolean\n /**\n * 背景颜色\n * @description 背景颜色\n * @default '#212121'\n * @example 'red'\n */\n backgroundColor?: string\n /**\n * 背景边框颜色\n * @description 背景边框颜色\n * @default 'red'\n * @example 'red'\n */\n backgroundBorderColor?: string\n /**\n * 背景边框宽度\n * @description 背景边框宽度\n * @default 1\n * @example 2\n */\n backgroundBorderWidth?: number\n /**\n * 背景边框圆角\n * @description 背景边框圆角\n * @default 4\n * @example 4\n */\n backgroundBorderRadius?: number\n /**\n * 背景内边距\n * @description 背景内边距\n * @default 4\n * @example 4\n */\n backgroundPadding?: number\n}\n\nexport const zAnnotationHorizontalLine = z.object({\n selector: z.union([zSelector, zSelectors]).optional(),\n yValue: z.union([z.number(), z.string(), z.array(z.union([z.number(), z.string()]))]).optional(),\n text: z.string().or(z.array(z.string())).optional(),\n textPosition: z\n .enum(['outsideStart', 'outsideEnd', 'outsideMiddle', 'insideStart', 'insideMiddle', 'insideEnd'])\n .default('insideMiddle')\n .optional(),\n textColor: z.string().default('#ffffff').optional(),\n textFontSize: z.number().default(12).optional(),\n textFontWeight: z.number().default(400).optional(),\n textAlign: z.enum(['left', 'right', 'center']).default('center').optional(),\n textBaseline: z.enum(['top', 'middle', 'bottom']).default('bottom').optional(),\n lineVisible: z.boolean().optional(),\n lineColor: z.string().optional(),\n lineWidth: z.number().optional(),\n lineStyle: z.union([z.literal('solid'), z.literal('dashed'), z.literal('dotted')]).optional(),\n backgroundVisible: z.boolean().default(true).optional(),\n backgroundColor: z.string().default('#212121').optional(),\n backgroundBorderColor: z.string().optional(),\n backgroundBorderWidth: z.number().default(1).optional(),\n backgroundBorderRadius: z.number().default(4).optional(),\n backgroundPadding: z.number().optional(),\n})\n","import { zSelector, zSelectors, type Selector, type Selectors } from '../../dataSelector'\nimport { z } from 'zod'\n\nexport type AnnotationArea = {\n /**\n * 依赖选择的数据, 进行数据标记.\n */\n selector: Selector | Selectors\n\n /**\n * 标注的文本\n * @description 标注的文本\n * @default ''\n * @example '标注文本'\n */\n text?: string | string[]\n\n /**\n * 文本位置\n * @description 文本位置\n * @default 'top'\n * @example 'top'\n */\n textPosition?: 'top' | 'topRight' | 'topLeft' | 'bottom' | 'bottomLeft' | 'bottomRight' | 'left' | 'right'\n\n /**\n * 文本颜色\n * @description 文本颜色\n * @default '#ffffff'\n * @example 'red'\n */\n textColor?: string\n /**\n * 文本字体大小\n * @description 文本字体大小\n * @default 12\n * @example 12\n */\n textFontSize?: number\n /**\n * 文本字体重量\n * @description 文本字体重量\n * @default 400\n * @example 400\n */\n textFontWeight?: number\n\n /**\n * 文本对齐方式\n * @description 文本对齐方式\n * @default 'left'\n * @example 'left'\n */\n textAlign?: 'left' | 'right' | 'center'\n /**\n * 文本垂直对齐方式\n * @description 文本垂直对齐方式\n * @default 'middle'\n * @example 'middle'\n */\n textBaseline?: 'top' | 'middle' | 'bottom'\n /**\n * 背景可见\n * @description 背景可见\n * @default true\n * @example true\n */\n backgroundVisible?: boolean\n /**\n * 背景颜色\n * @description 背景颜色\n * @default '#212121'\n * @example 'red'\n */\n backgroundColor?: string\n /**\n * 背景边框颜色\n * @description 背景边框颜色\n * @default 'red'\n * @example 'red'\n */\n backgroundBorderColor?: string\n /**\n * 背景边框宽度\n * @description 背景边框宽度\n * @default 1\n * @example 2\n */\n backgroundBorderWidth?: number\n /**\n * 背景边框圆角\n * @description 背景边框圆角\n * @default 4\n * @example 4\n */\n backgroundBorderRadius?: number\n /**\n * 背景内边距\n * @description 背景内边距\n * @default 4\n * @example 4\n */\n backgroundPadding?: number\n\n /**\n * 面积区域颜色\n * @description 面积区域颜色\n * @default 'red'\n * @example 'red'\n */\n areaColor?: string\n /**\n * 面积区域颜色透明度\n * @description 面积区域颜色透明度\n * @default 0.5\n * @example 0.5\n */\n areaColorOpacity?: number\n /**\n * 面积区域边框颜色\n * @description 面积区域边框颜色\n * @default 'red'\n * @example 'red'\n */\n areaBorderColor?: number\n /**\n * 面积区域边框宽度\n * @description 面积区域边框宽度\n * @default 2\n * @example 2\n */\n areaBorderWidth?: number\n /**\n * 面积区域边框圆角\n * @description 面积区域边框圆角\n * @default 4\n * @example 4\n */\n areaBorderRadius?: number\n /**\n * 面积区域的边距\n * @description 面积区域的边距\n * @default 8\n * @example 0\n */\n outerPadding?: number\n}\n\nexport const zAnnotationArea = z.object({\n selector: z.union([zSelector, zSelectors]),\n textPosition: z\n .enum(['top', 'topRight', 'topLeft', 'bottom', 'bottomLeft', 'bottomRight', 'left', 'right'])\n .default('top')\n .optional(),\n text: z.string().or(z.array(z.string())).optional(),\n textColor: z.string().default('#ffffff').optional(),\n textFontSize: z.number().default(12).optional(),\n textFontWeight: z.number().default(400).optional(),\n textAlign: z.enum(['left', 'right', 'center']).default('center').optional(),\n textBaseline: z.enum(['top', 'middle', 'bottom']).default('middle').optional(),\n\n backgroundVisible: z.boolean().default(true).optional(),\n backgroundColor: z.string().default('#212121').optional(),\n backgroundBorderColor: z.string().optional(),\n backgroundBorderWidth: z.number().default(1).optional(),\n backgroundBorderRadius: z.number().default(4).optional(),\n backgroundPadding: z.number().optional(),\n\n areaColor: z.string().default('red').optional(),\n areaColorOpacity: z.number().default(0.5).optional(),\n areaBorderColor: z.number().optional(),\n areaBorderWidth: z.number().default(2).optional(),\n areaBorderRadius: z.number().default(4).optional(),\n\n outerPadding: z.number().optional(),\n})\n","import { z } from 'zod'\nimport { zAnnotationPoint } from './annotationPoint'\nimport { zAnnotationVerticalLine } from './annotationVerticalLine'\nimport { zAnnotationHorizontalLine } from './annotationHorizontalLine'\nimport { zAnnotationArea } from './annotationArea'\n\nexport const zAnnotation = z.object({\n annotationPoint: zAnnotationPoint.or(z.array(zAnnotationPoint)).optional(),\n annotationVerticalLine: zAnnotationVerticalLine.or(z.array(zAnnotationVerticalLine)).optional(),\n annotationHorizontalLine: zAnnotationHorizontalLine.or(z.array(zAnnotationHorizontalLine)).optional(),\n annotationArea: zAnnotationArea.or(z.array(zAnnotationArea)).optional(),\n})\n\nexport type Annotation = z.infer<typeof zAnnotation>\n","import { z } from 'zod'\n\nexport const zSortAxis = z.object({\n order: z.enum(['asc', 'desc']).default('asc'),\n orderBy: z.string().optional(),\n customOrder: z.array(z.any()).optional(),\n})\n\n/**\n * @description 类目轴排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @default {}\n * @example \n * - order:'asc'\n * - orderBy:'date'\n * 或\n * - customOrder:['2019', '2020', '2021']\n */\nexport type SortAxis = {\n /**\n * @description 排序顺序, 可选值为 'asc' 或 'desc'\n * @default 'asc'\n * @enum ['asc', 'desc']\n * @example order:'asc'\n */\n order?: 'asc' | 'desc'\n\n /**\n * @description 排序依赖的字段, 可以是维度id或指标id\n * @default ''\n * @example \n * - orderBy:'date'\n * - orderBy:'profit'\n */\n orderBy?: string\n\n /**\n * @description 自定义排序顺序, 该顺序将直接应用至类目轴\n */\n customOrder?: string[]\n}\n","import { z } from 'zod'\n\nexport const zSortLegend = z.object({\n order: z.enum(['asc', 'desc']).default('asc'),\n orderBy: z.string().optional(),\n customOrder: z.array(z.any()).optional(),\n})\n\n/**\n * @description 图例排序配置, 支持根据维度或指标排序, 以及自定义排序顺序; 排序数组遵循从左到右或从上到下的顺序\n * @default {}\n * @example \n * - order:'asc'\n * - orderBy:'date'\n * 或\n * - customOrder:['2019', '2020', '2021']\n */\nexport type SortLegend = {\n /**\n * @description 排序顺序, 可选值为 'asc' 或 'desc'\n * @default 'asc'\n * @enum ['asc', 'desc']\n * @example order:'asc'\n */\n order?: 'asc' | 'desc'\n /**\n * @description 排序依赖的字段, 可以是维度id或指标id\n * @default ''\n * @example \n * - orderBy:'date'\n * - orderBy:'profit'\n */\n orderBy?: string\n /**\n * @description 自定义排序顺序, 该顺序将直接应用至图例, 升序从左到右或从上到下, 降序从右到左或从下到上\n */\n customOrder?: string[]\n}\n","import z from 'zod'\n\nexport const zAnalysis = z.object({\n orderMapping: z.record(z.string(), z.array(z.string())).optional(),\n})\n","import { z } from 'zod'\n\nexport type Locale = 'zh-CN' | 'en-US'\n\nexport type TranslateRecordType = Record<string, { [local in Locale]: string }>\n\nexport const zLocale = z.enum(['zh-CN', 'en-US']).default('zh-CN')\n","import { z } from 'zod'\nimport { zLocale, type Locale } from '../../i18n'\nimport type { DimensionTree, MeasureTree } from '../../properties'\nimport {\n zBackgroundColor,\n zDataset,\n zDimensions,\n zMeasureTree,\n zTheme,\n type BackgroundColor,\n type Dataset,\n type Theme,\n} from '../../properties'\n\n/**\n * 表格类型定义\n * @description 表格,适用于详细数据展示场景,行列分明,便于查看具体数值\n * 适用场景:\n * - 需要展示详细数据明细\n * - 数据项需要精确比对\n * - 展示多维度数据属性\n * 数据要求:\n * - 至少1个维度字段\n * - 至少1个度量字段\n * - 维度字段会作为表格的列标题\n * 默认开启的功能:\n * - 默认开启排序、筛选、分页功能\n */\nexport interface Table {\n /**\n * 表格\n * @description 标准表格组件,用于展示详细数据\n * @type {'table'}\n * @example 'table'\n */\n chartType: 'table'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, 一个字段对应一列, 一个记录对应一行\n * @type {Array<Record<string|number, any>>}\n * @example [{id: 1, name: \"A\", value: 100}, {id: 2, name: \"B\", value: 200}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 表格的每个维度会对应一列\n * @type {Dimensions}\n * @example [{id: \"name\", alias: \"名称\"}]\n */\n dimensions?: DimensionTree\n\n /**\n * 指标\n * @description 表格的每个指标会对应一行, 并且天生支持指标组合.\n * @type {Measures}\n * @example [{id: \"value\", alias: \"数值\"}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zTable = z.object({\n chartType: z.literal('table'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n theme: zTheme.optional(),\n locale: zLocale.optional(),\n})\n","import { z } from 'zod'\nimport { zLocale, type Locale } from '../../i18n'\nimport type { Measures } from '../../properties'\nimport {\n zBackgroundColor,\n zDataset,\n zDimensions,\n zTheme,\n type BackgroundColor,\n type Dataset,\n type Dimensions,\n type Theme,\n zMeasures,\n} from '../../properties'\n\n/**\n * 透视表类型定义\n * @description 透视表,适用于多维度数据交叉分析场景,可灵活配置行、列维度和指标计算方式\n * 适用场景:\n * - 复杂多维数据统计分析\n * - 数据钻取与聚合展示\n * - 业务报表生成与数据探索\n * 数据要求:\n * - 至少1个行维度 或 1个列维度 或 1个指标\n * - 数据必须已聚合\n * - 数据可被分组\n * 默认开启的功能:\n * - 默认开启行列排序、数据筛选、聚合计算、小计/总计\n */\nexport interface PivotTable {\n /**\n * 透视表\n * @description 透视表,适用于多维度数据交叉分析场景\n * @type {'pivotTable'}\n * @example 'pivotTable'\n */\n chartType: 'pivotTable'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 透视表的数据最终会被转换对应的树形结构, 用户无需手动进行数据处理.\n * @type {Array<Record<string|number, any>>}\n * @example [{region:'华东', product:'A', sales:1000}, {region:'华东', product:'B', sales:1500}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 透视表的行维度和列维度,会自动对数据进行处理为树形结构, 并映射到行和列轴, 可以通过 location : \"rowDimension\" | \"columnDimension\" 来控制一维度的映射位置\n * @type {Dimensions}\n * @example [{id: 'region', alias: '地区', isRow: true}, {id: 'product', alias: '产品', isColumn: true}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 透视表支持多个维度指标\n * @type {Measures}\n * @example [{id: 'sales', alias: '销售额', aggregation: 'sum'}]\n */\n measures?: Measures\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zPivotTable = z.object({\n chartType: z.literal('pivotTable'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasures.optional(),\n backgroundColor: zBackgroundColor.optional(),\n theme: zTheme.optional(),\n locale: zLocale.optional(),\n})\n","import type { Locale } from '../../i18n'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zColor,\n zCrosshairLine,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zLineStyle,\n zMeasureTree,\n zPointStyle,\n zSortAxis,\n zSortLegend,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\nimport type {\n AnnotationArea,\n AnnotationHorizontalLine,\n AnnotationPoint,\n AnnotationVerticalLine,\n BackgroundColor,\n Color,\n Dataset,\n Dimensions,\n Label,\n Legend,\n LineStyle,\n PointStyle,\n Theme,\n Tooltip,\n CrosshairLine,\n XBandAxis,\n YLinearAxis,\n MeasureTree,\n SortAxis,\n SortLegend,\n} from '../../properties'\nimport { z } from 'zod'\n\n/**\n * 折线图类型定义\n * @description 折线图,适用于展示数据随时间或有序类别变化的趋势,通过线段连接数据点形成趋势线\n * 适用场景:\n * - 展示时间序列数据的变化趋势\n * - 比较多个数据系列的趋势对比\n * - 分析数据的增长或下降规律\n * 数据要求:\n * - 至少1个数值字段(度量)\n * - 第一个维度会放至X轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示\n * - 所有指标会自动合并为一个指标\n * 默认开启的功能:\n * - 默认开启图例、坐标轴、数据点标记、提示信息、趋势线\n */\nexport interface Line {\n /**\n * 折线图\n * @description 折线图,适用于展示数据随时间或有序类别变化的趋势\n * @type {'line'}\n * @example 'line'\n */\n chartType: 'line'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 折线图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{month:'1月', value:100}, {month:'2月', value:150}, {month:'3月', value:120}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 折线图的第一个维度被映射到X轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示\n * @type {Dimensions}\n * @example [{id: \"month\", alias: \"月份\"}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 折线图的所有指标会自动合并为一个指标, 映射到Y轴, 存在多个指标时, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {DimensionTree}\n * @example [{id: \"value\", alias: \"数值\"}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * x轴\n * @description 类目轴, x轴配置, 用于定义图表的x轴, 包括x轴的位置, 格式, 样式等.\n */\n xAxis?: XBandAxis\n\n /**\n * y轴\n * @description 数值轴, y轴配置, 用于定义图表的y轴, 包括y轴的位置, 格式, 样式等.\n */\n yAxis?: YLinearAxis\n\n /**\n * 垂直提示线\n * @description 鼠标移动到图表上时, 显示的垂直提示线\n */\n crosshairLine?: CrosshairLine\n\n /**\n * @description X轴排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example \n * sortAxis: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortAxis: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortAxis?: SortAxis\n /**\n * @description 图例排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortLegend: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortLegend: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortLegend?: SortLegend\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 点图元样式\n * @description 点图元样式配置, 用于定义图表的点图元样式, 包括点图元的颜色, 边框等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n pointStyle?: PointStyle | PointStyle[]\n\n /**\n * 线图元样式\n * @description 线图元样式配置, 用于定义图表的线图元样式, 包括线图元的颜色, 透明度, 曲线等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n lineStyle?: LineStyle | LineStyle[]\n\n /**\n * 标注点\n * @description 标注点配置, 根据选择的数据, 定义图表的标注点, 包括标注点的位置, 格式, 样式等.\n */\n annotationPoint?: AnnotationPoint | AnnotationPoint[]\n\n /**\n * 标注垂直线\n * @description 标注垂直线配置, 根据选择的数据, 定义图表的标注垂直线, 包括标注垂直线的位置, 样式等.\n */\n annotationVerticalLine?: AnnotationVerticalLine | AnnotationVerticalLine[]\n\n /**\n * 标注水平线\n * @description 标注水平线配置, 根据选择的数据, 定义图表的标注水平线, 包括标注水平线的位置, 样式等.\n */\n annotationHorizontalLine?: AnnotationHorizontalLine | AnnotationHorizontalLine[]\n\n /**\n * 标注区域\n * @description 标注区域配置, 根据选择的数据, 定义图表的标注区域, 包括标注区域的位置, 样式等.\n */\n annotationArea?: AnnotationArea | AnnotationArea[]\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zLine = z.object({\n chartType: z.literal('line'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n xAxis: zXBandAxis.optional(),\n yAxis: zYLinearAxis.optional(),\n crosshairLine: zCrosshairLine.optional(),\n sortAxis: zSortAxis.optional(),\n sortLegend: zSortLegend.optional(),\n theme: zTheme.optional(),\n pointStyle: zPointStyle.optional(),\n lineStyle: zLineStyle.optional(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).optional(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).optional(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).optional(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).optional(),\n locale: zLocale.optional(),\n})\n","import type { Locale } from '../../i18n'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\nimport type {\n AnnotationArea,\n AnnotationHorizontalLine,\n AnnotationPoint,\n AnnotationVerticalLine,\n BackgroundColor,\n BarStyle,\n Color,\n CrosshairRect,\n Dataset,\n Dimensions,\n Label,\n Legend,\n StackCornerRadius,\n Theme,\n Tooltip,\n XBandAxis,\n YLinearAxis,\n MeasureTree,\n SortAxis,\n SortLegend,\n} from '../../properties'\nimport { z } from 'zod'\n\n/**\n * 柱状图类型定义\n * @description 柱状图,适用于纵向数据对比场景,X轴为类目轴(分类数据),Y轴为数值轴(连续数据),柱子纵向排列\n * 适用场景:\n * - 数据项名称较短时\n * - 需要直观比较不同类别的数值大小\n * - 展示时间序列数据变化趋势\n * 数据要求:\n * - 至少1个数值字段(度量)\n * - 第一个维度会放至X轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示\n * - 所有指标会自动合并为一个指标\n * 默认开启的功能:\n * - 默认开启图例、坐标轴、数据标签、提示信息\n */\nexport interface Column {\n /**\n * 柱状图\n * @description 柱状图,适用于纵向数据对比场景,X轴为类目轴(分类数据),Y轴为数值轴(连续数据),柱子纵向排列\n * @type {'column'}\n * @example 'column'\n */\n chartType: 'column'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 柱状图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{category:'A', value:100}, {category:'B', value:200}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 柱状图的第一个维度被映射到X轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示\n * @type {Dimensions}\n * @example [{id: \"category\", alias: \"类别\"}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 柱状图的所有指标会自动合并为一个指标, 映射到Y轴, 存在多个指标时, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {DimensionTree}\n * @example [{id: \"value\", alias: \"数值\"}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * x轴\n * @description 类目轴, x轴配置, 用于定义图表的x轴, 包括x轴的位置, 格式, 样式等.\n */\n xAxis?: XBandAxis\n\n /**\n * y轴\n * @description 数值轴, y轴配置, 用于定义图表的y轴, 包括y轴的位置, 格式, 样式等.\n */\n yAxis?: YLinearAxis\n\n /**\n * @description X轴排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortAxis: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortAxis: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortAxis?: SortAxis\n /**\n * @description 图例排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortLegend: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortLegend: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortLegend?: SortLegend\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 垂直提示框\n * @description 垂直提示框配置, 用于定义图表的垂直提示框, 包括垂直提示框的颜色、标签样式等.\n */\n crosshairRect?: CrosshairRect\n\n /**\n * 柱状图 堆叠圆角\n * @description 条形图 堆叠圆角\n * @default 8\n */\n stackCornerRadius?: StackCornerRadius\n\n /**\n * 矩形图元样式\n * @description 条形图样式配置, 用于定义图表的条形图样式, 包括条形图的颜色, 边框, 圆角等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n barStyle?: BarStyle | BarStyle[]\n\n /**\n * 标注点\n * @description 标注点配置, 根据选择的数据, 定义图表的标注点, 包括标注点的位置, 格式, 样式等.\n */\n annotationPoint?: AnnotationPoint | AnnotationPoint[]\n\n /**\n * 标注垂直线\n * @description 标注垂直线配置, 根据选择的数据, 定义图表的标注垂直线, 包括标注垂直线的位置, 样式等.\n */\n annotationVerticalLine?: AnnotationVerticalLine | AnnotationVerticalLine[]\n\n /**\n * 标注水平线\n * @description 标注水平线配置, 根据选择的数据, 定义图表的标注水平线, 包括标注水平线的位置, 样式等.\n */\n annotationHorizontalLine?: AnnotationHorizontalLine | AnnotationHorizontalLine[]\n\n /**\n * 标注区域\n * @description 标注区域配置, 根据选择的数据, 定义图表的标注区域, 包括标注区域的位置, 样式等.\n */\n annotationArea?: AnnotationArea | AnnotationArea[]\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zColumn = z.object({\n chartType: z.literal('column'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n xAxis: zXBandAxis.optional(),\n yAxis: zYLinearAxis.optional(),\n crosshairRect: zCrosshairRect.optional(),\n stackCornerRadius: zStackCornerRadius.optional(),\n theme: zTheme.optional(),\n barStyle: zBarStyle.optional(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).optional(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).optional(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).optional(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).optional(),\n locale: zLocale.optional(),\n})\n","import type { Locale } from '../../i18n'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\nimport type {\n AnnotationArea,\n AnnotationHorizontalLine,\n AnnotationPoint,\n AnnotationVerticalLine,\n BackgroundColor,\n BarStyle,\n Color,\n CrosshairRect,\n Dataset,\n Dimensions,\n Label,\n Legend,\n StackCornerRadius,\n Theme,\n Tooltip,\n XBandAxis,\n YLinearAxis,\n MeasureTree,\n SortLegend,\n SortAxis,\n} from '../../properties'\nimport { z } from 'zod'\n\n/**\n * 并列柱状图类型定义\n * @description 并列柱状图,适用于多指标并行对比场景,多个柱子并列排列展示不同指标值\n * 适用场景:\n * - 同一维度下多指标并行对比\n * - 多维度数据的横向比较\n * - 指标间关联性分析\n * 数据要求:\n * - 至少1个指标字段(度量)\n * - 第一个维度会放至X轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * - 所有指标会自动合并为一个指标\n * 默认开启的功能:\n * - 默认开启图例、坐标轴、数据标签、提示信息、指标排序\n */\nexport interface ColumnParallel {\n /**\n * 并列柱状图\n * @description 并列柱状图,适用于多指标并行对比场景\n * @type {'columnParallel'}\n * @example 'columnParallel'\n */\n chartType: 'columnParallel'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 并列柱状图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{category:'A', value1:100, value2:200}, {category:'B', value1:150, value2:250}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 第一个维度被映射到X轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * @type {Dimensions}\n * @example [{id: 'category', alias: '类别'}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 并列柱状图的所有指标会自动合并为一个指标, 映射到Y轴, 存在多个指标时, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {DimensionTree}\n * @example [{id: 'value1', alias: '指标1'}, {id: 'value2', alias: '指标2'}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * x轴\n * @description 类目轴, x轴配置, 用于定义图表的x轴, 包括x轴的位置, 格式, 样式等.\n */\n xAxis?: XBandAxis\n\n /**\n * y轴\n * @description 数值轴, y轴配置, 用于定义图表的y轴, 包括y轴的位置, 格式, 样式等.\n */\n yAxis?: YLinearAxis\n\n /**\n * 垂直提示框\n * @description 垂直提示框配置, 用于定义图表的垂直提示框, 包括垂直提示框的颜色、标签样式等.\n */\n crosshairRect?: CrosshairRect\n\n /**\n * 柱状图 堆叠圆角\n * @description 条形图 堆叠圆角\n * @default 8\n */\n stackCornerRadius?: StackCornerRadius\n\n /**\n * @description X轴排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortAxis: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortAxis: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortAxis?: SortAxis\n /**\n * @description 图例排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortLegend: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortLegend: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortLegend?: SortLegend\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 矩形图元样式\n * @description 条形图样式配置, 用于定义图表的条形图样式, 包括条形图的颜色, 边框, 圆角等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n barStyle?: BarStyle | BarStyle[]\n\n /**\n * 标注点\n * @description 标注点配置, 根据选择的数据, 定义图表的标注点, 包括标注点的位置, 格式, 样式等.\n */\n annotationPoint?: AnnotationPoint | AnnotationPoint[]\n\n /**\n * 标注垂直线\n * @description 标注垂直线配置, 根据选择的数据, 定义图表的标注垂直线, 包括标注垂直线的位置, 样式等.\n */\n annotationVerticalLine?: AnnotationVerticalLine | AnnotationVerticalLine[]\n\n /**\n * 标注水平线\n * @description 标注水平线配置, 根据选择的数据, 定义图表的标注水平线, 包括标注水平线的位置, 样式等.\n */\n annotationHorizontalLine?: AnnotationHorizontalLine | AnnotationHorizontalLine[]\n\n /**\n * 标注区域\n * @description 标注区域配置, 根据选择的数据, 定义图表的标注区域, 包括标注区域的位置, 样式等.\n */\n annotationArea?: AnnotationArea | AnnotationArea[]\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zColumnParallel = z.object({\n chartType: z.literal('columnParallel'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n xAxis: zXBandAxis.optional(),\n yAxis: zYLinearAxis.optional(),\n crosshairRect: zCrosshairRect.optional(),\n stackCornerRadius: zStackCornerRadius.optional(),\n theme: zTheme.optional(),\n barStyle: zBarStyle.optional(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).optional(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).optional(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).optional(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).optional(),\n locale: zLocale.optional(),\n})\n","import type { Locale } from '../../i18n'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\nimport type {\n AnnotationArea,\n AnnotationHorizontalLine,\n AnnotationPoint,\n AnnotationVerticalLine,\n BackgroundColor,\n BarStyle,\n Color,\n CrosshairRect,\n Dataset,\n Dimensions,\n Label,\n Legend,\n StackCornerRadius,\n Theme,\n Tooltip,\n XBandAxis,\n YLinearAxis,\n MeasureTree,\n SortAxis,\n SortLegend,\n} from '../../properties'\nimport { z } from 'zod'\n\n/**\n * 百分比柱状图类型定义\n * @description 百分比柱状图,适用于展示各类别占比关系的场景,Y轴以百分比形式展示数据占比\n * 适用场景:\n * - 不同类别数据的占比对比\n * - 多维度数据的构成分析\n * - 时间序列的占比变化趋势\n * 数据要求:\n * - 至少1个指标字段(度量)\n * - 第一个维度会放至X轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * - 所有指标会自动合并为一个指标\n * 默认开启的功能:\n * - 默认开启图例、坐标轴、百分比标签、提示信息、占比计算\n */\nexport interface ColumnPercent {\n /**\n * 百分比柱状图\n * @description 百分比柱状图,以百分比形式展示各类别数据占比关系\n * @type {'columnPercent'}\n * @example 'columnPercent'\n */\n chartType: 'columnPercent'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 百分比柱状图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{category:'A', value:30}, {category:'B', value:70}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 第一个维度被映射到X轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * @type {Dimensions}\n * @example [{id: 'category', alias: '类别'}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 百分比柱状图指标会自动合并为一个指标, 映射到Y轴, 存在多个指标时, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {DimensionTree}\n * @example [{id: 'value', alias: '数值占比', format: 'percent'}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * x轴\n * @description 类目轴, x轴配置, 用于定义图表的x轴, 包括x轴的位置, 格式, 样式等.\n */\n xAxis?: XBandAxis\n\n /**\n * y轴\n * @description 数值轴, y轴配置, 用于定义图表的y轴, 包括y轴的位置, 格式, 样式等.\n */\n yAxis?: YLinearAxis\n\n /**\n * 垂直提示框\n * @description 垂直提示框配置, 用于定义图表的垂直提示框, 包括垂直提示框的颜色、标签样式等.\n */\n crosshairRect?: CrosshairRect\n\n /**\n * 柱状图 堆叠圆角\n * @description 条形图 堆叠圆角\n * @default 8\n */\n stackCornerRadius?: StackCornerRadius\n\n /**\n * @description X轴排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortAxis: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortAxis: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortAxis?: SortAxis\n /**\n * @description 图例排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortLegend: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortLegend: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortLegend?: SortLegend\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 矩形图元样式\n * @description 条形图样式配置, 用于定义图表的条形图样式, 包括条形图的颜色, 边框, 圆角等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n barStyle?: BarStyle | BarStyle[]\n\n /**\n * 标注点\n * @description 标注点配置, 根据选择的数据, 定义图表的标注点, 包括标注点的位置, 格式, 样式等.\n */\n annotationPoint?: AnnotationPoint | AnnotationPoint[]\n\n /**\n * 标注垂直线\n * @description 标注垂直线配置, 根据选择的数据, 定义图表的标注垂直线, 包括标注垂直线的位置, 样式等.\n */\n annotationVerticalLine?: AnnotationVerticalLine | AnnotationVerticalLine[]\n\n /**\n * 标注水平线\n * @description 标注水平线配置, 根据选择的数据, 定义图表的标注水平线, 包括标注水平线的位置, 样式等.\n */\n annotationHorizontalLine?: AnnotationHorizontalLine | AnnotationHorizontalLine[]\n\n /**\n * 标注区域\n * @description 标注区域配置, 根据选择的数据, 定义图表的标注区域, 包括标注区域的位置, 样式等.\n */\n annotationArea?: AnnotationArea | AnnotationArea[]\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zColumnPercent = z.object({\n chartType: z.literal('columnPercent'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n xAxis: zXBandAxis.optional(),\n yAxis: zYLinearAxis.optional(),\n crosshairRect: zCrosshairRect.optional(),\n stackCornerRadius: zStackCornerRadius.optional(),\n theme: zTheme.optional(),\n barStyle: zBarStyle.optional(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).optional(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).optional(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).optional(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).optional(),\n locale: zLocale.optional(),\n})\n","import { zLocale, type Locale } from '../../i18n'\nimport type { MeasureTree, SortAxis, SortLegend } from '../../properties'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXLinearAxis,\n zYBandAxis,\n} from '../../properties'\nimport {\n type AnnotationArea,\n type AnnotationHorizontalLine,\n type AnnotationPoint,\n type AnnotationVerticalLine,\n type BackgroundColor,\n type BarStyle,\n type Color,\n type CrosshairRect,\n type Dataset,\n type Dimensions,\n type Label,\n type Legend,\n type StackCornerRadius,\n type Theme,\n type Tooltip,\n type XLinearAxis,\n type YBandAxis,\n} from '../../properties'\nimport { z } from 'zod'\n\n/**\n * 条形图类型定义\n * @description 条形图,适用于横向数据对比场景,Y轴为类目轴(分类数据),X轴为数值轴(连续数据),柱子横向排列\n * 适用场景:\n * - 数据项名称较长时\n * - 需要展示数据排名对比\n * - 展示正负双向数据\n * 数据要求:\n * - 至少1个指标字段(度量)\n * - 第一个维度会放至Y轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * - 所有指标会自动合并为一个指标\n * 默认开启的功能:\n * - 默认开启图例、坐标轴、数据标签、提示信息\n */\nexport interface Bar {\n /**\n * 条形图\n * @description 条形图,适用于横向数据对比场景,Y轴为类目轴(分类数据),X轴为数值轴(连续数据),柱子横向排列\n * @type {'bar'}\n * @example 'bar'\n */\n chartType: 'bar'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 条形图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{date:'2020-01-01', value:100}, {date:'2020-01-02', value:200}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 第一个维度被映射到Y轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * @type {Dimensions}\n * @example [{id: \"date\", alias: \"日期\"}, {id: \"value\", alias: \"数值\"}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 条形图指标会自动合并为一个指标, 映射到X轴, 存在多个指标时, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {DimensionTree}\n * @example [{id: \"value\", alias: \"数值\"}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * x轴\n * @description 数值轴, x轴配置, 用于定义图表的x轴, 包括x轴的位置, 格式, 样式等.\n */\n xAxis?: XLinearAxis\n\n /**\n * y轴\n * @description 类目轴, y轴配置, 用于定义图表的y轴, 包括y轴的位置, 格式, 样式等.\n */\n yAxis?: YBandAxis\n\n /**\n * 水平提示框\n * @description 水平提示框配置, 用于定义图表的水平提示框, 包括水平提示框的颜色、标签样式等.\n */\n crosshairRect?: CrosshairRect\n\n /**\n * 条形图 堆叠圆角\n * @description 条形图 堆叠圆角\n * @default 8\n */\n stackCornerRadius?: StackCornerRadius\n\n /**\n * @description Y轴排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortAxis: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortAxis: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortAxis?: SortAxis\n /**\n * @description 图例排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortLegend: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortLegend: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortLegend?: SortLegend\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 矩形图元样式\n * @description 条形图样式配置, 用于定义图表的条形图样式, 包括条形图的颜色, 边框, 圆角等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n barStyle?: BarStyle | BarStyle[]\n\n /**\n * 标注点\n * @description 标注点配置, 根据选择的数据, 定义图表的标注点, 包括标注点的位置, 格式, 样式等.\n */\n annotationPoint?: AnnotationPoint | AnnotationPoint[]\n\n /**\n * 标注垂直线\n * @description 标注垂直线配置, 根据选择的数据, 定义图表的标注垂直线, 包括标注垂直线的位置, 样式等.\n */\n annotationVerticalLine?: AnnotationVerticalLine | AnnotationVerticalLine[]\n\n /**\n * 标注水平线\n * @description 标注水平线配置, 根据选择的数据, 定义图表的标注水平线, 包括标注水平线的位置, 样式等.\n */\n annotationHorizontalLine?: AnnotationHorizontalLine | AnnotationHorizontalLine[]\n\n /**\n * 标注区域\n * @description 标注区域配置, 根据选择的数据, 定义图表的标注区域, 包括标注区域的位置, 样式等.\n */\n annotationArea?: AnnotationArea | AnnotationArea[]\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zBar = z.object({\n chartType: z.literal('bar'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n xAxis: zXLinearAxis.optional(),\n yAxis: zYBandAxis.optional(),\n crosshairRect: zCrosshairRect.optional(),\n stackCornerRadius: zStackCornerRadius.optional(),\n theme: zTheme.optional(),\n barStyle: zBarStyle.optional(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).optional(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).optional(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).optional(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).optional(),\n locale: zLocale.optional(),\n})\n","import { z } from 'zod'\nimport type { Locale } from '../../i18n'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXLinearAxis,\n zYBandAxis,\n} from '../../properties'\nimport type {\n AnnotationArea,\n AnnotationHorizontalLine,\n AnnotationPoint,\n AnnotationVerticalLine,\n BackgroundColor,\n BarStyle,\n Color,\n CrosshairRect,\n Dataset,\n Dimensions,\n Label,\n Legend,\n StackCornerRadius,\n Theme,\n Tooltip,\n XLinearAxis,\n YBandAxis,\n MeasureTree,\n SortAxis,\n SortLegend,\n} from '../../properties'\n\n/**\n * 并列条形图类型定义\n * @description 并列条形图,适用于多指标横向并行对比场景,多个条形平行排列展示不同指标值\n * 适用场景:\n * - 类别名称较长时的多指标对比\n * - 排名与数值同时展示的横向比较\n * - 多维度数据的并列分析\n * 数据要求:\n * - 至少1个指标字段(度量)\n * - 第一个维度会放至Y轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * - 所有指标会自动合并为一个指标\n * 默认开启的功能:\n * - 默认开启图例、坐标轴、数据标签、提示信息\n */\nexport interface BarParallel {\n /**\n * 并列条形图\n * @description 并列条形图,适用于多指标横向并行对比场景\n * @type {'barParallel'}\n * @example 'barParallel'\n */\n chartType: 'barParallel'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 并列条形图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{category:'A', value1:100, value2:200}, {category:'B', value1:150, value2:250}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 第一个维度被映射到Y轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * @type {Dimensions}\n * @example [{id: 'category', alias: '类别'}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 并列条形图指标会自动合并为一个指标, 映射到X轴, 存在多个指标时, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {DimensionTree}\n * @example [{id: 'value1', alias: '指标1'}, {id: 'value2', alias: '指标2'}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * x轴\n * @description 数值轴, x轴配置, 用于定义图表的x轴, 包括x轴的位置, 格式, 样式等.\n */\n xAxis?: XLinearAxis\n\n /**\n * y轴\n * @description 类目轴, y轴配置, 用于定义图表的y轴, 包括y轴的位置, 格式, 样式等.\n */\n yAxis?: YBandAxis\n\n /**\n * 水平提示框\n * @description 水平提示框配置, 用于定义图表的水平提示框, 包括水平提示框的颜色、标签样式等.\n */\n crosshairRect?: CrosshairRect\n\n /**\n * 条形图 堆叠圆角\n * @description 条形图 堆叠圆角\n * @default 8\n */\n stackCornerRadius?: StackCornerRadius\n\n /**\n * @description Y轴排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortAxis: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortAxis: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortAxis?: SortAxis\n /**\n * @description 图例排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortLegend: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortLegend: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortLegend?: SortLegend\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 矩形图元样式\n * @description 条形图样式配置, 用于定义图表的条形图样式, 包括条形图的颜色, 边框, 圆角等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n barStyle?: BarStyle | BarStyle[]\n\n /**\n * 标注点\n * @description 标注点配置, 根据选择的数据, 定义图表的标注点, 包括标注点的位置, 格式, 样式等.\n */\n annotationPoint?: AnnotationPoint | AnnotationPoint[]\n\n /**\n * 标注垂直线\n * @description 标注垂直线配置, 根据选择的数据, 定义图表的标注垂直线, 包括标注垂直线的位置, 样式等.\n */\n annotationVerticalLine?: AnnotationVerticalLine | AnnotationVerticalLine[]\n\n /**\n * 标注水平线\n * @description 标注水平线配置, 根据选择的数据, 定义图表的标注水平线, 包括标注水平线的位置, 样式等.\n */\n annotationHorizontalLine?: AnnotationHorizontalLine | AnnotationHorizontalLine[]\n\n /**\n * 标注区域\n * @description 标注区域配置, 根据选择的数据, 定义图表的标注区域, 包括标注区域的位置, 样式等.\n */\n annotationArea?: AnnotationArea | AnnotationArea[]\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zBarParallel = z.object({\n chartType: z.literal('barParallel'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n xAxis: zXLinearAxis.optional(),\n yAxis: zYBandAxis.optional(),\n crosshairRect: zCrosshairRect.optional(),\n stackCornerRadius: zStackCornerRadius.optional(),\n theme: zTheme.optional(),\n barStyle: zBarStyle.optional(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).optional(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).optional(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).optional(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).optional(),\n locale: zLocale.optional(),\n})\n","import { z } from 'zod'\nimport type { Locale } from '../../i18n'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXLinearAxis,\n zYBandAxis,\n} from '../../properties'\nimport type {\n AnnotationArea,\n AnnotationHorizontalLine,\n AnnotationPoint,\n AnnotationVerticalLine,\n BackgroundColor,\n BarStyle,\n Color,\n CrosshairRect,\n Dataset,\n Dimensions,\n Label,\n Legend,\n StackCornerRadius,\n Theme,\n Tooltip,\n XLinearAxis,\n YBandAxis,\n MeasureTree,\n SortAxis,\n SortLegend,\n} from '../../properties'\n\n/**\n * 百分比条形图类型定义\n * @description 百分比条形图,适用于横向展示各类别占比关系的场景,X轴以百分比形式展示数据占比\n * 适用场景:\n * - 类别名称较长时的占比对比\n * - 多维度数据的横向构成分析\n * - 排名与占比同时展示的场景\n * 数据要求:\n * - 至少1个维度字段和1个度量字段\n * - 所有类别占比之和为100%\n * - 支持多系列堆叠展示占比关系\n * 默认开启的功能:\n * - 默认开启图例、坐标轴、百分比标签、提示信息、占比计算\n */\nexport interface BarPercent {\n /**\n * 百分比条形图\n * @description 百分比条形图,以横向百分比形式展示各类别数据占比关系\n * @type {'barPercent'}\n * @example 'barPercent'\n */\n chartType: 'barPercent'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 百分比条形图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{category:'A', value:30}, {category:'B', value:70}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 第一个维度会放至Y轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * @type {Dimensions}\n * @example [{id: 'category', alias: '类别'}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 指标会自动合并为一个指标, 映射到X轴, 存在多个指标时, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {DimensionTree}\n * @example [{id: 'value', alias: '数值占比', format: 'percent'}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * x轴\n * @description 数值轴, x轴配置, 用于定义图表的x轴, 包括x轴的位置, 格式, 样式等.\n */\n xAxis?: XLinearAxis\n\n /**\n * y轴\n * @description 类目轴, y轴配置, 用于定义图表的y轴, 包括y轴的位置, 格式, 样式等.\n */\n yAxis?: YBandAxis\n\n /**\n * 水平提示框\n * @description 水平提示框配置, 用于定义图表的水平提示框, 包括水平提示框的颜色、标签样式等.\n */\n crosshairRect?: CrosshairRect\n\n /**\n * 条形图 堆叠圆角\n * @description 条形图 堆叠圆角\n * @default 8\n */\n stackCornerRadius?: StackCornerRadius\n\n /**\n * @description Y轴排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortAxis: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortAxis: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortAxis?: SortAxis\n /**\n * @description 图例排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortLegend: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortLegend: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortLegend?: SortLegend\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 矩形图元样式\n * @description 条形图样式配置, 用于定义图表的条形图样式, 包括条形图的颜色, 边框, 圆角等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n barStyle?: BarStyle | BarStyle[]\n\n /**\n * 标注点\n * @description 标注点配置, 根据选择的数据, 定义图表的标注点, 包括标注点的位置, 格式, 样式等.\n */\n annotationPoint?: AnnotationPoint | AnnotationPoint[]\n\n /**\n * 标注垂直线\n * @description 标注垂直线配置, 根据选择的数据, 定义图表的标注垂直线, 包括标注垂直线的位置, 样式等.\n */\n annotationVerticalLine?: AnnotationVerticalLine | AnnotationVerticalLine[]\n\n /**\n * 标注水平线\n * @description 标注水平线配置, 根据选择的数据, 定义图表的标注水平线, 包括标注水平线的位置, 样式等.\n */\n annotationHorizontalLine?: AnnotationHorizontalLine | AnnotationHorizontalLine[]\n\n /**\n * 标注区域\n * @description 标注区域配置, 根据选择的数据, 定义图表的标注区域, 包括标注区域的位置, 样式等.\n */\n annotationArea?: AnnotationArea | AnnotationArea[]\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zBarPercent = z.object({\n chartType: z.literal('barPercent'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n xAxis: zXLinearAxis.optional(),\n yAxis: zYBandAxis.optional(),\n crosshairRect: zCrosshairRect.optional(),\n stackCornerRadius: zStackCornerRadius.optional(),\n theme: zTheme.optional(),\n barStyle: zBarStyle.optional(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).optional(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).optional(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).optional(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).optional(),\n locale: zLocale.optional(),\n})\n","import type { Locale } from '../../i18n'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zAreaStyle,\n zBackgroundColor,\n zColor,\n zCrosshairLine,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zLineStyle,\n zMeasureTree,\n zPointStyle,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\nimport type {\n AnnotationArea,\n AnnotationHorizontalLine,\n AnnotationPoint,\n AnnotationVerticalLine,\n AreaStyle,\n BackgroundColor,\n Color,\n Dataset,\n Dimensions,\n Label,\n Legend,\n LineStyle,\n PointStyle,\n Theme,\n Tooltip,\n XBandAxis,\n YLinearAxis,\n CrosshairLine,\n MeasureTree,\n SortAxis,\n SortLegend,\n} from '../../properties'\nimport { z } from 'zod'\n\n/**\n * 面积图类型定义\n * @description 面积图, 适用于展示数据随时间变化的趋势及累积关系, 通过填充区域增强数据对比. X轴为类目轴(分类数据), Y轴为数值轴(连续数据).\n * 适用场景:\n * - 展示单一数据系列的趋势变化\n * - 强调总量随时间的累积效果\n * - 对比多个数据系列的总量差异\n * 数据要求:\n * - 至少1个指标字段(度量)\n * - 第一个维度字段映射到X轴,其余维度字段会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * - 所有指标会自动合并为一个指标\n * 默认开启的功能:\n * - 模块开启堆叠\n * - 默认开启图例、坐标轴、区域填充、数据标签、提示信息\n */\nexport interface Area {\n /**\n * 面积图\n * @description 面积图,展示数据趋势及累积关系的图表类型\n * @type {'area'}\n * @example 'area'\n */\n chartType: 'area'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 面积图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{month:'1月', value:100}, {month:'2月', value:150}, {month:'3月', value:120}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 第一个维度被映射到X轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * @type {Dimensions}\n * @example [{ id: 'month', alias: '月份' }, { id: 'year', alias: '年份' }]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 面积图的指标会自动合并为一个指标, 映射到Y轴, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {DimensionTree}\n * @example [{id: 'value', alias: '数值'}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * x轴\n * @description 类目轴, x轴配置, 用于定义图表的x轴, 包括x轴的位置, 格式, 样式等.\n */\n xAxis?: XBandAxis\n\n /**\n * y轴\n * @description 数值轴, y轴配置, 用于定义图表的y轴, 包括y轴的位置, 格式, 样式等.\n */\n yAxis?: YLinearAxis\n\n /**\n * 垂直提示线\n * @description 鼠标移动到图表上时, 显示的垂直提示线\n */\n crosshairLine?: CrosshairLine\n\n /**\n * @description X轴排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortAxis: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortAxis: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortAxis?: SortAxis\n /**\n * @description 图例排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortLegend: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortLegend: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortLegend?: SortLegend\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 点图元样式\n * @description 点图元样式配置, 用于定义图表的点图元样式, 包括点图元的颜色, 边框等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n pointStyle?: PointStyle | PointStyle[]\n\n /**\n * 线图元样式\n * @description 线图元样式配置, 用于定义图表的线图元样式, 包括线图元的颜色, 透明度, 曲线等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n lineStyle?: LineStyle | LineStyle[]\n\n /**\n * 面积图元样式\n * @description 面积图元样式配置, 用于定义图表的面积图元样式, 包括面积图元的颜色, 透明度, 边框等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n areaStyle?: AreaStyle | AreaStyle[]\n\n /**\n * 标注点\n * @description 标注点配置, 根据选择的数据, 定义图表的标注点, 包括标注点的位置, 格式, 样式等.\n */\n annotationPoint?: AnnotationPoint | AnnotationPoint[]\n\n /**\n * 标注垂直线\n * @description 标注垂直线配置, 根据选择的数据, 定义图表的标注垂直线, 包括标注垂直线的位置, 样式等.\n */\n annotationVerticalLine?: AnnotationVerticalLine | AnnotationVerticalLine[]\n\n /**\n * 标注水平线\n * @description 标注水平线配置, 根据选择的数据, 定义图表的标注水平线, 包括标注水平线的位置, 样式等.\n */\n annotationHorizontalLine?: AnnotationHorizontalLine | AnnotationHorizontalLine[]\n\n /**\n * 标注区域\n * @description 标注区域配置, 根据选择的数据, 定义图表的标注区域, 包括标注区域的位置, 样式等.\n */\n annotationArea?: AnnotationArea | AnnotationArea[]\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zArea = z.object({\n chartType: z.literal('area'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n xAxis: zXBandAxis.optional(),\n yAxis: zYLinearAxis.optional(),\n crosshairLine: zCrosshairLine.optional(),\n theme: zTheme.optional(),\n pointStyle: zPointStyle.optional(),\n lineStyle: zLineStyle.optional(),\n areaStyle: zAreaStyle.optional(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).optional(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).optional(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).optional(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).optional(),\n locale: zLocale.optional(),\n})\n","import type { Locale } from '../../i18n'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zAreaStyle,\n zBackgroundColor,\n zColor,\n zCrosshairLine,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zLineStyle,\n zMeasureTree,\n zPointStyle,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\nimport type {\n AnnotationArea,\n AnnotationHorizontalLine,\n AnnotationPoint,\n AnnotationVerticalLine,\n AreaStyle,\n BackgroundColor,\n Color,\n Dataset,\n Dimensions,\n Label,\n Legend,\n LineStyle,\n PointStyle,\n Theme,\n Tooltip,\n XBandAxis,\n YLinearAxis,\n CrosshairLine,\n MeasureTree,\n SortAxis,\n SortLegend,\n} from '../../properties'\nimport { z } from 'zod'\n\n/**\n * 百分比面积图类型定义\n * @description 百分比面积图,适用于展示多类别占比随时间变化的趋势,Y轴以百分比形式展示占比关系\n * 适用场景:\n * - 时间序列的构成变化分析\n * - 多类别占比趋势对比\n * - 累积占比与单一类别占比同时展示\n * 数据要求:\n * - 至少1个指标字段(度量)\n * - 第一个维度会放至Y轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * - 所有指标会自动合并为一个指标\n * 默认开启的功能:\n * - 默认开启图例、坐标轴、百分比标签、提示信息、占比计算\n */\nexport interface AreaPercent {\n /**\n * 百分比面积图\n * @description 百分比面积图,以百分比形式展示多类别占比随某个维度的变化\n * @type {'areaPercent'}\n * @example 'areaPercent'\n */\n chartType: 'areaPercent'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 百分比面积图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{month:'1月', category:'A', value:30}, {month:'1月', category:'B', value:70}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 第一个维度被映射到X轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * @type {Dimensions}\n * @example [{ id: 'month', alias: '月份' }, { id: 'year', alias: '年份' }]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 百分比面积图的指标会自动合并为一个指标, 映射到Y轴, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {DimensionTree}\n * @example [{id: 'value', alias: '数值占比', format: 'percent'}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * x轴\n * @description 类目轴, x轴配置, 用于定义图表的x轴, 包括x轴的位置, 格式, 样式等.\n */\n xAxis?: XBandAxis\n\n /**\n * y轴\n * @description 数值轴, y轴配置, 用于定义图表的y轴, 包括y轴的位置, 格式, 样式等.\n */\n yAxis?: YLinearAxis\n\n /**\n * 垂直提示线\n * @description 鼠标移动到图表上时, 显示的垂直提示线\n */\n crosshairLine?: CrosshairLine\n\n /**\n * @description X轴排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortAxis: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortAxis: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortAxis?: SortAxis\n /**\n * @description 图例排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortLegend: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortLegend: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortLegend?: SortLegend\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 点图元样式\n * @description 点图元样式配置, 用于定义图表的点图元样式, 包括点图元的颜色, 边框等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n pointStyle?: PointStyle | PointStyle[]\n\n /**\n * 线图元样式\n * @description 线图元样式配置, 用于定义图表的线图元样式, 包括线图元的颜色, 透明度, 曲线等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n lineStyle?: LineStyle | LineStyle[]\n\n /**\n * 面积图元样式\n * @description 面积图元样式配置, 用于定义图表的面积图元样式, 包括面积图元的颜色, 透明度, 边框等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n areaStyle?: AreaStyle | AreaStyle[]\n\n /**\n * 标注点\n * @description 标注点配置, 根据选择的数据, 定义图表的标注点, 包括标注点的位置, 格式, 样式等.\n */\n annotationPoint?: AnnotationPoint | AnnotationPoint[]\n\n /**\n * 标注垂直线\n * @description 标注垂直线配置, 根据选择的数据, 定义图表的标注垂直线, 包括标注垂直线的位置, 样式等.\n */\n annotationVerticalLine?: AnnotationVerticalLine | AnnotationVerticalLine[]\n\n /**\n * 标注水平线\n * @description 标注水平线配置, 根据选择的数据, 定义图表的标注水平线, 包括标注水平线的位置, 样式等.\n */\n annotationHorizontalLine?: AnnotationHorizontalLine | AnnotationHorizontalLine[]\n\n /**\n * 标注区域\n * @description 标注区域配置, 根据选择的数据, 定义图表的标注区域, 包括标注区域的位置, 样式等.\n */\n annotationArea?: AnnotationArea | AnnotationArea[]\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zAreaPercent = z.object({\n chartType: z.literal('areaPercent'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n xAxis: zXBandAxis.optional(),\n yAxis: zYLinearAxis.optional(),\n crosshairLine: zCrosshairLine.optional(),\n theme: zTheme.optional(),\n pointStyle: zPointStyle.optional(),\n lineStyle: zLineStyle.optional(),\n areaStyle: zAreaStyle.optional(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).optional(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).optional(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).optional(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).optional(),\n locale: zLocale.optional(),\n})\n","import type { Locale } from '../../i18n'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zAreaStyle,\n zBackgroundColor,\n zCrosshairLine,\n zDataset,\n zDimensions,\n zLabel,\n zLineStyle,\n zMeasureTree,\n zPointStyle,\n zTheme,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\nimport type {\n AnnotationArea,\n AnnotationHorizontalLine,\n AnnotationPoint,\n AnnotationVerticalLine,\n AreaStyle,\n BackgroundColor,\n Dataset,\n Dimensions,\n Label,\n LineStyle,\n PointStyle,\n Theme,\n XBandAxis,\n YLinearAxis,\n CrosshairLine,\n SortAxis,\n MeasureTree,\n} from '../../properties'\nimport { z } from 'zod'\n\n/**\n * 区间面积图类型定义\n * @description 区间面积图与面积图的区别在于, 区间面积图的Y轴数据是一个区间, 而面积图的Y轴数据是一个数值. 区间面积图适用于展示数据的变化范围\n * 适用场景:\n * - 展示单一数据系列的趋势变化\n * - 强调总量随时间的累积效果\n * - 对比多个数据系列的总量差异\n * 数据要求:\n * - 至少1个指标字段(度量)\n * - 第一个维度字段映射到X轴,其余维度字段会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * - 所有指标会自动合并为一个指标\n * 默认开启的功能:\n * - 模块开启堆叠\n * - 默认开启图例、坐标轴、区域填充、数据标签、提示信息\n */\nexport interface AreaRange {\n /**\n * 面积图\n * @description 面积图,展示数据趋势及累积关系的图表类型\n * @type {'area'}\n * @example 'area'\n */\n chartType: 'areaRange'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 面积图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{month:'1月', value:100}, {month:'2月', value:150}, {month:'3月', value:120}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 第一个维度被映射到X轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * @type {Dimensions}\n * @example [{ id: 'month', alias: '月份' }, { id: 'year', alias: '年份' }]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 区间面积图需要2个指标, 第一个指标映射到Y轴的下边界, 第二个指标映射到Y轴的上边界, 第二个之后的指标会被忽略.\n * @type {DimensionTree}\n * @example [{id: 'value', alias: '数值'}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * x轴\n * @description 类目轴, x轴配置, 用于定义图表的x轴, 包括x轴的位置, 格式, 样式等.\n */\n xAxis?: XBandAxis\n\n /**\n * y轴\n * @description 数值轴, y轴配置, 用于定义图表的y轴, 包括y轴的位置, 格式, 样式等.\n */\n yAxis?: YLinearAxis\n\n /**\n * 垂直提示线\n * @description 鼠标移动到图表上时, 显示的垂直提示线\n */\n crosshairLine?: CrosshairLine\n\n /**\n * @description X轴排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortAxis: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortAxis: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortAxis?: SortAxis\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 点图元样式\n * @description 点图元样式配置, 用于定义图表的点图元样式, 包括点图元的颜色, 边框等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n pointStyle?: PointStyle | PointStyle[]\n\n /**\n * 线图元样式\n * @description 线图元样式配置, 用于定义图表的线图元样式, 包括线图元的颜色, 透明度, 曲线等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n lineStyle?: LineStyle | LineStyle[]\n\n /**\n * 面积图元样式\n * @description 面积图元样式配置, 用于定义图表的面积图元样式, 包括面积图元的颜色, 透明度, 边框等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n areaStyle?: AreaStyle | AreaStyle[]\n\n /**\n * 标注点\n * @description 标注点配置, 根据选择的数据, 定义图表的标注点, 包括标注点的位置, 格式, 样式等.\n */\n annotationPoint?: AnnotationPoint | AnnotationPoint[]\n\n /**\n * 标注垂直线\n * @description 标注垂直线配置, 根据选择的数据, 定义图表的标注垂直线, 包括标注垂直线的位置, 样式等.\n */\n annotationVerticalLine?: AnnotationVerticalLine | AnnotationVerticalLine[]\n\n /**\n * 标注水平线\n * @description 标注水平线配置, 根据选择的数据, 定义图表的标注水平线, 包括标注水平线的位置, 样式等.\n */\n annotationHorizontalLine?: AnnotationHorizontalLine | AnnotationHorizontalLine[]\n\n /**\n * 标注区域\n * @description 标注区域配置, 根据选择的数据, 定义图表的标注区域, 包括标注区域的位置, 样式等.\n */\n annotationArea?: AnnotationArea | AnnotationArea[]\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zAreaRange = z.object({\n chartType: z.literal('areaRange'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n label: zLabel.optional(),\n xAxis: zXBandAxis.optional(),\n yAxis: zYLinearAxis.optional(),\n crosshairLine: zCrosshairLine.optional(),\n theme: zTheme.optional(),\n pointStyle: zPointStyle.optional(),\n lineStyle: zLineStyle.optional(),\n areaStyle: zAreaStyle.optional(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).optional(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).optional(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).optional(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).optional(),\n locale: zLocale.optional(),\n})\n","import type { Locale } from '../../i18n'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zColor,\n zCrosshairLine,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zPointStyle,\n zTheme,\n zTooltip,\n zXLinearAxis,\n zYLinearAxis,\n} from '../../properties'\nimport type {\n AnnotationArea,\n AnnotationHorizontalLine,\n AnnotationPoint,\n AnnotationVerticalLine,\n BackgroundColor,\n Color,\n Dataset,\n Dimensions,\n Label,\n Legend,\n PointStyle,\n Theme,\n Tooltip,\n CrosshairLine,\n YLinearAxis,\n XLinearAxis,\n MeasureTree,\n} from '../../properties'\nimport { z } from 'zod'\n\n/**\n * 散点图类型定义\n * @description 散点图,适用于展示数据的分布情况,通过点的位置表示数据的数值\n * 适用场景:\n * - 分析数据的分布特征, 如数据的中心趋势, 分布范围, 异常值等\n * 数据要求:\n * - 至少2个数值字段(度量)\n * - 第一个指标字段会放至X轴, 其余指标会进行合并, 映射至Y轴\n * - 指标名称和维度名称会合并, 作为图例项展示\n * 默认开启的功能:\n * - 默认开启图例、坐标轴、数据点标记、提示信息、趋势线\n */\nexport interface Scatter {\n /**\n * 散点图\n * @description 散点图,适用于展示数据的分布情况,通过点的位置表示数据的数值\n * @type {'scatter'}\n * @example 'scatter'\n */\n chartType: 'scatter'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 折线图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{month:'1月', value:100}, {month:'2月', value:150}, {month:'3月', value:120}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 散点图的第一个维度被映射到X轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示\n * @type {Dimensions}\n * @example [{id: \"month\", alias: \"月份\"}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 散点图的第一个指标字段会放至X轴, 其余指标会进行合并, 映射至Y轴\n * @type {DimensionTree}\n * @example [{id: \"value\", alias: \"数值\"}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * x轴\n * @description 数值轴, x轴配置, 用于定义图表的x轴, 包括x轴的位置, 格式, 样式等.\n */\n xAxis?: XLinearAxis\n\n /**\n * y轴\n * @description 数值轴, y轴配置, 用于定义图表的y轴, 包括y轴的位置, 格式, 样式等.\n */\n yAxis?: YLinearAxis\n\n /**\n * 垂直提示线\n * @description 鼠标移动到图表上时, 显示的垂直提示线\n */\n crosshairLine?: CrosshairLine\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 点图元样式\n * @description 点图元样式配置, 用于定义图表的点图元样式, 包括点图元的颜色, 边框等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n pointStyle?: PointStyle | PointStyle[]\n\n /**\n * 标注点\n * @description 标注点配置, 根据选择的数据, 定义图表的标注点, 包括标注点的位置, 格式, 样式等.\n */\n annotationPoint?: AnnotationPoint | AnnotationPoint[]\n\n /**\n * 标注垂直线\n * @description 标注垂直线配置, 根据选择的数据, 定义图表的标注垂直线, 包括标注垂直线的位置, 样式等.\n */\n annotationVerticalLine?: AnnotationVerticalLine | AnnotationVerticalLine[]\n\n /**\n * 标注水平线\n * @description 标注水平线配置, 根据选择的数据, 定义图表的标注水平线, 包括标注水平线的位置, 样式等.\n */\n annotationHorizontalLine?: AnnotationHorizontalLine | AnnotationHorizontalLine[]\n\n /**\n * 标注区域\n * @description 标注区域配置, 根据选择的数据, 定义图表的标注区域, 包括标注区域的位置, 样式等.\n */\n annotationArea?: AnnotationArea | AnnotationArea[]\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zScatter = z.object({\n chartType: z.literal('scatter'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n xAxis: zXLinearAxis.optional(),\n yAxis: zYLinearAxis.optional(),\n crosshairLine: zCrosshairLine.optional(),\n theme: zTheme.optional(),\n pointStyle: zPointStyle.optional(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).optional(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).optional(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).optional(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).optional(),\n locale: zLocale.optional(),\n})\n","import { z } from 'zod'\nimport { zLocale, type Locale } from '../../i18n'\nimport type {\n MeasureTree} from '../../properties';\nimport {\n zBackgroundColor,\n zColor,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zTheme,\n zTooltip,\n type BackgroundColor,\n type Color,\n type Dataset,\n type Dimensions,\n type Label,\n type Legend,\n type Theme,\n type Tooltip,\n} from '../../properties'\n\n/**\n * 堆叠玫瑰图类型定义\n * @description 堆叠玫瑰图,适用于多维度数据对比场景,通过极坐标系下的扇形弧度和半径展示数据大小\n * 适用场景:\n * - 多维度数据的分布对比\n * - 周期性数据的强弱比较\n * - 分类数据的数值与占比同时展示\n * 数据要求:\n * - 至少1个数值字段(度量)\n * - 第一个维度会放至角度轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示\n * - 所有指标会自动合并为一个指标\n * 默认开启的功能:\n * - 默认开启图例、极坐标系、数据标签、提示信息、数值缩放\n */\nexport interface Rose {\n /**\n * 堆叠玫瑰图\n * @description 堆叠玫瑰图,通过极坐标系展示多维度数据对比关系\n * @type {'rose'}\n * @example 'rose'\n */\n chartType: 'rose'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 玫瑰图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{month:'1月', value:100}, {month:'2月', value:150}, {month:'3月', value:120}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 玫瑰图的第一个维度被映射到角度轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * @type {Dimensions}\n * @example [{id: 'category', alias: '类别'}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 玫瑰图的指标会自动合并为一个指标, 映射到半径轴, 存在多个指标时, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {Measures}\n * @example [{id: 'value', alias: '数值'}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zRose = z.object({\n chartType: z.literal('rose'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n theme: zTheme.optional(),\n locale: zLocale.optional(),\n})\n","import { z } from 'zod'\nimport { zLocale, type Locale } from '../../i18n'\nimport type {\n MeasureTree} from '../../properties';\nimport {\n zBackgroundColor,\n zColor,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zTheme,\n zTooltip,\n type BackgroundColor,\n type Color,\n type Dataset,\n type Dimensions,\n type Label,\n type Legend,\n type Theme,\n type Tooltip,\n} from '../../properties'\n\n/**\n * 分组玫瑰图类型定义\n * @description 分组玫瑰图,适用于多维度数据对比场景,通过极坐标系下的扇形弧度和半径展示数据大小\n * 适用场景:\n * - 多维度数据的分布对比\n * - 周期性数据的强弱比较\n * - 分类数据的数值与占比同时展示\n * 数据要求:\n * - 至少1个数值字段(度量)\n * - 第一个维度会放至角度轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示\n * - 所有指标会自动合并为一个指标\n * 默认开启的功能:\n * - 默认开启图例、极坐标系、数据标签、提示信息、数值缩放\n */\nexport interface RoseParallel {\n /**\n * 分组玫瑰图\n * @description 分组玫瑰图,通过极坐标系展示多维度数据对比关系\n * @type {'roseParallel'}\n * @example 'roseParallel'\n */\n chartType: 'roseParallel'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 玫瑰图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{month:'1月', value:100}, {month:'2月', value:150}, {month:'3月', value:120}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 玫瑰图的第一个维度被映射到角度轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * @type {Dimensions}\n * @example [{id: 'category', alias: '类别'}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 玫瑰图的指标会自动合并为一个指标, 映射到半径轴, 存在多个指标时, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {MeasureTree}\n * @example [{id: 'value', alias: '数值'}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zRoseParallel = z.object({\n chartType: z.literal('roseParallel'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n theme: zTheme.optional(),\n locale: zLocale.optional(),\n})\n","import { z } from 'zod'\nimport type { Locale } from '../../i18n'\nimport { zLocale } from '../../i18n'\nimport {\n zBackgroundColor,\n zColor,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zTheme,\n zTooltip,\n} from '../../properties'\nimport type {\n BackgroundColor,\n Color,\n Dataset,\n Dimensions,\n Label,\n Legend,\n MeasureTree,\n Theme,\n Tooltip,\n} from '../../properties'\n\n/**\n * 饼图类型定义\n * @description 饼图,适用于展示单一维度数据的占比关系,通过扇形面积大小表示各类别占比\n * 适用场景:\n * - 展示分类数据的占比分布\n * - 强调数据的整体与部分关系\n * - 类别数量较少(建议不超过6个)的占比分析\n * 数据要求:\n * - 至少1个数值字段(度量)\n * - 所有维度会与指标名称(存在多个指标时)合并成一个维度, 作为图例项展示\n * - 所有指标会自动合并为一个指标\n * 默认开启的功能:\n * - 默认开启图例、数据标签、提示信息、占比计算\n */\nexport interface Pie {\n /**\n * 饼图\n * @description 饼图,展示单一维度数据的占比关系\n * @type {'pie'}\n * @example 'pie'\n */\n chartType: 'pie'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 饼图的数据最终会被转换为1个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{category:'A', value:30}, {category:'B', value:70}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 饼图的所有维度会与指标名称(存在多个指标时)合并成一个维度, 映射到角度, 并作为图例项展示\n * @type {Dimensions}\n * @example [{id: 'category', alias: '类别'}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 饼图的所有指标会自动合并为一个指标, 映射到半径轴, 存在多个指标时, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {DimensionTree}\n * @example [{id: 'value', alias: '数值占比', format: 'percent'}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zPie = z.object({\n chartType: z.literal('pie'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n theme: zTheme.optional(),\n locale: zLocale.optional(),\n})\n","import { z } from 'zod'\nimport { zLocale, type Locale } from '../../i18n'\nimport type {\n BackgroundColor,\n Color,\n Dataset,\n Dimensions,\n Label,\n Legend,\n MeasureTree,\n Theme,\n Tooltip,\n} from '../../properties'\nimport {\n zBackgroundColor,\n zColor,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zTheme,\n zTooltip,\n} from '../../properties'\n/**\n * 环形图类型定义\n * @description 环形图,适用于展示单一维度数据的占比关系,中心留有空白区域可展示汇总信息\n * 适用场景:\n * - 需要同时展示整体数据和各部分占比\n * - 强调数据的整体与部分关系\n * - 中心区域需要展示关键指标或标题\n * 数据要求:\n * - 至少1个指标字段(度量)\n * - 所有维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * - 所有指标会自动合并为一个指标\n * 默认开启的功能:\n * - 默认开启图例、数据标签、提示信息、占比计算、中心文本\n */\nexport interface Donut {\n /**\n * 环形图\n * @description 环形图,中心留有空白区域的饼图变体\n * @type {'donut'}\n * @example 'donut'\n */\n chartType: 'donut'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 环形图的数据最终会被转换为1个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{category:'A', value:30}, {category:'B', value:70}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 环形图的所有维度会与指标名称(存在多个指标时)合并成1个维度, 映射到饼图的角度, 并作为图例项展示.\n * @type {Dimensions}\n * @example [{id: 'category', alias: '类别'}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 环形图的所有指标会自动合并为一个指标, 映射到饼图的半径, 存在多个指标时, 指标名称会与其余维度合并, 并作为图例项展示.\n * @type {DimensionTree}\n * @example [{id: 'value', alias: '数值占比', format: 'percent'}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zDonut = z.object({\n chartType: z.literal('donut'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n theme: zTheme.optional(),\n locale: zLocale.optional(),\n})\n","import { z } from 'zod'\nimport { zLocale, type Locale } from '../../i18n'\nimport type {\n MeasureTree} from '../../properties';\nimport {\n zBackgroundColor,\n zColor,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zTheme,\n zTooltip,\n type BackgroundColor,\n type Color,\n type Dataset,\n type Dimensions,\n type Label,\n type Legend,\n type Theme,\n type Tooltip,\n} from '../../properties'\n\n/**\n * 雷达图类型定义\n * @description 雷达图,适用于多维度数据的对比分析,通过多轴坐标系展示各维度的数值分布\n * 适用场景:\n * - 多维度数据的综合表现对比\n * - 多个对象在多个指标上的性能评估\n * - 分类数据的多维度特征展示\n * 数据要求:\n * - 至少1个数值字段(度量)\n * - 第一个维度作为雷达图的各个维度轴,其他维度作为不同的系列进行对比\n * - 支持多个指标分别作为不同的系列展示\n * 默认开启的功能:\n * - 默认开启图例、雷达坐标系、数据标签、提示信息、数值缩放\n */\nexport interface Radar {\n /**\n * 雷达图\n * @description 雷达图,通过多轴坐标系展示多维度数据对比关系\n * @type {'radar'}\n * @example 'radar'\n */\n chartType: 'radar'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 玫瑰图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{month:'1月', value:100}, {month:'2月', value:150}, {month:'3月', value:120}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 雷达图的第一个维度被映射到角度轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * @type {Dimensions}\n * @example [{id: 'category', alias: '类别'}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 雷达图的指标会自动合并为一个指标, 映射到半径轴, 存在多个指标时, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {MeasureTree}\n * @example [{id: 'value', alias: '数值'}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zRadar = z.object({\n chartType: z.literal('radar'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n theme: zTheme.optional(),\n locale: zLocale.optional(),\n})\n","import { z } from 'zod'\nimport type { Locale } from '../../i18n'\nimport { zLocale } from '../../i18n'\nimport {\n zBackgroundColor,\n zColorLegend,\n zDataset,\n zDimensions,\n zLabel,\n zLinearColor,\n zMeasureTree,\n zTheme,\n zTooltip,\n} from '../../properties'\nimport type {\n BackgroundColor,\n ColorLegend,\n Dataset,\n Dimensions,\n Label,\n LinearColor,\n MeasureTree,\n Theme,\n Tooltip,\n} from '../../properties'\n\n/**\n * 漏斗图\n * @description 漏斗图,用于展示单一维度数据的占比关系\n * 适用场景:\n * 漏斗图适用场景:\n * - 适合用来分析具有多个连续、规范化步骤的流程,并清晰地展示在每个环节的数据流失或转化情况\n * 数据要求:\n * - 至少1个数值字段(指标)\n * - 所有维度会与指标名称(存在多个指标时)合并成一个维度, 作为图例项展示\n * - 所有指标会自动合并为一个指标\n * 默认开启的功能:\n * - 默认开启图例、数据标签、提示信息、占比计算\n */\nexport interface Funnel {\n /**\n * 漏斗图\n * @description 漏斗图,展示单一维度数据的占比关系\n * @type {'funnel'}\n * @example 'funnel'\n */\n chartType: 'funnel'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 饼图的数据最终会被转换为1个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{category:'A', value:30}, {category:'B', value:70}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 漏斗图的所有维度会与指标名称(存在多个指标时)合并成一个维度,并作为图例项展示\n * @type {Dimensions}\n * @example [{id: 'category', alias: '类别'}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 漏斗图的所有指标会自动合并为一个指标, 存在多个指标时, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {DimensionTree}\n * @example [{id: 'value', alias: '数值占比', format: 'percent'}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * @description 线性渐变颜色配置, 用于定义图表的颜色方案\n */\n color?: LinearColor\n\n /**\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * @description 颜色图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: ColorLegend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zFunnel = z.object({\n chartType: z.literal('funnel'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zLinearColor.optional(),\n label: zLabel.optional(),\n legend: zColorLegend.optional(),\n tooltip: zTooltip.optional(),\n theme: zTheme.optional(),\n locale: zLocale.optional(),\n})\n","import { z } from 'zod'\nimport { zLocale, type Locale } from '../../i18n'\nimport type {\n ColorLegend,\n LinearColor,\n MeasureTree} from '../../properties';\nimport {\n zBackgroundColor,\n zColorLegend,\n zDataset,\n zDimensions,\n zLabel,\n zLinearColor,\n zMeasureTree,\n zTheme,\n zTooltip,\n type BackgroundColor,\n type Dataset,\n type Dimensions,\n type Label,\n type Theme,\n type Tooltip,\n} from '../../properties'\n\n/**\n * 热力图类型定义\n * @description 热力图,通过二维矩阵的颜色深浅展示数据的分布和强弱关系\n * 适用场景:\n * - 大规模二维数据的密度和强度展示\n * - 分类与数值的关联分析\n * - 时间序列与类别的交叉对比\n * 数据要求:\n * - 至少2个维度字段,用于确定热力图的行和列\n * - 至少1个数值字段(度量),用于映射颜色深浅\n * - 支持多个指标时,通常选择一个指标进行颜色映射\n * 默认开启的功能:\n * - 默认开启图例、坐标轴、数据标签、提示信息、数值缩放\n */\nexport interface Heatmap {\n /**\n * 热力图\n * @description 热力图,通过二维矩阵的颜色深浅展示数据的分布和强弱关系\n * @type {'heatmap'}\n * @example 'heatmap'\n */\n chartType: 'heatmap'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 热力图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{month:'1月', value:100}, {month:'2月', value:150}, {month:'3月', value:120}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 热力图的第一个维度被映射到角度轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * @type {Dimensions}\n * @example [{id: 'category', alias: '类别'}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 热力图的指标会自动合并为一个指标, 映射到半径轴, 存在多个指标时, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {MeasureTree}\n * @example [{id: 'value', alias: '数值'}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: LinearColor\n\n /**\n * @description 热力图标签配置, 用于定义图表的数据标签, 自动开启标签反色, 确保标签可读性.\n */\n label?: Label\n\n /**\n * 图例\n * @description 热力图的颜色图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: ColorLegend\n\n /**\n * 提示信息\n * @description 热力图的提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zHeatmap = z.object({\n chartType: z.literal('heatmap'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zLinearColor.optional(),\n label: zLabel.optional(),\n legend: zColorLegend.optional(),\n tooltip: zTooltip.optional(),\n theme: zTheme.optional(),\n locale: zLocale.optional(),\n})\n","import { z } from 'zod'\n\nimport { zBar, type Bar } from './chartType/bar'\nimport { zBarParallel, type BarParallel } from './chartType/barParallel'\nimport { zColumn, type Column } from './chartType/column'\nimport { zColumnParallel, type ColumnParallel } from './chartType/columnParallel'\nimport { zColumnPercent, type ColumnPercent } from './chartType/columnPercent'\nimport { zLine, type Line } from './chartType/line'\nimport type { Table } from './chartType/table'\nimport { zRose, type Rose } from './chartType/rose'\nimport { zBarPercent, type BarPercent } from './chartType/barPercent'\nimport type { PivotTable } from './chartType/pivotTable'\nimport { zPie, type Pie } from './chartType/pie'\nimport { zDonut, type Donut } from './chartType/donut'\nimport type { DualAxis } from './chartType/dualAxis'\nimport { zArea, type Area } from './chartType/area'\nimport { zAreaPercent, type AreaPercent } from './chartType/areaPercent'\nimport type { AreaRange, Heatmap, Radar } from './chartType'\nimport {\n zAreaRange,\n zFunnel,\n zHeatmap,\n zPivotTable,\n zRadar,\n zRoseParallel,\n zScatter,\n zTable,\n type Funnel,\n type RoseParallel,\n type Scatter,\n} from './chartType'\n\nexport type VSeed =\n | Table\n | PivotTable\n // cartesian\n | Line\n | Column\n | ColumnParallel\n | ColumnPercent\n | Bar\n | BarParallel\n | BarPercent\n | Area\n | AreaPercent\n | AreaRange\n | Scatter\n | DualAxis\n\n // polar\n | Rose\n | RoseParallel\n | Pie\n | Donut\n | Radar\n\n // other\n | Funnel\n | Heatmap\n\nexport const zVSeed = z.discriminatedUnion('chartType', [\n zTable,\n zPivotTable,\n // cartesian\n zLine,\n zColumn,\n zColumnParallel,\n zColumnPercent,\n zBar,\n zBarParallel,\n zBarPercent,\n zArea,\n zAreaPercent,\n zAreaRange,\n zScatter,\n // zDualAxis,\n // polar\n zPie,\n zDonut,\n zRose,\n zRoseParallel,\n zRadar,\n // other\n zFunnel,\n zHeatmap,\n])\n","import { z } from 'zod'\nimport { zChartType } from './properties/chartType'\nimport { zDataset } from './properties/dataset'\nimport { zDimensionTree } from './properties/dimensions'\nimport { zMeasureTree } from './properties/measures'\nimport { zEncoding } from './properties/encoding/encoding'\nimport { zDatasetReshapeInfo } from './properties/datasetReshapeInfo/datasetReshapeInfo'\nimport { zTheme, zCustomThemeConfig } from './properties/theme'\nimport { zConfig } from './properties/config'\nimport { zAnalysis, zAnnotation, zMarkStyle } from './properties'\nimport { zLocale } from './i18n'\n\nexport const zAdvancedVSeed = z.object({\n chartType: zChartType,\n dataset: zDataset,\n datasetReshapeInfo: zDatasetReshapeInfo,\n dimensions: zDimensionTree,\n measures: zMeasureTree,\n encoding: zEncoding,\n config: zConfig,\n analysis: zAnalysis,\n theme: zTheme,\n markStyle: zMarkStyle,\n customTheme: zCustomThemeConfig,\n annotation: zAnnotation,\n locale: zLocale,\n})\n\nexport type AdvancedVSeed = z.infer<typeof zAdvancedVSeed>\n"],"names":["__webpack_require__","module","getter","definition","key","Object","obj","prop","Symbol","initAdvancedVSeed","advancedVSeed","context","vseed","chartType","locale","execPipeline","pipeline","initialValue","result","prev","cur","isTable","isPivotTable","isVTable","isVChart","isPivotChart","measures","dimensions","hasRowOrColumnDimension","dimension","hasMeasureGroup","measure","Intl","translateMap","value","segments","values","text","segment","index","translatedText","isNullish","console","intl","i18n","createNumFormatter","format","type","ratio","symbol","thousandSeparator","prefix","suffix","fractionDigits","significantDigits","roundingMode","roundingPriority","numFormatterOptions","isNumber","numFormatter","num","Number","typeSymbol","numStr","parts","autoNumFormatter","String","createFormatter","autoFormatter","preorderTraverse","tree","callback","stack","node","stop","children","i","child","findMeasureById","id","findFirstMeasure","findAllMeasures","findDimensionById","findFirstDimension","findAllDimensions","autoMeasures","dataset","Error","autoMeasureGroup","top100dataset","sample","item","undefined","newMeasures","currentGroup","createEmptyMeasureGroup","measureGroups","autoDimensions","dim","autoMeasuresBy2M1Group","auto2M1Group","allMeasures","groups","singleMeasures","group","FoldMeasureName","FoldMeasureValue","FoldMeasureId","UnfoldDimensionGroup","UnfoldDimensionGroupId","Separator","ORIGINAL_DATA","unfoldDimensions","unfoldStartIndex","unfoldGroupName","unfoldGroupId","foldMeasureId","dimensionsSeparator","dimensionsToBeUnfolded","unfoldInfo","colorItems","colorMap","datum","colorName","generateDimGroupName","colorId","unique","dimensionsToBeGrouped","foldMeasures","measureId","measureName","measureValue","foldInfo","Array","ids","d","j","omit","alias","emptyReshapeResult","dataReshapeFor2D1M","options","foldMeasureName","foldMeasureValue","unfoldDimensionGroup","unfoldDimensionGroupId","foldedDataset","finalDataset","onlyOneMeasure","onlyOneDimension","dims","dataReshapeFor1D1M","dataReshapeFor1D2M","dataReshapeFor1D","unfoldZeroDimensions","dataReshapeFor2D1M0Name","reshapeTo2D1M","newDatasets","reshapeTo2D1M0Name","reshapeTo1D1M","reshapeTo1D2M","reshapeTo1D","pivotReshapeTo2D1M","commonDimensions","datasetReshapeInfo","measureGroup","groupId","newSubDataset","reshapeInfo","pivotReshapeTo2D1M0Name","pivotReshapeTo1D1M","pivotReshapeTo1D2M","pivotReshapeTo1D","encodingXY","xDimension","isZeroDimension","encoding","x","y","color","encodingYX","yDimension","encodingYY","firstMeasure","encodingXYY","m1","m2","encodingRose","angleDimension","is1D1M","radius","angle","encodingPie","encodingAR","encodingFunnel","size","lineConfig","config","pick","columnConfig","pieConfig","areaConfig","areaPercentConfig","scatterConfig","barConfig","barParallelConfig","barPercentConfig","columnParallelConfig","columnPercentConfig","donutConfig","roseConfig","roseParallelConfig","funnelConfig","heatmapConfig","radarConfig","theme","customTheme","chartConfigTheme","chartConfig","mergedConfig","mergeDeep","clone","chartCustomTheme","pivotAdapter","pivotPipeline","usePivotChart","markStyle","annotation","sortXBandAxis","sortAxis","xField","axisOrderResult","calcOrder","sortYBandAxis","yField","sortLegend","groupField","colorIdMap","nameMap","pre","orderRes","itemNameOrId","order","orderBy","res","sort","a","b","aValue","bValue","lineAdvancedPipeline","barAdvancedPipeline","barParallelAdvancedPipeline","barPercentAdvancedPipeline","columnAdvancedPipeline","columnParallelAdvancedPipeline","columnPercentAdvancedPipeline","areaAdvancedPipeline","areaPercentAdvancedPipeline","areaRangeAdvancedPipeline","pieAdvancedPipeline","donutAdvancedPipeline","roseAdvancedPipeline","roseParallelAdvancedPipeline","funnelAdvancedPipeline","scatterAdvancedPipeline","encodingMatrix","heatmapAdvancedPipeline","radarAdvancedPipeline","autoPivotDimensions","newDimensions","autoPivotMeasures","records","pivotTableAdvancedPipeline","tableAdvancedPipeline","datasetYX","spec","analysis","orderMapping","fields","datasetXY","datasetPivot","initColumn","initBar","initBarParallel","initArea","initAreaRange","initAreaRangeLine1","initAreaRangeLine2","initLine","initColumnParallel","initPie","showStroke","initDonut","initRose","hasNegativeValue","initRoseParallel","initScatter","initRadar","initFunnel","initPivot","xBand","visible","label","tick","title","grid","line","labelAutoHide","labelAutoHideGap","labelAutoLimit","labelAutoLimitLength","labelAutoRotate","labelAutoRotateAngleRange","sampling","bandAxis","ANNOTATION_Z_INDEX","LINEAR_AXIS_INNER_OFFSET_TOP","xLinear","zero","nice","inverse","max","min","log","logBase","linearAxis","yBand","yLinear","radiusAxis","is0D","is1M1D","showAxis","angleAxis","radarAngleAxis","radarRadiusAxis","percent","stackInverse","stackCornerRadius","backgroundColor","baseConfig","tooltip","enable","groupName","autoFormat","isEmpty","formatter","formatValue","labelColorInversion","discreteLegend","legend","position","labelFontColor","labelFontSize","labelFontWeight","maxSize","border","shapeType","orient","legendPosition","items","pivotDiscreteLegend","colorScheme","legends","colorLegend","colorMapping","mappingList","idMap","_","v","linearColor","pivotIndicators","chartPipeline","indicators","newEncoding","newDatasetReshapeInfo","newContext","chartSpec","pivotIndicatorsAsRow","pivotIndicatorsAsCol","pivotGridStyle","transparent","hoverBackgroundColor","pivotColumnDimensions","columnDimensions","columns","pivotRowDimensions","rowDimensions","rows","selector","vchartDatum","vchartKeys","k","selectors","isValueSelector","isMeasureSelector","op","selectorValueArr","isDimensionSelector","isPartialDatumSelector","barStyle","barStyles","customMap","style","barBorderColor","barBorderStyle","barBorderWidth","barColor","barColorOpacity","barRadius","lineDash","pointStyle","pointStyles","pointBorderColor","pointBorderStyle","pointBorderWidth","pointColor","pointColorOpacity","pointSize","pointStateDimensionHover","point","pointStateHover","field","lineStyle","lineStyles","lineGroups","groupBy","lineColor","lineColorOpacity","lineSmooth","lineWidth","dashSegment","dashGap","curveType","lineData","areaStyle","areaStyles","areaColor","areaColorOpacity","isSubset","sub","annotationPoint","annotationPointList","markPoint","selectorPoint","textColor","textFontSize","textFontWeight","textAlign","textBaseline","backgroundBorderColor","backgroundBorderRadius","backgroundBorderWidth","backgroundPadding","backgroundVisible","offsetX","offsetY","selectedData","data","targetDatum","annotationVerticalLine","annotationVerticalLineList","positionMap","markLine","xValue","textPosition","lineVisible","generateOneMarkLine","isArray","isString","xValueArr","specMarkLine","newMarkLine","annotationHorizontalLine","yValue","yValueArr","annotationArea","annotationAreaList","markArea","outerPadding","areaBorderColor","areaBorderRadius","areaBorderWidth","positionData","xyList","yAxisHelper","xAxisHelper","yScale","minX","Math","maxX","minY","maxY","xScale","annotationAreaBand","depth","xBandWidth","yBandWidth","verticalCrosshairLine","labelColor","labelVisible","labelBackgroundColor","crosshair","verticalCrosshairRect","rectColor","horizontalCrosshairRect","horizontalCrosshairLine","series","args","pivotLine","lineSpecPipeline","column","pivotColumn","columnSpecPipeline","columnParallel","pivotColumnParallel","columnParallelSpecPipeline","columnPercent","pivotColumnPercent","columnPercentSpecPipeline","bar","pivotBar","barSpecPipeline","barParallel","pivotBarParallel","barParallelSpecPipeline","barPercent","pivotBarPercent","barPercentSpecPipeline","area","pivotArea","areaSpecPipeline","areaPercent","pivotAreaPercent","areaPercentSpecPipeline","areaRange","pivotAreaRange","areaRangeSpecPipeline","scatter","pivotScatter","scatterSpecPipeline","pie","pivotPie","pieSpecPipeline","donut","pivotDonut","donutSpecPipeline","rose","pivotRose","roseSpecPipeline","roseParallel","pivotRoseParallel","roseParallelSpecPipeline","radar","pivotRadar","radarSpecPipeline","funnel","pivotFunnel","funnelSpecPipeline","initHeatmap","heatmap","pivotHeatmap","heatmapSpecPipeline","initTable","initPivotTable","measureTreeToColumns","eachNode","treeTreeToColumns","dimensionTreeToColumns","groupNode","props","pivotColumns","pivotRows","bodyStyle","themConfig","borderColor","fontColor","fontSize","hoverCellBgColor","hoverInlineColor","headerStyle","rowHeaderStyle","cornerHeaderStyle","frameStyle","selectionStyle","tableSpecPipeline","pivotTableSpecPipeline","buildAdvanced","builder","e","buildSpec","build","getColorItems","getColorIdMap","Builder","advanced","customPipe","themeKey","registerColumn","registerBar","registerLine","registerArea","registerAreaPercent","registerAreaRange","registerBarPercent","registerColumnPercent","registerColumnParallel","registerBarParallel","registerPie","registerDonut","registerRose","registerRoseParallel","registerFunnel","registerScatter","registerTable","registerPivotTable","registerHeatmap","registerRadar","lightTheme","barBandAxis","crosshairLine","crosshairRect","tableConfig","darkTheme","registerCustomTheme","themeConfig","registerLightTheme","registerDarkTheme","registerAll","updateAdvanced","advancedPipe","updateSpec","specPipe","zChartType","z","zDatum","zDataset","zDimension","zDimensionGroup","zDimensions","zDimensionTree","zNumFormat","zMeasure","zMeasureGroup","zMeasures","zMeasureTree","zFoldInfo","zUnfoldInfo","zDatasetReshapeInfo","zEncoding","zXBandAxis","zYBandAxis","zXLinearAxis","zYLinearAxis","zCrosshairLine","zCrosshairRect","zStackCornerRadius","zBackgroundColor","zColor","zLinearColor","zLabel","zLegend","zColorLegend","zTooltip","zTableConfig","zPivotTableConfig","zLineConfig","zColumnConfig","zColumnParallelConfig","zColumnPercentConfig","zBarConfig","zBarParallelConfig","zBarPercentConfig","zAreaConfig","zAreaPercentConfig","zAreaRangeConfig","zDualAxisConfig","zScatterConfig","zRoseConfig","zRoseParallelConfig","zPieConfig","zDonutConfig","zRadarConfig","zFunnelConfig","zHeatmapConfig","zConfig","zAxis","zCustomThemeConfig","zCustomTheme","zTheme","zSelector","zSelectors","zBarStyle","zPointStyle","zLineStyle","zAreaStyle","zMarkStyle","zAnnotationPoint","zAnnotationVerticalLine","zAnnotationHorizontalLine","zAnnotationArea","zAnnotation","zSortAxis","zSortLegend","zAnalysis","zLocale","zTable","zPivotTable","zLine","zColumn","zColumnParallel","zColumnPercent","zBar","zBarParallel","zBarPercent","zArea","zAreaPercent","zAreaRange","zScatter","zRose","zRoseParallel","zPie","zDonut","zRadar","zFunnel","zHeatmap","zVSeed","zAdvancedVSeed"],"mappings":"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A8H,aAAa;QAACnE;KAAc,EAAE;QAACM;KAAmB;IAClDW;IACAuD;IACAO;IACA3B;IACAO;IACAW;IACAC;CACD;ACZM,MAAM8B,uBAAyC;IACpDxP;IACA4E;IACAY;IACA8H,aAAa;QAACjE;KAAmB,EAAE;QAACW;KAAwB;IAC5DI;IACAuD;IACAO;IACAlC;IACAc;IACAW;IACAC;CACD;ACZM,MAAM+B,8BAAgD;IAC3DzP;IACA4E;IACAY;IACA8H,aAAa;QAACjE;KAAmB,EAAE;QAACW;KAAwB;IAC5DI;IACAuD;IACAO;IACAjC;IACAa;IACAW;IACAC;CACD;ACbM,MAAMgC,4BAA8C;IACzD1P;IACA0F;IACAF;IACA8H,aAAa;QAAC9D;KAAY,EAAE;QAACW;KAAiB;IAC9CY;IACA4C;IACA3B;IACAc;IACAW;IACAC;CACD;ACbM,MAAMiC,sBAAwC;IACnD3P;IACA4E;IACAY;IACA8H,aAAa;QAAChE;KAAc,EAAE;QAACW;KAAmB;IAClDsB;IACAQ;IACAe;IACAY;CACD;ACTM,MAAMkC,wBAA0C;IACrD5P;IACA4E;IACAY;IACA8H,aAAa;QAAChE;KAAc,EAAE;QAACW;KAAmB;IAClDsB;IACAiB;IACAM;IACAY;CACD;ACRM,MAAMmC,uBAAyC;IACpD7P;IACA4E;IACAY;IACA8H,aAAa;QAACnE;KAAc,EAAE;QAACM;KAAmB;IAClDyB;IACAuB;IACAK;IACAW;IACAC;CACD;ACVM,MAAMoC,+BAAiD;IAC5D9P;IACA4E;IACAY;IACA8H,aAAa;QAACnE;KAAc,EAAE;QAACM;KAAmB;IAClDyB;IACAwB;IACAI;IACAW;IACAC;CACD;ACXM,MAAMqC,yBAA2C;IACtD/P;IACA4E;IACAY;IACA8H,aAAa;QAAChE;KAAc,EAAE;QAACW;KAAmB;IAClDwB;IACAkB;IACAG;IACAY;CACD;ACRM,MAAMsC,0BAA4C;IACvDhQ;IACA4E;IACAY;IACA8H,aAAa;QAAC/D;KAAc,EAAE;QAACW;KAAmB;IAClDW;IACAqB;IACAY;IACAW;IACAC;CACD;ACtBM,MAAMuC,iBAA+B,CAAChQ;IA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AzB;QACAsC;QACA6J;QACAvF;QACAQ;QACAI;QACAkB;QACAmB;QACAa;QACAG;KACD;IACD1F;IACAH;IACAtB;CACD;AAEM,MAAMqJ,mBAAiC;IAAC/R,0BAAaoF,WAAM0M;CAAW;AChD7E,MAAME,SAAuB;IAC3BrO;IACAwD;IACAD;IACA9J;IACAgK;IACA3D;IACAqB;IACA2B;IACAzB;IACAsC;IACAkK;IACA1J;IACAmD;IACAyC;IACAmB;IACAa;IACAqB;CACD;AAED,MAAMkB,cAA4B;IAChCpN;IACAgF;IACAF;IACAjG;IACA0F,gBAAgB;QACdzF;QACAwD;QACAD;QACA9J;QACAgK;QACA3D;QACAqB;QACA2B;QACAzB;QACAsC;QACAkK;QACAvG;QACAyC;QACAmB;QACAa;QACAqB;KACD;IACD5G;IACAH;IACAtB;CACD;AAEM,MAAMwJ,qBAAqB;IAAClS,0BAAagS,QAAQC;CAAa;ACjDrE,MAAME,iBAA+B;IACnChO;IACAgD;IACA/J;IACAgK;IACA3D;IACAqB;IACA2B;IACAzB;IACAsC;IACAQ;IACA0J;IACAvG;IACAyC;IACAmB;IACAa;IACAqB;CACD;AAED,MAAMqB,sBAAoC;IACxCvN;IACAgF;IACAF;IACAjG;IACA0F,gBAAgB;QACdjF;QACAgD;QACA/J;QACAgK;QACA3D;QACAqB;QACA2B;QACAzB;QACAsC;QACAkK;QACAvG;QACAyC;QACAmB;QACAa;QACAqB;KACD;IACD5G;IACAH;IACAtB;CACD;AAEM,MAAM2J,6BAA2C;IAACrS,0BAAamS,gBAAgBC;CAAqB;AC5C3G,MAAME,gBAA8B;IAClC3O;IACAwD;IACAD;IACA9J;IACAgK;IACAH;IACAxD;IACAqB;IACA2B;IACAzB;IACAsC;IACAkK;IACA1J;IACAmD;IACAyC;IACAmB;IACAa;IACAqB;CACD;AAED,MAAMwB,qBAAmC;IACvC1N;IACAgF;IACAF;IACAjG;IACA0F,gBAAgB;QACdzF;QACAwD;QACAD;QACA9J;QACA6J;QACAG;QACA3D;QACAqB;QACA2B;QACAzB;QACAsC;QACAkK;QACAvG;QACAyC;QACAmB;QACAa;QACAqB;KACD;IACD5G;IACAH;IACAtB;CACD;AAEM,MAAM8J,4BAA0C;IAACxS,0BAAasS,eAAeC;CAAoB;ACpDxG,MAAME,MAAoB;IACxB7O;IACAuD;IACA/J;IACAgK;IACAhE;IACA2C;IACAS;IACAxB;IACAsC;IACAoK;IACA5J;IACAmD;IACAyC;IACAmB;IACAa;IACAqB;CACD;AAED,MAAM2B,WAAyB;IAC7B7N;IACAgF;IACAD;IACAlG;IACA0F,gBAAgB;QACdxF;QACAuD;QACA/J;QACAgK;QACAhE;QACA2C;QACAS;QACAxB;QACAA;QACAsC;QACAoK;QACAzG;QACAyC;QACAmB;QACAa;QACAqB;KACD;IACD5G;IACAH;IACAtB;CACD;AAEM,MAAMiK,kBAAgC;IAAC3S,0BAAayS,KAAKC;CAAU;AC/C1E,MAAME,cAA4B;IAChC/O;IACAsD;IACA/J;IACAgK;IACAhE;IACA2C;IACAS;IACAxB;IACAsC;IACAoK;IACA5J;IACAmD;IACAyC;IACAmB;IACAa;IACAqB;CACD;AAED,MAAM8B,mBAAiC;IACrChO;IACAgF;IACAD;IACAlG;IACA0F,gBAAgB;QACdvF;QACAsD;QACA/J;QACAgK;QACAhE;QACA2C;QACAS;QACAxB;QACAsC;QACAoK;QACAzG;QACAyC;QACAmB;QACAa;QACAqB;KACD;IACD5G;IACAH;IACAtB;CACD;AAEM,MAAMoK,0BAAwC;IAAC9S,0BAAa4S,aAAaC;CAAkB;AC7ClG,MAAME,aAA2B;IAC/BnP;IACAuD;IACA/J;IACAgK;IACAH;IACA7D;IACA2C;IACAS;IACAxB;IACAsC;IACAoK;IACA5J;IACAmD;IACAyC;IACAmB;IACAa;IACAqB;CACD;AAED,MAAMiC,kBAAgC;IACpCnO;IACAgF;IACAD;IACAlG;IACA0F,gBAAgB;QACdxF;QACAuD;QACA/J;QACAgK;QACAH;QACA7D;QACAoD;QACAT;QACAf;QACAsC;QACAoK;QACAzG;QACAyC;QACAmB;QACAa;QACAqB;KACD;IACD5G;IACAH;IACAtB;CACD;AAEM,MAAMuK,yBAAuC;IAACjT,0BAAa+S,YAAYC;CAAiB;AC9C/F,MAAME,YAAqB;IACzBpP;IACAoD;IACA9J;IACAgK;IACA3D;IACAqB;IACA2B;IACAzB;IACAsC;IACA6J;IACArJ;IACA8D;IACAQ;IACAI;IACAY;IACAM;IACAmB;IACAa;IACAG;CACD;AAED,MAAMsD,YAA0B;IAC9BtO;IACAgF;IACAF;IACAjG;IACA0F,gBAAgB;QACdtF;QACA1G;QACAgK;QACAF;QACAzD;QACAqB;QACA2B;QACAzB;QACAsC;QACA6J;QACAvF;QACAQ;QACAI;QACAY;QACAM;QACAmB;QACAa;QACAG;KACD;IACD1F;IACAH;IACAtB;CACD;AAEM,MAAM0K,mBAAmB;IAACpT,0BAAakT,WAAMC;CAAW;ACpD/D,MAAME,cAA4B;IAChCvP;IACAoD;IACA9J;IACAgK;IACAH;IACAxD;IACAqB;IACA2B;IACAzB;IACAsC;IACA6J;IACArJ;IACA8D;IACAY;IACAY;IACAM;IACAmB;IACAa;IACAG;CACD;AAED,MAAMyD,mBAAiC;IACrCzO;IAEAgF;IACAF;IACAjG;IACA0F,gBAAgB;QACdtF;QACAoD;QACA9J;QACAgK;QACAH;QACAxD;QACAqB;QACA2B;QACAzB;QACAsC;QACA6J;QACAvF;QACAY;QACAY;QACAM;QACAmB;QACAa;QACAG;KACD;IACD1F;IACAH;IACAtB;CACD;AAEM,MAAM6K,0BAA0B;IAACvT,0BAAaqT,aAAaC;CAAkB;ACxDpF,MAAME,YAA0B;IAC9B5B,OACE;QAAC7N;QAAeqJ;KAAU,EAC1B;QAACpJ;QAAoBwI;QAAWZ;QAAYQ;KAAyB,EACrE;QAACnI;QAAoBuI;QAAWZ;QAAYQ;KAAyB;IAEvE3I;IACA2D;IACAtC;IACA2B;IACAzB;IACAmM;IACAzD;IACAmB;IACAa;IACAG;CACD;AAED,MAAM4D,iBAA+B;IACnC5O;IACAgF;IACAF;IACAjG;IACA0F,gBAAgB;QACdwI,OACE;YAAC7N;YAAeqJ;SAAU,EAC1B;YAACpJ;YAAoBwI;YAAWZ;YAAYQ;SAAyB,EACrE;YAACnI;YAAoBuI;YAAWZ;YAAYQ;SAAyB;QAEvEhF;QACA3D;QACAqB;QACA2B;QACAzB;QACAmM;QACAzD;QACAmB;QACAa;QACAG;KACD;IACD1F;IACAH;CACD;AAEM,MAAM0J,wBAAwB;IAAC1T,0BAAawT,WAAWC;CAAgB;AC3C9E,MAAME,UAAwB;IAC5BjP;IACAtH;IACAgK;IACA3D;IACAsC;IACAU;IACAzB;IACAsC;IACA6J;IACAQ;IACA7J;IACA8D;IACAU;IACAoB;IACAmB;IACAa;IACAG;CACD;AAED,MAAM+D,eAA6B;IACjC/O;IACAgF;IACAF;IACAjG;IACA0F,gBAAgB;QACd1E;QACAtH;QACAgK;QACA3D;QACAsC;QACAU;QACAzB;QACAsC;QACA6J;QACAQ;QACA/F;QACAU;QACAoB;QACAmB;QACAa;QACAG;KACD;IACD1F;IACAH;IACAtB;CACD;AAEM,MAAMmL,sBAAoC;IAAC7T,0BAAa2T,SAASC;CAAc;ACtDtF,MAAME,MAAoB;IACxB1P;IACAhH;IACAgK;IACA3D;IACAuB;IACAsC;IACAQ;IACA4F;IACAmB;IACAa;IACAG;CACD;AAED,MAAMkE,WAAyB;IAC7BlP;IACAgF;IACAF;IACAjG;IACA0F,gBAAgB;QACdhF;QACAhH;QACAgK;QACA3D;QACAuB;QACAsC;QACAoG;QACAmB;QACAa;QACAG;KACD;IACD1F;IACAH;IACAtB;CACD;AAEM,MAAMsL,kBAAgC;IAAChU,0BAAa8T,KAAKC;CAAU;ACpC1E,MAAME,QAAsB;IAC1B3P;IACAlH;IACAgK;IACA3D;IACAuB;IACAsC;IACAQ;IACA4F;IACAmB;IACAa;IACAG;CACD;AAED,MAAMqE,aAA2B;IAC/BrP;IACAgF;IACAF;IACAjG;IACA0F,gBAAgB;QACd9E;QACAlH;QACAgK;QACA3D;QACAuB;QACAsC;QACAoG;QACAmB;QACAa;QACAG;KACD;IACD1F;IACAH;IACAtB;CACD;AAEM,MAAMyL,oBAAkC;IAACnU,0BAAaiU,OAAOC;CAAY;ACnChF,MAAME,OAAqB;IACzB7P;IACA4C;IACAD;IACA9J;IACAgK;IACA3D;IACAiD;IACAI;IACA9B;IACAsC;IACAkK;IACA1J;CACD;AAED,MAAMuM,YAA0B;IAC9BxP;IACAgF;IACAF;IACAjG;IACA0F,gBAAgB;QACd7E;QACA4C;QACAD;QACA9J;QACAgK;QACA3D;QACAiD;QACAI;QACA9B;QACAsC;QACAkK;KACD;IACDrH;IACAH;IACAtB;CACD;AAEM,MAAM4L,mBAAmB;IAACtU,0BAAaoU,MAAMC;CAAW;ACnC/D,MAAME,eAA6B;IACjC9P;IACA0C;IACA/J;IACAgK;IACA3D;IACAiD;IACAI;IACA9B;IACAsC;IACAQ;IACA0J;IACA9D;IACAmB;IACAa;IACAqB;CACD;AAED,MAAMyD,oBAAkC;IACtC3P;IACAgF;IACAF;IACAjG;IACA0F,gBAAgB;QACd3E;QACA0C;QACA/J;QACAgK;QACA3D;QACAiD;QACAI;QACA9B;QACAsC;QACAkK;QACA9D;QACAmB;QACAa;QACAqB;KACD;IACD5G;IACAH;IACAtB;CACD;AAEM,MAAM+L,2BAAyC;IAACzU,0BAAauU,cAAcC;CAAmB;AC7CrG,MAAME,QAAsB;IAC1B/P;IACAvH;IACAgK;IACA3D;IACAsD;IACAC;IACAhC;IACAsC;IACA6J;IACArJ;IACA8D;IACAQ;IACAI;IACAY;CAKD;AAED,MAAMuH,aAA2B;IAC/B9P;IACAgF;IACAF;IACAjG;IACA0F,gBAAgB;QACdzE;QACAvH;QACAgK;QACA3D;QACAsD;QACAC;QACAhC;QACAsC;QACA6J;QACAvF;QACAQ;QACAI;QACAY;KAKD;IACDjD;IACAH;IACAtB;CACD;AAEM,MAAMkM,oBAAkC;IAAC5U,0BAAa0U,OAAOC;CAAY;ACtDhF,MAAME,SAAuB;IAC3BjQ;IACAuE;IACA/B;IACA3D;IACAuB;IACAsC;IACAuB;IACA6E;IACAmB;IACAa;IACAG;CACD;AAED,MAAMiF,cAA4B;IAChCjQ;IACAgF;IACAF;IACAjG;IACA0F,gBAAgB;QACdxE;QACAuE;QACA/B;QACA3D;QACAuB;QACAsC;QACAuB;QACA6E;QACAmB;Q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"}
1
+ {"version":3,"file":"index.cjs","sources":["webpack://@visactor/vseed/webpack/runtime/compat_get_default_export","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/advanced/chart/pipes/init/initAdvancedVSeed.ts","webpack://@visactor/vseed/./src/pipeline/utils/pipeline.ts","webpack://@visactor/vseed/./src/pipeline/utils/chatType.ts","webpack://@visactor/vseed/./src/i18n/i18n.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/tree/traverse.ts","webpack://@visactor/vseed/./src/pipeline/utils/measures/find.ts","webpack://@visactor/vseed/./src/pipeline/utils/dimensions/find.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/init/autoMeasures.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/init/autoDimensions.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/init/autoMeasuresBy2M1Group.ts","webpack://@visactor/vseed/./src/dataReshape/constant.ts","webpack://@visactor/vseed/./src/dataReshape/unfoldDimensions.ts","webpack://@visactor/vseed/./src/dataReshape/foldMeasures.ts","webpack://@visactor/vseed/./src/dataReshape/dataReshapeFor2D1M.ts","webpack://@visactor/vseed/./src/dataReshape/dataReshapeFor1D1M.ts","webpack://@visactor/vseed/./src/dataReshape/dataReshapeFor1D2M.ts","webpack://@visactor/vseed/./src/dataReshape/dataReshapeFor1D.ts","webpack://@visactor/vseed/./src/dataReshape/unfoldZeroDimensions.ts","webpack://@visactor/vseed/./src/dataReshape/dataReshapeFor2D1M0Name.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeTo2D1M.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeTo2D1M0Name.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeTo1D1M.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeTo1D2M.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeTo1D.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo2D1M.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo2D1M0Name.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo1D1M.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo1D2M.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo1D.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/encodingXY.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/encodingYX.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/encodingYY.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/encodingXYY.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/encodingRose.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/encodingPie.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/encodingAR.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/encodingFunnel.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/config/config.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/theme/theme.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/pivot/pivotAdapter.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/pipes/analysis/sort.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/line.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/bar.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/barParallel.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/barPercent.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/column.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/columnParallel.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/columnPercent.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/area.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/areaPercent.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/areaRange.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/pie.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/donut.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/rose.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/roseParallel.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/funnel.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/scatter.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/encodingMatrix.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/heatmap.ts","webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/radar.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/init/autoMeasures.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/init/autoDimensions.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/init/autoPivotDimensions.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/init/autoPivotMeasures.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/init/initAdvancedVSeed.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipes/records/records.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipeline/pivotTable.ts","webpack://@visactor/vseed/./src/pipeline/advanced/table/pipeline/table.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/datasetYX.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/datasetXY.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/datasetPivot.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/dataset/progressive.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/column.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/bar.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/barParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/area.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/areaRange.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/line.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/columnParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/pie.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/donut.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/rose.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/roseParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/scatter.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/radar.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/funnel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/pivot.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/xBand.ts","webpack://@visactor/vseed/./src/pipeline/utils/constant.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/xLinear.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/yBand.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/yLinear.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/radius.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/angle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/radarAngle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/radarRadius.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/percent/percent.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/stack/stack.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/stack/stackCornerRadius.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/backgroundColor/background.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltip.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/label/label.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/label/labelColorInversion.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/legend/discreteLegend.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/legend/pivotDiscreteLegend.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/legend/colorLegend.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/pivotChart/pivotAdapter.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/pivotChart/pivotIndicators.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/pivotChart/pivotGridStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/pivotChart/pivotColumnDimensions.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/pivotChart/pivotRowDimensions.ts","webpack://@visactor/vseed/./src/dataSelector/selector.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/barStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/pointStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/pointState.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/lineStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/areaStyle.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/annotation/annotationAreaBand.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/crosshair/verticalCrosshairLine.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/crosshair/verticalCrosshairRect.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/crosshair/horizontalCrosshairRect.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/crosshair/horizontalCrosshairLine.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/series/series.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/line.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/column.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/columnParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/columnPercent.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/bar.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/barParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/barPercent.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/area.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/areaPercent.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/areaRange.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/scatter.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/pie.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/donut.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/rose.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/roseParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/radar.ts","webpack://@visactor/vseed/./src/pipeline/spec/chart/pipeline/funnel.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/pipeline/spec/table/pipes/init/table.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/init/pivotTable.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/columns/measuresToColumns.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/bodyStyle.ts","webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/theme/headerStyle.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/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/pipeline/spec/table/pipeline/pivotTable.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/builder/builder/advanced/colorItems.ts","webpack://@visactor/vseed/./src/builder/builder/builder.ts","webpack://@visactor/vseed/./src/builder/register/chartType.ts","webpack://@visactor/vseed/./src/theme/light.ts","webpack://@visactor/vseed/./src/theme/dark.ts","webpack://@visactor/vseed/./src/builder/register/theme.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/dataset/dataset.ts","webpack://@visactor/vseed/./src/types/properties/dimensions/dimensions.ts","webpack://@visactor/vseed/./src/types/properties/measures/format/numFormat.ts","webpack://@visactor/vseed/./src/types/properties/measures/measures.ts","webpack://@visactor/vseed/./src/types/properties/datasetReshapeInfo/datasetReshapeInfo.ts","webpack://@visactor/vseed/./src/types/properties/encoding/encoding.ts","webpack://@visactor/vseed/./src/types/properties/config/axes/bandAxis.ts","webpack://@visactor/vseed/./src/types/properties/config/axes/linearAxis.ts","webpack://@visactor/vseed/./src/types/properties/config/crosshair/crosshair.ts","webpack://@visactor/vseed/./src/types/properties/config/stackCornerRadius/stackCornerRadius.ts","webpack://@visactor/vseed/./src/types/properties/config/backgroundColor/backgroundColor.ts","webpack://@visactor/vseed/./src/types/properties/config/color/color.ts","webpack://@visactor/vseed/./src/types/properties/config/label/label.ts","webpack://@visactor/vseed/./src/types/properties/config/legend/legend.ts","webpack://@visactor/vseed/./src/types/properties/config/tooltip/tooltip.ts","webpack://@visactor/vseed/./src/types/properties/config/config.ts","webpack://@visactor/vseed/./src/types/properties/config/axes/axis.ts","webpack://@visactor/vseed/./src/types/properties/theme/customTheme.ts","webpack://@visactor/vseed/./src/types/properties/theme/theme.ts","webpack://@visactor/vseed/./src/types/dataSelector/selector.ts","webpack://@visactor/vseed/./src/types/properties/markStyle/barStyle.ts","webpack://@visactor/vseed/./src/types/properties/markStyle/pointStyle.ts","webpack://@visactor/vseed/./src/types/properties/markStyle/lineStyle.ts","webpack://@visactor/vseed/./src/types/properties/markStyle/areaStyle.ts","webpack://@visactor/vseed/./src/types/properties/markStyle/markStyle.ts","webpack://@visactor/vseed/./src/types/properties/annotation/annotationPoint.ts","webpack://@visactor/vseed/./src/types/properties/annotation/annotationVerticalLine.ts","webpack://@visactor/vseed/./src/types/properties/annotation/annotationHorizontalLine.ts","webpack://@visactor/vseed/./src/types/properties/annotation/annotationArea.ts","webpack://@visactor/vseed/./src/types/properties/annotation/annotation.ts","webpack://@visactor/vseed/./src/types/properties/analysis/sortAxis.ts","webpack://@visactor/vseed/./src/types/properties/analysis/sortLegend.ts","webpack://@visactor/vseed/./src/types/properties/analysis/analysis.ts","webpack://@visactor/vseed/./src/types/i18n/i18n.ts","webpack://@visactor/vseed/./src/types/chartType/table/table.ts","webpack://@visactor/vseed/./src/types/chartType/pivotTable/pivotTable.ts","webpack://@visactor/vseed/./src/types/chartType/line/line.ts","webpack://@visactor/vseed/./src/types/chartType/column/column.ts","webpack://@visactor/vseed/./src/types/chartType/columnParallel/columnParallel.ts","webpack://@visactor/vseed/./src/types/chartType/columnPercent/columnPercent.ts","webpack://@visactor/vseed/./src/types/chartType/bar/bar.ts","webpack://@visactor/vseed/./src/types/chartType/barParallel/barParallel.ts","webpack://@visactor/vseed/./src/types/chartType/barPercent/barPercent.ts","webpack://@visactor/vseed/./src/types/chartType/area/area.ts","webpack://@visactor/vseed/./src/types/chartType/areaPercent/areaPercent.ts","webpack://@visactor/vseed/./src/types/chartType/areaRange/areaRange.ts","webpack://@visactor/vseed/./src/types/chartType/scatter/scatter.ts","webpack://@visactor/vseed/./src/types/chartType/rose/rose.ts","webpack://@visactor/vseed/./src/types/chartType/roseParallel/roseParallel.ts","webpack://@visactor/vseed/./src/types/chartType/pie/pie.ts","webpack://@visactor/vseed/./src/types/chartType/donut/donut.ts","webpack://@visactor/vseed/./src/types/chartType/radar/radar.ts","webpack://@visactor/vseed/./src/types/chartType/funnel/funnel.ts","webpack://@visactor/vseed/./src/types/chartType/heatmap/heatmap.ts","webpack://@visactor/vseed/./src/types/vseed.ts","webpack://@visactor/vseed/./src/types/advancedVSeed.ts"],"sourcesContent":["// getDefaultExport function for compatibility with non-ESM modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};\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 { AdvancedPipe, AdvancedVSeed } from 'src/types'\n\nexport const initAdvancedVSeed: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType, locale } = vseed\n return {\n ...advancedVSeed,\n chartType,\n locale: locale || 'zh-CN',\n } as AdvancedVSeed\n}\n","import type { ExecPipelineType, Pipe } from 'src/types'\n\n/**\n * 执行pipeline, 每个pipe负责构建结果的一部分, 构建完成后得到完整的目标结果\n * @param pipeline pipeline数组, 每个pipe负责构建结果的一部分\n * @param initialValue 初始值\n * @param context 上下文\n * @returns 执行后的结果\n */\nexport const execPipeline: ExecPipelineType = <T, U>(\n pipeline: Array<Pipe<T, U>>,\n context: U,\n initialValue: Partial<T> = {},\n): T => {\n const result = pipeline.reduce((prev, cur) => {\n return cur(prev, context)\n }, initialValue)\n return result as T\n}\n","import type { Dimensions, DimensionGroup, DimensionTree, VSeed } from 'src/types'\n\nexport const isTable = (vseed: VSeed) => {\n return vseed.chartType === 'table'\n}\nexport const isPivotTable = (vseed: VSeed) => {\n return vseed.chartType === 'pivotTable'\n}\nexport const isVTable = (vseed: VSeed) => {\n return ['table', 'pivotTable'].includes(vseed.chartType)\n}\nexport const isVChart = (vseed: VSeed): boolean => {\n return !isVTable(vseed)\n}\nexport const isPivotChart = (vseed: VSeed) => {\n if (isVTable(vseed)) {\n return false\n }\n\n const { measures = [], dimensions = [] } = vseed as {\n measures: DimensionTree\n dimensions: Dimensions\n }\n\n const hasRowOrColumnDimension =\n dimensions &&\n dimensions.some((dimension) => dimension.location === 'rowDimension' || dimension.location === 'columnDimension')\n const hasMeasureGroup = measures && measures.find((measure: DimensionGroup) => measure && measure.children)\n\n return hasRowOrColumnDimension || hasMeasureGroup\n}\n","import { isNullish } from 'remeda'\nimport translateMap from './i18n.json'\nimport type { Locale, TranslateRecordType } from '../types'\n\nclass Intl {\n private static instance: Intl\n\n private translateMap: TranslateRecordType = translateMap as unknown as TranslateRecordType\n private locale: Locale = 'zh-CN'\n\n canTranslate = (value: string) => !!this.translateMap[value]\n\n /**\n * @example i18n`指标名称`\n */\n i18n = (segments: TemplateStringsArray, ...values: Array<number | string>) => {\n const text = segments.map((segment, index) => segment + (values[index] || '')).join('')\n\n const translatedText = this.translateMap?.[text]?.[this.locale]\n if (isNullish(translatedText)) {\n console.warn(`i18n ${this.locale} no translate: ${text}`)\n return text\n }\n return translatedText\n }\n\n setLocale = (locale: Locale): void => {\n this.locale = locale\n }\n\n getLocale: () => Locale = () => this.locale\n\n public static getInstance() {\n if (!Intl.instance) {\n Intl.instance = new Intl()\n }\n\n return Intl.instance\n }\n}\n\nconst intl = Intl.getInstance()\n\nconst i18n = intl.i18n\n\nexport { intl, i18n }\n","import { isNumber } from 'remeda'\nimport { intl } from '../../../i18n'\nimport type { Formatter, Locale, NumFormat } from 'src/types'\n\nexport const createNumFormatter = (format: NumFormat, locale: Locale = intl.getLocale()): Formatter => {\n const {\n type = 'number',\n ratio = 1,\n symbol = '',\n thousandSeparator = true,\n prefix = '',\n suffix = '',\n\n fractionDigits = 2,\n significantDigits,\n roundingMode = 'halfExpand',\n roundingPriority = 'auto',\n } = format || {}\n\n const numFormatterOptions: Intl.NumberFormatOptions = {\n style: 'decimal',\n notation: type === 'scientific' ? 'scientific' : 'standard',\n // @ts-expect-error roundingMode is not in NumberFormatOptions\n roundingMode,\n roundingPriority,\n }\n\n if (isNumber(fractionDigits)) {\n if (fractionDigits >= 0) {\n numFormatterOptions.minimumFractionDigits = fractionDigits\n numFormatterOptions.maximumFractionDigits = fractionDigits\n }\n }\n if (isNumber(significantDigits) && significantDigits > 0) {\n if (significantDigits > 0) {\n numFormatterOptions.minimumSignificantDigits = significantDigits\n numFormatterOptions.maximumSignificantDigits = significantDigits\n }\n }\n\n const numFormatter = new Intl.NumberFormat(locale, numFormatterOptions)\n\n return (value?: number | string) => {\n let num = Number(value)\n let typeSymbol = ''\n if (Number.isNaN(num)) {\n return num.toString()\n }\n\n // apply ratio for percent/permille\n if (type === 'percent') {\n num *= 100\n typeSymbol = '%'\n } else if (type === 'permille') {\n num *= 1000\n typeSymbol = '‰'\n } else if (type === 'number') {\n num = num / (ratio || 1)\n }\n\n // format value\n let numStr = numFormatter.format(num)\n\n // add thousand separator\n if (thousandSeparator) {\n const parts = numStr.split('.')\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')\n numStr = parts.join('.')\n }\n\n // add symbol, typeSymbol, prefix and suffix\n return `${prefix}${numStr}${typeSymbol}${symbol}${suffix}`\n }\n}\n\nexport const autoNumFormatter = (value?: number | string, locale: Locale = intl.getLocale()): string => {\n if (value === undefined || value === null) return String(value)\n const num = Number(value)\n if (Number.isNaN(num)) return String(value)\n\n const numFormatterOptions: Intl.NumberFormatOptions = {\n style: 'decimal',\n notation: 'compact',\n }\n numFormatterOptions.minimumFractionDigits = 0\n numFormatterOptions.maximumFractionDigits = 2\n\n const numFormatter = new Intl.NumberFormat(locale, { ...numFormatterOptions })\n\n return numFormatter.format(Number(value))\n}\n","import type { Formatter, Locale, NumFormat } from 'src/types'\nimport { autoNumFormatter, createNumFormatter } from './createNumFormatter'\n\nexport const createFormatter = (format: Partial<NumFormat>): Formatter => {\n return createNumFormatter(format)\n}\n\nexport const autoFormatter = (value?: number | string, locale?: Locale): string => {\n return autoNumFormatter(value, locale)\n}\n","/**\n * 支持泛型的非递归前序遍历\n * @param tree 根节点数组\n * @param callback 遍历时对每个节点执行的回调,返回 true 时停止遍历\n */\nexport const preorderTraverse = <T extends { id: string }, U extends { id: string; children?: (T | U)[] }>(\n tree: (T | U)[],\n callback: (node: T | U) => boolean,\n) => {\n if (!tree || tree.length === 0) return\n\n const stack: (T | U)[] = [...tree].reverse()\n\n while (stack.length > 0) {\n const node = stack.pop()!\n const stop = callback(node)\n if (stop === true) {\n return\n }\n if (!('children' in node)) {\n continue\n }\n const children = node.children\n if (children && children.length > 0) {\n for (let i = children.length - 1; i >= 0; i--) {\n const child = children[i]\n stack.push(child)\n }\n }\n }\n}\n","import type { Measure, MeasureGroup, MeasureTree } from 'src/types'\nimport { preorderTraverse } from '../tree'\n\nexport const findMeasureById = (measures: MeasureTree = [], id: string): Measure | undefined => {\n if (!measures) return undefined\n let result: Measure | undefined\n preorderTraverse<Measure, MeasureGroup>(measures, (node) => {\n if (!('children' in node)) {\n if (node.id === id) {\n result = node as Measure\n return true\n }\n }\n return false\n })\n return result\n}\n\nexport const findFirstMeasure = (measures: MeasureTree = []): Measure | undefined => {\n if (!measures) return undefined\n let result: Measure | undefined\n preorderTraverse<Measure, MeasureGroup>(measures, (node) => {\n if (!('children' in node)) {\n result = node as Measure\n return true\n }\n return false\n })\n return result\n}\n\nexport const findAllMeasures = (measures: MeasureTree = []): Measure[] => {\n if (!measures) return []\n const result: Measure[] = []\n preorderTraverse<Measure, MeasureGroup>(measures, (node) => {\n if (!('children' in node)) {\n result.push(node as Measure)\n }\n return false\n })\n return result\n}\n","import type { Dimension, DimensionGroup, DimensionTree } from 'src/types'\nimport { preorderTraverse } from '../tree'\n\nexport const findDimensionById = (dimensions: DimensionTree = [], id: string): Dimension | undefined => {\n if (!dimensions) return undefined\n let result: Dimension | undefined\n preorderTraverse<Dimension, DimensionGroup>(dimensions, (node) => {\n if (!('children' in node)) {\n if (node.id === id) {\n result = node as Dimension\n return true\n }\n }\n return false\n })\n return result\n}\n\nexport const findFirstDimension = (dimensions: DimensionTree = []): Dimension | undefined => {\n if (!dimensions) return undefined\n let result: Dimension | undefined\n preorderTraverse<Dimension, DimensionGroup>(dimensions, (node) => {\n if (!('children' in node)) {\n result = node as Dimension\n return true\n }\n return false\n })\n return result\n}\n\nexport const findAllDimensions = (dimensions: DimensionTree = []): Dimension[] => {\n if (!dimensions) return []\n const result: Dimension[] = []\n preorderTraverse<Dimension, DimensionGroup>(dimensions, (node) => {\n if (!('children' in node)) {\n result.push(node as Dimension)\n }\n return false\n })\n return result\n}\n","import { isPivotChart } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Datum, DimensionGroup } from 'src/types'\n\nexport const autoMeasures: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { measures, dataset } = vseed\n\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return result\n }\n\n if (isPivotChart(vseed)) {\n return autoMeasureGroup(advancedVSeed, context)\n }\n\n if (measures) {\n result.measures = measures\n return result\n }\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n result.measures = Object.keys(sample)\n .filter((key) => {\n return top100dataset.some((item) => typeof item[key] === 'number') && !['', null, undefined].includes(key)\n })\n .map((measure) => ({\n id: measure,\n alias: measure,\n }))\n\n return result\n}\n\nconst autoMeasureGroup: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { measures } = vseed\n const hasMeasureGroup = measures?.some((measure: DimensionGroup) => measure.children)\n\n if (!measures) {\n return advancedVSeed\n }\n\n // 没有指标组, 则自动添加一个指标组\n if (!hasMeasureGroup) {\n const newMeasures = [\n {\n id: 'measureGroup',\n alias: 'measureGroup',\n children: measures,\n },\n ]\n return {\n ...advancedVSeed,\n measures: newMeasures,\n }\n }\n\n // 存在指标组, 则任意连续的独立指标成组\n let currentGroup: DimensionGroup = createEmptyMeasureGroup()\n const measureGroups: DimensionGroup[] = []\n for (const measure of measures) {\n if ('children' in measure) {\n // 当前指标组之前的所有独立指标成组\n if (currentGroup.children?.length) {\n currentGroup.alias = currentGroup.children.map((item) => item.alias).join('-')\n currentGroup.id = currentGroup.alias + currentGroup.children.map((item) => item.id).join('-')\n measureGroups.push(currentGroup)\n currentGroup = createEmptyMeasureGroup()\n }\n // 当前是指标组\n measureGroups.push(measure)\n } else {\n currentGroup.children?.push(measure)\n }\n }\n\n // 最后一组\n if (currentGroup.children?.length) {\n currentGroup.alias = currentGroup.children.map((item) => item.alias).join('-')\n currentGroup.id = currentGroup.alias + currentGroup.children.map((item) => item.id).join('-')\n measureGroups.push(currentGroup)\n currentGroup = createEmptyMeasureGroup()\n }\n\n advancedVSeed.measures = measureGroups\n return advancedVSeed\n}\n\nconst createEmptyMeasureGroup = () => {\n return {\n id: '',\n alias: '',\n children: [],\n }\n}\n","import { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Datum, DimensionTree } from 'src/types'\n\nexport const autoDimensions: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dimensions, dataset } = vseed\n\n const measures = findAllMeasures(advancedVSeed.measures as DimensionTree)\n\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return result\n }\n\n if (dimensions) {\n result.dimensions = dimensions\n return result\n }\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n result.dimensions = Object.keys(sample)\n .filter(\n (key) =>\n top100dataset.some((item) => typeof item[key] === 'string') &&\n !['', null, undefined].includes(key) &&\n !measures.some((measure) => measure.id === key),\n )\n .map((dim) => ({\n id: dim,\n alias: dim,\n location: 'dimension',\n }))\n\n return result\n}\n","import { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Datum, MeasureGroup, MeasureTree } from 'src/types'\n\n/**\n * 自动处理指标, 如果超出了2个指标, 则按每2个指标一个组的逻辑维护\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const autoMeasuresBy2M1Group: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { measures, dataset } = vseed\n\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return result\n }\n\n if (measures) {\n result.measures = auto2M1Group(measures)\n return result\n }\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n const newMeasures = Object.keys(sample)\n .filter((key) => {\n return top100dataset.some((item) => typeof item[key] === 'number') && !['', null, undefined].includes(key)\n })\n .map((measure) => ({\n id: measure,\n alias: measure,\n }))\n\n result.measures = auto2M1Group(newMeasures)\n return result\n}\n\nconst auto2M1Group = (measures: MeasureTree): MeasureTree => {\n const allMeasures = findAllMeasures(measures)\n\n if (allMeasures.length <= 2) {\n return allMeasures\n }\n\n const groups: MeasureTree = measures.filter((measure) => 'children' in measure)\n const singleMeasures = measures.filter((measure) => !('children' in measure))\n for (let i = 0; i < singleMeasures.length; i += 2) {\n const group = createEmptyMeasureGroup()\n group.children = allMeasures.slice(i, i + 2)\n groups.push(group)\n }\n return groups as MeasureGroup[]\n}\n\nconst createEmptyMeasureGroup = (): MeasureGroup => {\n return {\n id: '',\n alias: '',\n children: [],\n }\n}\n","// Reshape Measures\nexport const FoldMeasureName = '__MeaName__'\nexport const FoldMeasureValue = '__MeaValue__'\nexport const FoldMeasureId = '__MeaId__'\n\n// Reshape Dimensions\nexport const UnfoldDimensionGroup = '__DimGroup__'\nexport const UnfoldDimensionGroupId = '__DimGroupID__'\n\nexport const Separator = '-'\n\nexport const ORIGINAL_DATA = '__OriginalData__'\n","import type { Dataset, Datum, Dimension, Measure } from 'src/types'\nimport type { UnfoldInfo } from 'src/types'\nimport { UnfoldDimensionGroup, Separator, UnfoldDimensionGroupId, FoldMeasureId } from './constant'\nimport { unique } from 'remeda'\n\n/**\n * TODO: 优化展开维度的性能\n * 展开指定的维度\n * @description 第一步: 根据指定的维度, 将多个维度展开为N个指标(取决于维值去重后的数量), 随后合并成一个维度.\n */\nexport const unfoldDimensions = (\n dataset: Dataset,\n dimensions: Dimension[],\n measures: Measure[],\n unfoldStartIndex: number = 0,\n unfoldGroupName: string = UnfoldDimensionGroup,\n unfoldGroupId: string = UnfoldDimensionGroupId,\n foldMeasureId: string = FoldMeasureId,\n dimensionsSeparator: string = Separator,\n): {\n dataset: Dataset\n unfoldInfo: UnfoldInfo\n} => {\n if (unfoldStartIndex < 0 || unfoldStartIndex >= dimensions.length) {\n throw new Error('unfoldStartIndex is out of range')\n }\n\n const dimensionsToBeUnfolded = dimensions.slice(unfoldStartIndex)\n const unfoldInfo: UnfoldInfo = {\n groupName: unfoldGroupName,\n groupId: unfoldGroupId,\n colorItems: [],\n colorIdMap: {},\n }\n\n // 指标为空或维度为空, 则不检测\n if (dimensions.length === 0 || measures.length === 0) {\n return {\n dataset,\n unfoldInfo: {\n groupName: unfoldGroupName,\n groupId: unfoldGroupId,\n colorItems: [],\n colorIdMap: {},\n },\n }\n }\n\n const colorItems = []\n const colorMap: Record<string, string> = {}\n for (let i = 0; i < dataset.length; i++) {\n const datum = dataset[i]\n const colorName = generateDimGroupName(dimensionsToBeUnfolded, datum, dimensionsSeparator)\n const colorId = datum[foldMeasureId]\n ? [colorName, datum[foldMeasureId] as string].join(dimensionsSeparator)\n : colorName\n datum[unfoldGroupName] = colorName\n datum[unfoldGroupId] = colorId\n colorItems.push(colorId)\n colorMap[colorId] = colorName\n }\n\n unfoldInfo.colorItems = unique(colorItems)\n unfoldInfo.colorIdMap = colorMap\n return {\n dataset,\n unfoldInfo,\n }\n}\n\n/**\n * 生成维度组合名称\n * @param dimensionsToBeGrouped 待分组的维度\n * @param datum 数据项\n * @param dimensionsSeparator 维度分隔符\n * @returns 维度组合名称\n */\nexport const generateDimGroupName = (dimensionsToBeGrouped: Dimension[], datum: Datum, dimensionsSeparator: string) => {\n return dimensionsToBeGrouped.map((dim) => String(datum[dim.id])).join(dimensionsSeparator)\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Dataset, FoldInfo, Dimension, Measures, DimensionTree } from 'src/types'\nimport { FoldMeasureId, FoldMeasureName, FoldMeasureValue, ORIGINAL_DATA } from './constant'\nimport { omit } from 'remeda'\n\n/**\n * 折叠指定的指标\n * @description 合并指定的指标为1个, 无论多少个, 都能转换为1个, 取名为fold, 意为折叠后混合在一起.\n */\nexport const foldMeasures = (\n dataset: Dataset,\n measures: Dimension[],\n measureId = FoldMeasureId,\n measureName = FoldMeasureName,\n measureValue = FoldMeasureValue,\n): {\n dataset: Dataset\n foldInfo: FoldInfo\n} => {\n const foldInfo: FoldInfo = {\n measureId,\n measureName,\n measureValue,\n foldMap: {},\n }\n const result: Dataset = new Array(dataset.length * measures.length) as Dataset\n let index = 0\n const ids = measures.map((d) => d.id)\n for (let i = 0; i < dataset.length; i++) {\n for (let j = 0; j < measures.length; j++) {\n const datum: Record<string, any> = omit({ ...dataset[i] }, ids)\n\n datum[ORIGINAL_DATA] = dataset[i]\n\n const measure = measures[j]\n const { id, alias } = measure\n\n datum[id] = dataset[i][id] as unknown\n datum[measureId] = id\n datum[measureName] = alias || id\n datum[measureValue] = dataset[i][id] as unknown\n\n foldInfo.foldMap[id] = alias\n result[index++] = datum\n }\n }\n\n return {\n dataset: result,\n foldInfo,\n }\n}\n\n/**\n * 折叠指定的指标组, 至多支持2层\n * @param dataset\n * @param measures\n * @param measureId\n * @param measureName\n * @param measureValue\n * @returns\n */\nexport const foldMeasureGroups = (\n dataset: Dataset,\n measures: Required<DimensionTree>,\n measureId = '__MeaId__',\n measureName = '__MeaName__',\n measureValue = '__MeaValue__',\n) => {\n const groups: Array<Measures> = []\n if (!measures) {\n return {\n dataset,\n }\n }\n\n // 没有分组, 直接折叠所有指标\n if (!measures.some((measure) => 'children' in measure)) {\n return foldMeasures(dataset, measures, measureId, measureName, measureValue)\n }\n\n measures.forEach((measure) => {\n if ('children' in measure && measure.children) {\n groups.push(measure.children)\n } else {\n groups.push([measure])\n }\n })\n\n // 一组返回一个dataset\n const datasetGroup = groups.map((measures) => {\n if (!measures) {\n return []\n }\n return foldMeasures(dataset, measures, measureId, measureName, measureValue)\n })\n\n return {\n datasetGroup,\n }\n}\n","import type { Dataset, Dimension, FoldInfo, Measure, UnfoldInfo } from 'src/types'\nimport { foldMeasures } from './foldMeasures'\nimport {\n UnfoldDimensionGroup,\n FoldMeasureId,\n FoldMeasureName,\n FoldMeasureValue,\n UnfoldDimensionGroupId,\n} from './constant'\nimport { unfoldDimensions } from './unfoldDimensions'\nimport { i18n } from '../i18n'\n\nconst emptyReshapeResult: {\n dataset: Dataset\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n} = {\n dataset: [],\n foldInfo: {\n foldMap: {},\n measureId: '',\n measureName: '',\n measureValue: '',\n },\n unfoldInfo: {\n groupName: '',\n groupId: '',\n colorItems: [],\n colorIdMap: {},\n },\n}\n/**\n * 数据重塑为2个维度1个指标\n * @param dataset\n * @param dimensions\n * @param measures\n * @returns\n */\nexport const dataReshapeFor2D1M = (\n dataset: Dataset,\n dimensions: Dimension[],\n measures: Measure[],\n options?: {\n foldMeasureId?: string\n foldMeasureName?: string\n foldMeasureValue?: string\n unfoldDimensionGroup?: string\n unfoldDimensionGroupId?: string\n },\n): {\n dataset: Dataset\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n} => {\n const {\n foldMeasureId = FoldMeasureId,\n foldMeasureName = FoldMeasureName,\n foldMeasureValue = FoldMeasureValue,\n unfoldDimensionGroup = UnfoldDimensionGroup,\n unfoldDimensionGroupId = UnfoldDimensionGroupId,\n } = options || {}\n if (dimensions.length === 0 && measures.length === 0) {\n return emptyReshapeResult\n }\n\n // 合并所有指标为1个指标\n const { dataset: foldedDataset, foldInfo } = foldMeasures(\n dataset,\n measures,\n foldMeasureId,\n foldMeasureName,\n foldMeasureValue,\n )\n\n if (dimensions.length === 0) {\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(\n foldedDataset,\n [\n { id: foldMeasureId, alias: i18n`指标Id`, location: 'dimension' },\n { id: foldMeasureName, alias: i18n`指标名称`, location: 'dimension' },\n ],\n [{ id: foldMeasureValue, alias: i18n`指标值` }],\n 1,\n unfoldDimensionGroup,\n unfoldDimensionGroupId,\n foldMeasureId,\n )\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n } else {\n const onlyOneMeasure = measures.length === 1\n const onlyOneDimension = dimensions.length === 1\n\n const dims = [...dimensions]\n if (!onlyOneMeasure || onlyOneDimension) {\n dims.push({ id: foldMeasureName, alias: i18n`指标名称`, location: 'dimension' })\n }\n\n // 展开指定的维度为指标\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(\n foldedDataset,\n dims,\n [{ id: foldMeasureValue, alias: i18n`指标值` }],\n 1,\n unfoldDimensionGroup,\n unfoldDimensionGroupId,\n foldMeasureId,\n )\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n }\n}\n","import type { Dataset, Dimension, FoldInfo, Measure, UnfoldInfo } from 'src/types'\nimport { foldMeasures } from './foldMeasures'\nimport {\n UnfoldDimensionGroup,\n FoldMeasureId,\n FoldMeasureName,\n FoldMeasureValue,\n UnfoldDimensionGroupId,\n} from './constant'\nimport { unfoldDimensions } from './unfoldDimensions'\nimport { i18n } from '../i18n'\n\nconst emptyReshapeResult = {\n dataset: [],\n foldInfo: {\n foldMap: {},\n measureId: '',\n measureName: '',\n measureValue: '',\n },\n unfoldInfo: {\n groupName: '',\n groupId: '',\n colorItems: [],\n colorIdMap: {},\n },\n}\n/**\n * 数据重塑为1个维度1个指标\n * @param dataset\n * @param dimensions\n * @param measures\n * @returns\n */\nexport const dataReshapeFor1D1M = (\n dataset: Dataset,\n dimensions: Dimension[],\n measures: Measure[],\n options?: {\n foldMeasureId?: string\n foldMeasureName?: string\n foldMeasureValue?: string\n unfoldDimensionGroup?: string\n unfoldDimensionGroupId?: string\n },\n): {\n dataset: Dataset\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n} => {\n const {\n foldMeasureId = FoldMeasureId,\n foldMeasureName = FoldMeasureName,\n foldMeasureValue = FoldMeasureValue,\n unfoldDimensionGroup = UnfoldDimensionGroup,\n unfoldDimensionGroupId = UnfoldDimensionGroupId,\n } = options || {}\n\n if (dimensions.length === 0 && measures.length === 0) {\n return emptyReshapeResult\n }\n\n // 合并所有指标为1个指标\n const { dataset: foldedDataset, foldInfo } = foldMeasures(\n dataset,\n measures,\n foldMeasureId,\n foldMeasureName,\n foldMeasureValue,\n )\n\n if (dimensions.length === 0) {\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(\n foldedDataset,\n [{ id: foldMeasureName, alias: i18n`指标名称`, location: 'dimension' }],\n [{ id: foldMeasureValue, alias: i18n`指标值` }],\n 0,\n unfoldDimensionGroup,\n unfoldDimensionGroupId,\n foldMeasureId,\n )\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n } else {\n const dims =\n measures.length === 1\n ? ([...dimensions] as Dimension[])\n : ([...dimensions, { id: foldMeasureName, alias: i18n`指标名称`, location: 'dimension' }] as Dimension[])\n // 展开指定的维度为指标\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(\n foldedDataset,\n dims,\n [{ id: foldMeasureValue, alias: i18n`指标值` }],\n 0,\n unfoldDimensionGroup,\n unfoldDimensionGroupId,\n foldMeasureId,\n )\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n }\n}\n","import type { Dataset, Dimension, FoldInfo, Measure, UnfoldInfo } from 'src/types'\nimport { foldMeasures } from './foldMeasures'\nimport {\n UnfoldDimensionGroup,\n FoldMeasureId,\n FoldMeasureName,\n FoldMeasureValue,\n UnfoldDimensionGroupId,\n} from './constant'\nimport { unfoldDimensions } from './unfoldDimensions'\nimport { i18n } from '../i18n'\n\nconst emptyReshapeResult = {\n dataset: [],\n foldInfo: {\n foldMap: {},\n measureId: '',\n measureName: '',\n measureValue: '',\n },\n unfoldInfo: {\n groupName: '',\n groupId: '',\n colorItems: [],\n colorIdMap: {},\n },\n}\n/**\n * 数据重塑为1个维度1个指标\n * @param dataset\n * @param dimensions\n * @param measures\n * @returns\n */\nexport const dataReshapeFor1D2M = (\n dataset: Dataset,\n dimensions: Dimension[],\n measures: Measure[],\n options?: {\n foldMeasureId?: string\n foldMeasureName?: string\n foldMeasureValue?: string\n unfoldDimensionGroup?: string\n unfoldDimensionGroupId?: string\n },\n): {\n dataset: Dataset\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n} => {\n const {\n foldMeasureId = FoldMeasureId,\n foldMeasureName = FoldMeasureName,\n foldMeasureValue = FoldMeasureValue,\n unfoldDimensionGroup = UnfoldDimensionGroup,\n unfoldDimensionGroupId = UnfoldDimensionGroupId,\n } = options || {}\n\n if (dimensions.length === 0 && measures.length === 0) {\n return emptyReshapeResult\n }\n\n // 合并所有指标为1个指标\n const { dataset: foldedDataset, foldInfo } = foldMeasures(\n dataset,\n measures.length > 1 ? measures.slice(1) : measures,\n foldMeasureId,\n foldMeasureName,\n foldMeasureValue,\n )\n\n if (dimensions.length === 0) {\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(\n foldedDataset,\n [{ id: foldMeasureValue, alias: i18n`指标值`, location: 'dimension' }],\n [{ id: foldMeasureValue, alias: i18n`指标值` }],\n 0,\n unfoldDimensionGroup,\n unfoldDimensionGroupId,\n foldMeasureId,\n )\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n } else {\n // 展开指定的维度为指标\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(\n foldedDataset,\n [...dimensions],\n [{ id: foldMeasureValue, alias: i18n`指标值` }],\n 0,\n unfoldDimensionGroup,\n unfoldDimensionGroupId,\n foldMeasureId,\n )\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n }\n}\n","import type { Dataset, Dimension, FoldInfo, Measure, UnfoldInfo } from 'src/types'\nimport {\n UnfoldDimensionGroup,\n FoldMeasureId,\n FoldMeasureName,\n FoldMeasureValue,\n UnfoldDimensionGroupId,\n} from './constant'\nimport { unfoldDimensions } from './unfoldDimensions'\nimport { i18n } from '../i18n'\n\nconst emptyReshapeResult = {\n dataset: [],\n foldInfo: {\n foldMap: {},\n measureId: '',\n measureName: '',\n measureValue: '',\n },\n unfoldInfo: {\n groupName: '',\n groupId: '',\n colorItems: [],\n colorIdMap: {},\n },\n}\n/**\n * 仅数据重塑为1个维度,不处理指标\n * @param dataset\n * @param dimensions\n * @param measures\n * @returns\n */\nexport const dataReshapeFor1D = (\n dataset: Dataset,\n dimensions: Dimension[],\n measures: Measure[],\n options?: {\n foldMeasureId?: string\n foldMeasureName?: string\n foldMeasureValue?: string\n unfoldDimensionGroup?: string\n unfoldDimensionGroupId?: string\n },\n): {\n dataset: Dataset\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n} => {\n const {\n foldMeasureId = FoldMeasureId,\n foldMeasureName = FoldMeasureName,\n foldMeasureValue = FoldMeasureValue,\n unfoldDimensionGroup = UnfoldDimensionGroup,\n unfoldDimensionGroupId = UnfoldDimensionGroupId,\n } = options || {}\n\n if (dimensions.length === 0 && measures.length === 0) {\n return emptyReshapeResult\n }\n\n if (dimensions.length === 0) {\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(\n dataset,\n [],\n [],\n 0,\n unfoldDimensionGroup,\n unfoldDimensionGroupId,\n foldMeasureId,\n )\n return {\n dataset: finalDataset,\n foldInfo: {\n foldMap: {},\n measureId: foldMeasureId,\n measureName: foldMeasureName,\n measureValue: foldMeasureValue,\n },\n unfoldInfo,\n }\n } else {\n // 展开指定的维度为指标\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(\n dataset,\n [...dimensions],\n [{ id: foldMeasureValue, alias: i18n`指标值` }],\n 0,\n unfoldDimensionGroup,\n unfoldDimensionGroupId,\n foldMeasureId,\n )\n return {\n dataset: finalDataset,\n foldInfo: {\n foldMap: {},\n measureId: foldMeasureId,\n measureName: foldMeasureName,\n measureValue: foldMeasureValue,\n },\n unfoldInfo,\n }\n }\n}\n","import type { Dataset, Measure } from 'src/types'\nimport type { UnfoldInfo } from 'src/types'\nimport { UnfoldDimensionGroup, UnfoldDimensionGroupId } from './constant'\nimport { unique } from 'remeda'\n\n/**\n * 展开0个维度的特殊情况, 折线图、面积图、雷达图只有指标没有维度的情况, 应该所有的指标应该作为一个维度\n * @description\n */\nexport const unfoldZeroDimensions = (\n dataset: Dataset,\n measures: Measure[],\n measureName: string,\n unfoldGroupName: string = UnfoldDimensionGroup,\n unfoldGroupId: string = UnfoldDimensionGroupId,\n): {\n dataset: Dataset\n unfoldInfo: UnfoldInfo\n} => {\n const unfoldInfo: UnfoldInfo = {\n groupName: unfoldGroupName,\n groupId: unfoldGroupId,\n colorItems: [],\n colorIdMap: {},\n }\n\n // 指标为空或维度为空, 则不检测\n if (measures.length === 0) {\n return {\n dataset,\n unfoldInfo: {\n groupName: unfoldGroupName,\n groupId: unfoldGroupId,\n colorItems: [],\n colorIdMap: {},\n },\n }\n }\n\n const colorItems = []\n const colorMap: Record<string, string> = {}\n for (let i = 0; i < dataset.length; i++) {\n const datum = dataset[i]\n const colorName = measureName\n const colorId = measureName\n datum[unfoldGroupName] = colorName\n datum[unfoldGroupId] = colorId\n colorItems.push(colorId)\n colorMap[colorId] = colorName\n }\n\n unfoldInfo.colorItems = unique(colorItems)\n unfoldInfo.colorIdMap = colorMap\n return {\n dataset,\n unfoldInfo,\n }\n}\n","import type { Dataset, Dimension, FoldInfo, Measure, UnfoldInfo } from 'src/types'\nimport { foldMeasures } from './foldMeasures'\nimport {\n UnfoldDimensionGroup,\n FoldMeasureId,\n FoldMeasureName,\n FoldMeasureValue,\n UnfoldDimensionGroupId,\n} from './constant'\nimport { unfoldDimensions } from './unfoldDimensions'\nimport { unfoldZeroDimensions } from './unfoldZeroDimensions'\nimport { i18n } from '../i18n'\n\nconst emptyReshapeResult: {\n dataset: Dataset\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n} = {\n dataset: [],\n foldInfo: {\n foldMap: {},\n measureId: '',\n measureName: '',\n measureValue: '',\n },\n unfoldInfo: {\n groupName: '',\n groupId: '',\n colorItems: [],\n colorIdMap: {},\n },\n}\n/**\n * 数据重塑为2个维度1个指标, 并且不根据指标名称展开出一个新维度\n * @param dataset\n * @param dimensions\n * @param measures\n * @returns\n */\nexport const dataReshapeFor2D1M0Name = (\n dataset: Dataset,\n dimensions: Dimension[],\n measures: Measure[],\n options?: {\n foldMeasureId?: string\n foldMeasureName?: string\n foldMeasureValue?: string\n unfoldDimensionGroup?: string\n unfoldDimensionGroupId?: string\n },\n): {\n dataset: Dataset\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n} => {\n const {\n foldMeasureId = FoldMeasureId,\n foldMeasureName = FoldMeasureName,\n foldMeasureValue = FoldMeasureValue,\n unfoldDimensionGroup = UnfoldDimensionGroup,\n unfoldDimensionGroupId = UnfoldDimensionGroupId,\n } = options || {}\n if (dimensions.length === 0 && measures.length === 0) {\n return emptyReshapeResult\n }\n\n // 合并所有指标为1个指标\n const { dataset: foldedDataset, foldInfo } = foldMeasures(\n dataset,\n measures,\n foldMeasureId,\n foldMeasureName,\n foldMeasureValue,\n )\n\n if (dimensions.length === 0) {\n const { dataset: finalDataset, unfoldInfo } = unfoldZeroDimensions(\n foldedDataset,\n [{ id: foldMeasureValue, alias: i18n`指标值` }],\n i18n`指标名称`,\n unfoldDimensionGroup,\n unfoldDimensionGroupId,\n )\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n } else {\n const onlyOneMeasure = measures.length === 1\n const onlyOneDimension = dimensions.length === 1\n\n const dims = [...dimensions]\n if (!onlyOneMeasure || onlyOneDimension) {\n dims.push({ id: foldMeasureName, alias: i18n`指标名称`, location: 'dimension' })\n }\n\n // 展开指定的维度为指标\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(\n foldedDataset,\n dims,\n [{ id: foldMeasureValue, alias: i18n`指标值` }],\n 1,\n unfoldDimensionGroup,\n unfoldDimensionGroupId,\n foldMeasureId,\n )\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n }\n}\n","import { dataReshapeFor2D1M } from 'src/dataReshape'\nimport type { AdvancedPipe } from 'src/types'\n\n/**\n * 数据重塑, 将任意维度、任意指标, 重塑为2个维度1个指标.\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const reshapeTo2D1M: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { dimensions, measures } = advancedVSeed\n\n if (!measures || !dimensions || !dataset) {\n return result\n }\n\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n\n const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor2D1M(dataset, dimensions, measures)\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: [\n {\n id: '2D1M',\n foldInfo,\n unfoldInfo,\n },\n ],\n dimensions,\n measures,\n }\n}\n","import { dataReshapeFor2D1M0Name } from 'src/dataReshape'\nimport type { AdvancedPipe } from 'src/types'\n\n/**\n * @description 数据重塑, 将任意维度、任意指标, 重塑为2个维度1个指标, 并且在0维度时, 合并所有指标为一个维度. 兼容折线图、面积图、雷达图只有指标, 没有维度的场景\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const reshapeTo2D1M0Name: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { dimensions, measures } = advancedVSeed\n\n if (!measures || !dimensions || !dataset) {\n return result\n }\n\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n\n const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor2D1M0Name(dataset, dimensions, measures)\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: [\n {\n id: '2D1M',\n foldInfo,\n unfoldInfo,\n },\n ],\n dimensions,\n measures,\n }\n}\n","import { dataReshapeFor1D1M } from 'src/dataReshape'\nimport type { AdvancedPipe } from 'src/types'\n\n/**\n * 数据重塑, 将任意维度、任意指标, 重塑为2个维度1个指标.\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const reshapeTo1D1M: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { dimensions, measures } = advancedVSeed\n if (!measures || !dimensions || !dataset) {\n return result\n }\n\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n\n const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor1D1M(dataset, dimensions, measures)\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: [\n {\n id: '1D1M',\n foldInfo,\n unfoldInfo,\n },\n ],\n }\n}\n","import { dataReshapeFor1D2M } from 'src/dataReshape'\nimport type { AdvancedPipe } from 'src/types'\n\n/**\n * 数据重塑, 将任意维度、任意指标, 重塑为1个维度2个指标.\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const reshapeTo1D2M: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { dimensions, measures } = advancedVSeed\n if (!measures || !dimensions || !dataset) {\n return result\n }\n\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n\n const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor1D2M(dataset, dimensions, measures)\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: [\n {\n id: '1D2M',\n foldInfo,\n unfoldInfo,\n },\n ],\n }\n}\n","import { dataReshapeFor1D } from 'src/dataReshape'\nimport type { AdvancedPipe } from 'src/types'\n\n/**\n * 数据重塑, 将任意维度、任意指标, 重塑为1个维度2个指标.\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const reshapeTo1D: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { dimensions, measures } = advancedVSeed\n if (!measures || !dimensions || !dataset) {\n return result\n }\n\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n\n const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor1D(dataset, dimensions, measures)\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: [\n {\n id: '1D2M',\n foldInfo,\n unfoldInfo,\n },\n ],\n }\n}\n","import { FoldMeasureId, FoldMeasureName, FoldMeasureValue, UnfoldDimensionGroup } from 'src/dataReshape/constant'\nimport { dataReshapeFor2D1M } from 'src/dataReshape'\nimport type { AdvancedPipe, Dataset, DatasetReshapeInfo, Dimensions, DimensionGroup } from 'src/types'\n\n/**\n * 数据重塑为透视结构, 如果存在指标分组, 则将数据按组划分. 如果存在行列维度, 则生成行列树结构.\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const pivotReshapeTo2D1M: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { measures } = advancedVSeed\n const dimensions = advancedVSeed.dimensions as Dimensions\n\n if (!measures || !dimensions) {\n return result\n }\n\n const measureGroups: DimensionGroup[] = []\n if (measures) {\n measures.forEach((measure: DimensionGroup) => {\n if (measure.children && measure.children.length > 0) {\n measureGroups.push(measure)\n }\n })\n }\n const commonDimensions = dimensions.filter((dim) => dim.location === 'dimension')\n\n const newDatasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n measureGroups.forEach((measureGroup) => {\n const measures = measureGroup.children\n if (!measures) {\n return\n }\n const groupId = measureGroup.id\n const {\n dataset: newSubDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeFor2D1M(dataset, commonDimensions, measures, {\n foldMeasureId: FoldMeasureId,\n foldMeasureName: FoldMeasureName,\n foldMeasureValue: FoldMeasureValue + groupId,\n unfoldDimensionGroup: UnfoldDimensionGroup,\n })\n const reshapeInfo = {\n id: groupId,\n foldInfo,\n unfoldInfo,\n }\n newDatasets.push(newSubDataset)\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n","import { FoldMeasureId, FoldMeasureName, FoldMeasureValue, UnfoldDimensionGroup } from 'src/dataReshape/constant'\nimport { dataReshapeFor2D1M0Name } from 'src/dataReshape'\nimport type { AdvancedPipe, Dataset, DatasetReshapeInfo, Dimensions, DimensionGroup } from 'src/types'\n\n/**\n * @description 数据重塑为透视结构, 如果存在指标分组, 则将数据按组划分. 如果存在行列维度, 则生成行列树结构. 并且在0维度时, 合并所有指标为一个维度. 兼容折线图、面积图、雷达图只有指标, 没有维度的场景\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const pivotReshapeTo2D1M0Name: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { measures } = advancedVSeed\n const dimensions = advancedVSeed.dimensions as Dimensions\n\n if (!measures || !dimensions) {\n return result\n }\n\n const measureGroups: DimensionGroup[] = []\n if (measures) {\n measures.forEach((measure: DimensionGroup) => {\n if (measure.children && measure.children.length > 0) {\n measureGroups.push(measure)\n }\n })\n }\n const commonDimensions = dimensions.filter((dim) => dim.location === 'dimension')\n\n const newDatasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n measureGroups.forEach((measureGroup) => {\n const measures = measureGroup.children\n if (!measures) {\n return\n }\n const groupId = measureGroup.id\n const {\n dataset: newSubDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeFor2D1M0Name(dataset, commonDimensions, measures, {\n foldMeasureId: FoldMeasureId,\n foldMeasureName: FoldMeasureName,\n foldMeasureValue: FoldMeasureValue + groupId,\n unfoldDimensionGroup: UnfoldDimensionGroup,\n })\n const reshapeInfo = {\n id: groupId,\n foldInfo,\n unfoldInfo,\n }\n newDatasets.push(newSubDataset)\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n","import { FoldMeasureId, FoldMeasureName, FoldMeasureValue, UnfoldDimensionGroup } from 'src/dataReshape/constant'\nimport { dataReshapeFor1D1M } from 'src/dataReshape'\nimport type { AdvancedPipe, Dataset, DatasetReshapeInfo, Dimensions, DimensionGroup } from 'src/types'\n\n/**\n * 数据重塑为透视结构, 如果存在指标分组, 则将数据按组划分. 如果存在行列维度, 则生成行列树结构.\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const pivotReshapeTo1D1M: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { measures } = advancedVSeed\n const dimensions = advancedVSeed.dimensions as Dimensions\n\n if (!measures || !dimensions) {\n return result\n }\n\n const measureGroups: DimensionGroup[] = []\n if (measures) {\n measures.forEach((measure: DimensionGroup) => {\n if (measure.children && measure.children.length > 0) {\n measureGroups.push(measure)\n }\n })\n }\n const newDatasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n measureGroups.forEach((measureGroup) => {\n const measures = measureGroup.children\n if (!measures) {\n return\n }\n\n const commonDimensions = dimensions.filter((dim) => dim.location === 'dimension')\n const groupId = measureGroup.id\n const {\n dataset: newSubDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeFor1D1M(dataset, commonDimensions, measures, {\n foldMeasureId: FoldMeasureId,\n foldMeasureName: FoldMeasureName,\n foldMeasureValue: FoldMeasureValue + groupId,\n unfoldDimensionGroup: UnfoldDimensionGroup,\n })\n const reshapeInfo = {\n id: groupId,\n foldInfo,\n unfoldInfo,\n }\n newDatasets.push(newSubDataset)\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n","import { FoldMeasureId, FoldMeasureName, FoldMeasureValue, UnfoldDimensionGroup } from 'src/dataReshape/constant'\nimport { dataReshapeFor1D2M } from 'src/dataReshape'\nimport type { AdvancedPipe, Dataset, DatasetReshapeInfo, Dimensions, DimensionGroup } from 'src/types'\n\n/**\n * 数据重塑为透视结构, 如果存在指标分组, 则将数据按组划分. 如果存在行列维度, 则生成行列树结构.\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const pivotReshapeTo1D2M: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { measures } = advancedVSeed\n const dimensions = advancedVSeed.dimensions as Dimensions\n\n if (!measures || !dimensions) {\n return result\n }\n\n const measureGroups: DimensionGroup[] = []\n if (measures) {\n measures.forEach((measure: DimensionGroup) => {\n if (measure.children && measure.children.length > 0) {\n measureGroups.push(measure)\n }\n })\n }\n const newDatasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n measureGroups.forEach((measureGroup) => {\n const measures = measureGroup.children\n if (!measures) {\n return\n }\n\n const commonDimensions = dimensions.filter((dim) => dim.location === 'dimension')\n const groupId = measureGroup.id\n const {\n dataset: newSubDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeFor1D2M(dataset, commonDimensions, measures, {\n foldMeasureId: FoldMeasureId,\n foldMeasureName: FoldMeasureName,\n foldMeasureValue: FoldMeasureValue + groupId,\n unfoldDimensionGroup: UnfoldDimensionGroup,\n })\n const reshapeInfo = {\n id: groupId,\n foldInfo,\n unfoldInfo,\n }\n newDatasets.push(newSubDataset)\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n","import { FoldMeasureId, FoldMeasureName, FoldMeasureValue, UnfoldDimensionGroup } from 'src/dataReshape/constant'\nimport { dataReshapeFor1D } from 'src/dataReshape'\nimport type { AdvancedPipe, Dataset, DatasetReshapeInfo, Dimensions, DimensionGroup } from 'src/types'\n\n/**\n * 数据重塑为透视结构, 如果存在指标分组, 则将数据按组划分\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const pivotReshapeTo1D: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { measures } = advancedVSeed\n const dimensions = advancedVSeed.dimensions as Dimensions\n\n if (!measures || !dimensions) {\n return result\n }\n\n const measureGroups: DimensionGroup[] = []\n if (measures) {\n measures.forEach((measure: DimensionGroup) => {\n if (measure.children && measure.children.length > 0) {\n measureGroups.push(measure)\n }\n })\n }\n const newDatasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n measureGroups.forEach((measureGroup) => {\n const measures = measureGroup.children\n if (!measures) {\n return\n }\n\n const commonDimensions = dimensions.filter((dim) => dim.location === 'dimension')\n const groupId = measureGroup.id\n const {\n dataset: newSubDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeFor1D(dataset, commonDimensions, measures, {\n foldMeasureId: FoldMeasureId,\n foldMeasureName: FoldMeasureName,\n foldMeasureValue: FoldMeasureValue + groupId,\n unfoldDimensionGroup: UnfoldDimensionGroup,\n })\n const reshapeInfo = {\n id: groupId,\n foldInfo,\n unfoldInfo,\n }\n newDatasets.push(newSubDataset)\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n","import type { AdvancedPipe, Dimensions } from 'src/types'\nimport type { Encoding } from 'src/types'\n\nexport const encodingXY: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const { datasetReshapeInfo, dimensions } = advancedVSeed\n if (!datasetReshapeInfo || !dimensions) {\n return result\n }\n\n const xDimension = (dimensions as Dimensions).find(\n (item) => item.location !== 'rowDimension' && item.location !== 'columnDimension',\n )\n\n const isZeroDimension = dimensions.length === 0\n\n const encoding = datasetReshapeInfo.reduce<Encoding>((prev, cur) => {\n const { foldInfo, unfoldInfo } = cur\n\n const x = [isZeroDimension ? foldInfo.measureName : xDimension?.id]\n const y = [foldInfo.measureValue]\n const group = [unfoldInfo.groupId]\n const color = [foldInfo.measureName]\n\n return [\n ...prev,\n {\n x,\n y,\n group,\n color,\n },\n ] as Encoding\n }, [])\n\n return {\n ...result,\n encoding,\n }\n}\n","import type { AdvancedPipe, Dimensions } from 'src/types'\nimport type { Encoding } from 'src/types'\n\nexport const encodingYX: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const { datasetReshapeInfo, dimensions } = advancedVSeed\n if (!datasetReshapeInfo || !dimensions) {\n return result\n }\n\n const yDimension = (dimensions as Dimensions).find(\n (item) => item.location !== 'rowDimension' && item.location !== 'columnDimension',\n )\n\n const isZeroDimension = dimensions.length === 0\n\n const encoding = datasetReshapeInfo.reduce<Encoding>((prev, cur) => {\n const { foldInfo, unfoldInfo } = cur\n\n const y = [isZeroDimension ? foldInfo.measureName : yDimension?.id]\n const x = [foldInfo.measureValue]\n const group = [unfoldInfo.groupId]\n const color = [foldInfo.measureName]\n\n return [\n ...prev,\n {\n x,\n y,\n group,\n color,\n },\n ] as Encoding\n }, [])\n\n return {\n ...result,\n encoding,\n }\n}\n","import { findFirstMeasure } from 'src/pipeline/utils'\nimport type { AdvancedPipe } from 'src/types'\nimport type { Encoding } from 'src/types'\n\nexport const encodingYY: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const { datasetReshapeInfo, measures } = advancedVSeed\n if (!datasetReshapeInfo || !measures) {\n return result\n }\n\n const firstMeasure = findFirstMeasure(measures)\n const encoding = datasetReshapeInfo.reduce<Encoding>((prev, cur) => {\n const { foldInfo, unfoldInfo } = cur\n\n const x = [firstMeasure?.id]\n const y = [foldInfo.measureValue]\n const group = [unfoldInfo.groupId]\n const color = [unfoldInfo.groupId]\n\n return [\n ...prev,\n {\n x,\n y,\n group,\n color,\n },\n ] as Encoding\n }, [])\n\n return {\n ...result,\n encoding,\n }\n}\n","import type { AdvancedPipe } from 'src/types'\nimport type { Encoding } from 'src/types'\n\nexport const encodingXYY: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const { datasetReshapeInfo, dimensions, measures } = advancedVSeed\n if (!datasetReshapeInfo || !dimensions || !measures) {\n return result\n }\n\n const encoding = datasetReshapeInfo.reduce<Encoding>((prev, cur, index) => {\n const measure = measures[index]\n if ('children' in measure) {\n const m1 = measure.children?.[0]\n const m2 = measure.children?.[1] || m1\n const { foldInfo, unfoldInfo } = cur\n\n const x = [unfoldInfo.groupId]\n const y = [m1?.id, m2?.id]\n const group = [unfoldInfo.groupId]\n const color = [foldInfo.measureName]\n\n return [\n ...prev,\n {\n x,\n y,\n group,\n color,\n },\n ] as Encoding\n } else {\n const m1 = measures[index]\n const m2 = measures[index + 1] || m1\n const { foldInfo, unfoldInfo } = cur\n\n const x = [unfoldInfo.groupId]\n const y = [m1.id, m2.id]\n const group = [unfoldInfo.groupId]\n const color = [foldInfo.measureName]\n\n return [\n ...prev,\n {\n x,\n y,\n group,\n color,\n },\n ] as Encoding\n }\n }, [])\n\n return {\n ...result,\n encoding,\n }\n}\n","import type { AdvancedPipe, Dimensions } from 'src/types'\nimport type { Encoding } from 'src/types'\n\nexport const encodingRose: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const { datasetReshapeInfo, dimensions, measures } = advancedVSeed\n if (!datasetReshapeInfo || !dimensions || !measures) {\n return result\n }\n\n const angleDimension = (dimensions as Dimensions).find(\n (item) => item.location !== 'rowDimension' && item.location !== 'columnDimension',\n )\n\n const is1D1M = dimensions.length === 1 && measures.length === 1\n const isZeroDimension = dimensions.length === 0\n\n const encoding = datasetReshapeInfo.reduce<Encoding>((prev, cur) => {\n const { foldInfo, unfoldInfo } = cur\n\n const radius = [foldInfo.measureValue]\n const angle = [isZeroDimension ? foldInfo.measureName : angleDimension?.id]\n const group = [is1D1M ? angleDimension?.id : unfoldInfo.groupId]\n const color = [is1D1M ? angleDimension?.id : unfoldInfo.groupId]\n\n return [\n ...prev,\n {\n angle,\n radius,\n group,\n color,\n },\n ] as Encoding\n }, [])\n\n return {\n ...result,\n encoding,\n }\n}\n","import type { AdvancedPipe } from 'src/types'\nimport type { Encoding } from 'src/types'\n\nexport const encodingPie: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const { datasetReshapeInfo, dimensions } = advancedVSeed\n if (!datasetReshapeInfo || !dimensions) {\n return result\n }\n\n const encoding = datasetReshapeInfo.reduce<Encoding>((prev, cur) => {\n const { foldInfo, unfoldInfo } = cur\n\n const radius = [foldInfo.measureValue]\n const angle = [unfoldInfo.groupId]\n const group = [unfoldInfo.groupId]\n const color = [unfoldInfo.groupId]\n\n return [\n ...prev,\n {\n angle,\n radius,\n group,\n color,\n },\n ] as Encoding\n }, [])\n\n return {\n ...result,\n encoding,\n }\n}\n","import type { AdvancedPipe, Dimensions } from 'src/types'\nimport type { Encoding } from 'src/types'\n\nexport const encodingAR: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const { datasetReshapeInfo, dimensions, measures } = advancedVSeed\n if (!datasetReshapeInfo || !dimensions || !measures) {\n return result\n }\n\n const angleDimension = (dimensions as Dimensions).find(\n (item) => item.location !== 'rowDimension' && item.location !== 'columnDimension',\n )\n\n const isZeroDimension = dimensions.length === 0\n\n const encoding = datasetReshapeInfo.reduce<Encoding>((prev, cur) => {\n const { foldInfo, unfoldInfo } = cur\n\n const angle = [isZeroDimension ? foldInfo.measureName : angleDimension?.id]\n const radius = [foldInfo.measureValue]\n const group = [unfoldInfo.groupId]\n const color = [unfoldInfo.groupId]\n\n return [\n ...prev,\n {\n angle,\n radius,\n group,\n color,\n },\n ] as Encoding\n }, [])\n\n return {\n ...result,\n encoding,\n }\n}\n","import type { AdvancedPipe } from 'src/types'\nimport type { Encoding } from 'src/types'\n\nexport const encodingFunnel: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const { datasetReshapeInfo, dimensions } = advancedVSeed\n if (!datasetReshapeInfo || !dimensions) {\n return result\n }\n\n const encoding = datasetReshapeInfo.reduce<Encoding>((prev, cur) => {\n const { foldInfo, unfoldInfo } = cur\n\n const size = [foldInfo.measureValue]\n const group = [unfoldInfo.groupId]\n const color = [foldInfo.measureValue]\n\n return [\n ...prev,\n {\n size,\n group,\n color,\n },\n ] as Encoding\n }, [])\n\n return {\n ...result,\n encoding,\n }\n}\n","import { pick } from 'remeda'\nimport type { AdvancedPipe, AdvancedVSeed, Config } from 'src/types'\n\nexport const lineConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const config = pick(vseed, [\n 'backgroundColor',\n 'color',\n 'label',\n 'legend',\n 'tooltip',\n 'xAxis',\n 'yAxis',\n 'crosshairLine',\n ]) as Config['line']\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n\nexport const columnConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const config = pick(vseed, [\n 'backgroundColor',\n 'color',\n 'label',\n 'legend',\n 'tooltip',\n 'xAxis',\n 'yAxis',\n 'crosshairRect',\n 'stackCornerRadius',\n ]) as Config['column']\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n\nexport const pieConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n const config = pick(vseed, ['backgroundColor', 'color', 'label', 'legend', 'tooltip']) as Config['pie']\n\n result.config = {\n ...(result.config || {}),\n [chartType]: {\n ...config,\n },\n }\n\n return result as AdvancedVSeed\n}\n\nexport const areaConfig: AdvancedPipe = lineConfig\nexport const areaPercentConfig: AdvancedPipe = lineConfig\nexport const scatterConfig: AdvancedPipe = lineConfig\n\nexport const barConfig: AdvancedPipe = columnConfig\nexport const barParallelConfig: AdvancedPipe = columnConfig\nexport const barPercentConfig: AdvancedPipe = columnConfig\nexport const columnParallelConfig: AdvancedPipe = columnConfig\nexport const columnPercentConfig: AdvancedPipe = columnConfig\n\nexport const donutConfig: AdvancedPipe = pieConfig\nexport const roseConfig: AdvancedPipe = pieConfig\nexport const roseParallelConfig: AdvancedPipe = pieConfig\nexport const funnelConfig: AdvancedPipe = pieConfig\nexport const heatmapConfig: AdvancedPipe = pieConfig\nexport const radarConfig: AdvancedPipe = pieConfig","import { clone, mergeDeep, omit } 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 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","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 { pick } from 'remeda'\nimport type { AdvancedPipe, AdvancedVSeed } from 'src/types'\n\nexport const markStyle: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n\n const markStyle = pick(vseed, ['barStyle', 'pointStyle', 'lineStyle', 'areaStyle']) as AdvancedVSeed['markStyle']\n\n return { ...advancedVSeed, markStyle }\n}\n","import { pick } from 'remeda'\nimport type { AdvancedPipe, AdvancedVSeed } from 'src/types'\n\nexport const annotation: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const annotation = pick(vseed, [\n 'annotationPoint',\n 'annotationHorizontalLine',\n 'annotationVerticalLine',\n 'annotationArea',\n ]) as AdvancedVSeed['annotation']\n\n return { ...advancedVSeed, annotation }\n}\n","import { sort, unique } from 'remeda'\nimport { ORIGINAL_DATA } from 'src/dataReshape'\nimport type { AdvancedPipe, Dataset, Datum, Line, SortAxis, SortLegend } from 'src/types'\n\nexport const sortXBandAxis: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { sortAxis, dataset } = vseed as Line\n const { encoding } = advancedVSeed\n const xField = encoding?.[0]?.x?.[0]\n if (!sortAxis || !xField) {\n return advancedVSeed\n }\n if (!result.analysis) result.analysis = {}\n if (!result.analysis.orderMapping) result.analysis.orderMapping = {}\n\n const axisOrderResult = calcOrder(sortAxis, xField, dataset)\n\n result.analysis.orderMapping[xField] = axisOrderResult\n\n return result\n}\n\nexport const sortYBandAxis: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { sortAxis, dataset } = vseed as Line\n const { encoding } = advancedVSeed\n const yField = encoding?.[0]?.y?.[0]\n if (!sortAxis || !yField) {\n return advancedVSeed\n }\n if (!result.analysis) result.analysis = {}\n if (!result.analysis.orderMapping) result.analysis.orderMapping = {}\n\n const axisOrderResult = calcOrder(sortAxis, yField, dataset)\n\n result.analysis.orderMapping[yField] = axisOrderResult\n\n return result\n}\n\nexport const sortLegend: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { sortLegend } = vseed as Line\n const { datasetReshapeInfo } = advancedVSeed\n const groupField = datasetReshapeInfo?.[0]?.unfoldInfo?.groupId\n const colorIdMap = datasetReshapeInfo?.[0]?.unfoldInfo?.colorIdMap\n const colorItems = datasetReshapeInfo?.[0]?.unfoldInfo?.colorItems\n if (!sortLegend || !groupField || !colorIdMap || !colorItems) {\n return advancedVSeed\n }\n\n if (!result.analysis) result.analysis = {}\n if (!result.analysis.orderMapping) result.analysis.orderMapping = {}\n\n if (sortLegend.customOrder) {\n const nameMap = Object.keys(colorIdMap).reduce<Record<string, string>>((pre, cur) => {\n pre[colorIdMap[cur]] = cur\n return pre\n }, {})\n\n // 先根据名称匹配, 若名称不存在, 则根据id匹配, 从而兼容名称和id的两种情况\n const orderRes = sortLegend.customOrder.map((itemNameOrId) =>\n nameMap[itemNameOrId] ? nameMap[itemNameOrId] : itemNameOrId,\n )\n result.analysis.orderMapping[groupField] = orderRes\n return result\n }\n\n const dataset = advancedVSeed.dataset?.flat(2)\n\n const orderRes = calcOrder(sortLegend, groupField, dataset || [])\n result.analysis.orderMapping[groupField] = orderRes\n\n return result\n}\n\nconst calcOrder = (sortAxis: SortAxis | SortLegend, id: string, dataset: Dataset): string[] => {\n if (sortAxis.customOrder) {\n return sortAxis.customOrder\n }\n\n const order = sortAxis.order || 'asc'\n const orderBy = sortAxis.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 type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n encodingXY,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n lineConfig,\n annotation,\n markStyle,\n sortXBandAxis,\n sortLegend,\n reshapeTo2D1M0Name,\n pivotReshapeTo2D1M0Name,\n} from '../pipes'\n\nexport const lineAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M0Name], [pivotReshapeTo2D1M0Name]),\n encodingXY,\n sortXBandAxis,\n sortLegend,\n lineConfig,\n theme,\n markStyle,\n annotation\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n encodingYX,\n theme,\n autoMeasures,\n autoDimensions,\n reshapeTo2D1M,\n pivotReshapeTo2D1M,\n pivotAdapter,\n barConfig,\n markStyle,\n annotation,\n sortYBandAxis,\n sortLegend,\n} from '../pipes'\n\nexport const barAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingYX,\n sortYBandAxis,\n sortLegend,\n barConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n encodingYX,\n initAdvancedVSeed,\n reshapeTo2D1M,\n theme,\n pivotAdapter,\n pivotReshapeTo2D1M,\n barParallelConfig,\n markStyle,\n annotation,\n sortYBandAxis,\n sortLegend,\n} from '../pipes'\n\nexport const barParallelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingYX,\n sortYBandAxis,\n sortLegend,\n barParallelConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n encodingYX,\n initAdvancedVSeed,\n reshapeTo2D1M,\n theme,\n pivotAdapter,\n pivotReshapeTo2D1M,\n barPercentConfig,\n markStyle,\n annotation,\n sortYBandAxis,\n sortLegend,\n} from '../pipes'\n\nexport const barPercentAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingYX,\n sortYBandAxis,\n sortLegend,\n barPercentConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n encodingXY,\n initAdvancedVSeed,\n reshapeTo2D1M,\n theme,\n pivotAdapter,\n columnConfig,\n markStyle,\n annotation,\n pivotReshapeTo2D1M,\n sortXBandAxis,\n sortLegend,\n} from '../pipes'\n\nexport const columnAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingXY,\n sortXBandAxis,\n sortLegend,\n columnConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n encodingXY,\n initAdvancedVSeed,\n reshapeTo2D1M,\n theme,\n pivotAdapter,\n pivotReshapeTo2D1M,\n columnParallelConfig,\n markStyle,\n annotation,\n sortXBandAxis,\n sortLegend,\n} from '../pipes'\n\nexport const columnParallelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingXY,\n sortXBandAxis,\n sortLegend,\n columnParallelConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n encodingXY,\n initAdvancedVSeed,\n theme,\n reshapeTo2D1M,\n pivotReshapeTo2D1M,\n pivotAdapter,\n columnPercentConfig,\n markStyle,\n annotation,\n sortXBandAxis,\n sortLegend,\n} from '../pipes'\n\nexport const columnPercentAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingXY,\n sortXBandAxis,\n sortLegend,\n columnPercentConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n encodingXY,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n areaConfig,\n annotation,\n markStyle,\n sortXBandAxis,\n sortLegend,\n reshapeTo2D1M0Name,\n pivotReshapeTo2D1M0Name,\n} from '../pipes'\n\nexport const areaAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M0Name], [pivotReshapeTo2D1M0Name]),\n encodingXY,\n sortXBandAxis,\n sortLegend,\n areaConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n encodingXY,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n areaPercentConfig,\n annotation,\n markStyle,\n sortXBandAxis,\n sortLegend,\n reshapeTo2D1M0Name,\n pivotReshapeTo2D1M0Name,\n} from '../pipes'\n\nexport const areaPercentAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M0Name], [pivotReshapeTo2D1M0Name]),\n encodingXY,\n sortXBandAxis,\n sortLegend,\n areaPercentConfig,\n theme,\n markStyle,\n annotation\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n areaConfig,\n annotation,\n sortXBandAxis,\n autoMeasuresBy2M1Group,\n encodingXYY,\n reshapeTo1D,\n pivotReshapeTo1D,\n markStyle,\n} from '../pipes'\n\nexport const areaRangeAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasuresBy2M1Group,\n autoDimensions,\n pivotAdapter([reshapeTo1D], [pivotReshapeTo1D]),\n encodingXYY,\n sortXBandAxis,\n areaConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n reshapeTo1D1M,\n pivotReshapeTo1D1M,\n encodingPie,\n pieConfig,\n annotation,\n} from '../pipes'\n\nexport const pieAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo1D1M], [pivotReshapeTo1D1M]),\n encodingPie,\n pieConfig,\n theme,\n annotation\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n reshapeTo1D1M,\n pivotReshapeTo1D1M,\n encodingPie,\n annotation,\n donutConfig,\n} from '../pipes'\n\nexport const donutAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo1D1M], [pivotReshapeTo1D1M]),\n encodingPie,\n donutConfig,\n theme,\n annotation\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n initAdvancedVSeed,\n reshapeTo2D1M,\n theme,\n pivotAdapter,\n markStyle,\n annotation,\n roseConfig,\n encodingRose,\n pivotReshapeTo2D1M,\n} from '../pipes'\n\nexport const roseAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingRose,\n roseConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n initAdvancedVSeed,\n reshapeTo2D1M,\n theme,\n pivotAdapter,\n pivotReshapeTo2D1M,\n markStyle,\n annotation,\n roseParallelConfig,\n encodingRose,\n} from '../pipes'\n\nexport const roseParallelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingRose,\n roseParallelConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n reshapeTo1D1M,\n pivotReshapeTo1D1M,\n annotation,\n encodingFunnel,\n funnelConfig,\n} from '../pipes'\n\nexport const funnelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo1D1M], [pivotReshapeTo1D1M]),\n encodingFunnel,\n funnelConfig,\n theme,\n annotation,\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n annotation,\n markStyle,\n scatterConfig,\n reshapeTo1D2M,\n pivotReshapeTo1D2M,\n encodingYY,\n} from '../pipes'\n\nexport const scatterAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo1D2M], [pivotReshapeTo1D2M]),\n encodingYY,\n scatterConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { AdvancedPipe, Dimensions } from 'src/types'\nimport type { Encoding } from 'src/types'\n\nexport const encodingMatrix: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const { datasetReshapeInfo, dimensions } = advancedVSeed\n if (!datasetReshapeInfo || !dimensions) {\n return result\n }\n\n const xDimension = (dimensions as Dimensions).find(\n (item) => item.location !== 'rowDimension' && item.location !== 'columnDimension',\n )\n\n const isZeroDimension = dimensions.length === 0\n\n const encoding = datasetReshapeInfo.reduce<Encoding>((prev, cur) => {\n const { foldInfo, unfoldInfo } = cur\n\n const x = [isZeroDimension ? foldInfo.measureName : xDimension?.id]\n const y = [unfoldInfo.groupName]\n const color = [foldInfo.measureValue]\n\n return [\n ...prev,\n {\n x,\n y,\n color,\n },\n ] as Encoding\n }, [])\n\n return {\n ...result,\n encoding,\n }\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n initAdvancedVSeed,\n reshapeTo2D1M,\n theme,\n pivotAdapter,\n pivotReshapeTo2D1M,\n annotation,\n markStyle,\n sortXBandAxis,\n heatmapConfig,\n} from '../pipes'\nimport { encodingMatrix } from '../pipes/encoding/encodingMatrix'\n\nexport const heatmapAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingMatrix,\n sortXBandAxis,\n heatmapConfig,\n theme,\n markStyle,\n annotation\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n initAdvancedVSeed,\n theme,\n pivotAdapter,\n annotation,\n markStyle,\n sortLegend,\n radarConfig,\n encodingAR,\n reshapeTo2D1M0Name,\n pivotReshapeTo2D1M0Name,\n} from '../pipes'\n\nexport const radarAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M0Name], [pivotReshapeTo2D1M0Name]),\n encodingAR,\n // sortXBandAxis,\n sortLegend,\n radarConfig,\n theme,\n markStyle,\n annotation,\n]\n","import type { AdvancedPipe, Datum } from 'src/types'\n\nexport const autoMeasures: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { measures, dataset } = vseed\n\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return result\n }\n\n if (measures && measures.length > 0) {\n result.measures = measures\n return result\n }\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n result.measures = Object.keys(sample)\n .filter((key) => {\n return top100dataset.some((item) => typeof item[key] === 'number') && !['', null, undefined].includes(key)\n })\n .map((measure) => ({\n id: measure,\n alias: measure,\n }))\n\n return result\n}\n","import { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Datum } from 'src/types'\n\nexport const autoDimensions: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dimensions, dataset } = vseed\n\n const measures = findAllMeasures(advancedVSeed.measures)\n\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return result\n }\n\n if (dimensions && dimensions.length > 0) {\n result.dimensions = dimensions\n return result\n }\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n result.dimensions = Object.keys(sample)\n .filter(\n (key) =>\n top100dataset.some((item) => typeof item[key] === 'string') &&\n !['', null, undefined].includes(key) &&\n !measures.some((measure) => measure.id === key),\n )\n .map((dim) => ({\n id: dim,\n alias: dim,\n location: 'dimension',\n }))\n\n return result\n}\n","import { findAllDimensions, findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Datum, Dimensions, Measures } from 'src/types'\n\nexport const autoPivotDimensions: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dimensions, dataset } = vseed\n\n const measures = findAllMeasures(advancedVSeed.measures as Measures)\n\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return result\n }\n\n if (dimensions && dimensions.length > 0) {\n const newDimensions = findAllDimensions(dimensions) as Dimensions\n result.dimensions = newDimensions.map((item, index) => {\n if (item.location === 'rowDimension' || item.location === 'columnDimension') {\n return item\n }\n return {\n ...item,\n location: index % 2 === 0 ? 'columnDimension' : 'rowDimension',\n }\n }) as Dimensions\n\n return result\n }\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n let i = 0\n result.dimensions = Object.keys(sample)\n .filter(\n (key) =>\n top100dataset.some((item) => typeof item[key] === 'string') &&\n !['', null, undefined].includes(key) &&\n !measures.some((measure) => measure.id === key),\n )\n .map((dim) => ({\n id: dim,\n alias: dim,\n location: i++ % 2 === 0 ? 'columnDimension' : 'rowDimension',\n })) as Dimensions\n\n return result\n}\n","import { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Datum, Measures } from 'src/types'\n\nexport const autoPivotMeasures: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const measures = findAllMeasures(vseed.measures as Measures)\n\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return result\n }\n\n if (measures && measures.length > 0) {\n result.measures = findAllMeasures(measures)\n return result\n }\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n result.measures = Object.keys(sample)\n .filter((key) => {\n return top100dataset.some((item) => typeof item[key] === 'number') && !['', null, undefined].includes(key)\n })\n .map((measure) => ({\n id: measure,\n alias: measure,\n }))\n\n return result\n}\n","import type { AdvancedPipe, AdvancedVSeed } from 'src/types'\n\nexport const initAdvancedVSeed: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType, locale } = vseed\n return {\n ...advancedVSeed,\n chartType,\n locale: locale || 'zh-CN',\n } as AdvancedVSeed\n}\n","import type { AdvancedPipe } 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 type { AdvancedPipeline } from 'src/types'\nimport { theme } from '../../chart/pipes'\nimport { autoPivotDimensions, autoPivotMeasures, initAdvancedVSeed, records } from '../pipes'\n\nexport const pivotTableAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoPivotMeasures,\n autoPivotDimensions,\n records,\n theme,\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport { initAdvancedVSeed, autoDimensions, autoMeasures, records } from '../pipes'\nimport { theme } from '../../chart/pipes'\n\nexport const tableAdvancedPipeline: AdvancedPipeline = [initAdvancedVSeed, autoMeasures, autoDimensions, records, theme]\n","import type { ISpec } from '@visactor/vchart'\nimport { isPivotChart } from 'src/pipeline/utils'\nimport type { SpecPipe } from 'src/types'\n\nexport const datasetYX: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { encoding, analysis, datasetReshapeInfo } = advancedVSeed\n const { orderMapping = {} } = analysis ?? {}\n const angle = encoding[0]?.angle?.[0]\n const y = encoding[0]?.y?.[0]\n const group = encoding[0]?.group?.[0]\n const id = datasetReshapeInfo[0].id\n\n const fields: Record<string, object> = {}\n if (angle) {\n fields[angle] = {\n sortIndex: 0,\n }\n }\n if (y) {\n const order = orderMapping[y]\n if (order) {\n fields[y] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[y] = {\n sortIndex: 0,\n }\n }\n }\n if (group) {\n const order = orderMapping[group]\n if (order) {\n fields[group] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[group] = {\n sortIndex: 0,\n }\n }\n }\n\n return {\n ...spec,\n data: {\n id,\n // 透视表不使用 dataValues\n values: isPivotChart(vseed) ? undefined : advancedVSeed.dataset,\n fields: fields,\n },\n } as ISpec\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { isPivotChart } from 'src/pipeline/utils'\nimport type { SpecPipe } from 'src/types'\n\nexport const datasetXY: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { encoding, analysis, datasetReshapeInfo } = advancedVSeed\n const { orderMapping = {} } = analysis ?? {}\n const angle = encoding[0]?.angle?.[0]\n const x = encoding[0]?.x?.[0]\n const group = encoding[0]?.group?.[0]\n const id = datasetReshapeInfo[0].id\n\n const fields: Record<string, object> = {}\n if (angle) {\n fields[angle] = {\n sortIndex: 0,\n }\n }\n if (x) {\n const order = orderMapping[x]\n if (order) {\n fields[x] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[x] = {\n sortIndex: 0,\n }\n }\n }\n\n if (group) {\n const order = orderMapping[group]\n if (order) {\n fields[group] = {\n sortIndex: 0,\n domain: order,\n lockStatisticsByDomain: true,\n }\n } else {\n fields[group] = {\n sortIndex: 0,\n }\n }\n }\n\n return {\n ...spec,\n data: {\n id,\n // 透视表不使用 dataValues\n values: isPivotChart(vseed) ? undefined : advancedVSeed.dataset,\n fields: fields,\n },\n } as ISpec\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { SpecPipe } from 'src/types'\n\nexport const datasetPivot: SpecPipe = (spec, context) => {\n const result = { ...spec } as PivotChartConstructorOptions\n const { advancedVSeed } = context\n const { dataset, datasetReshapeInfo } = advancedVSeed\n const records = dataset.reduce((pre, cur, index) => {\n const id = datasetReshapeInfo[index].id\n pre[id] = cur\n return pre\n }, {})\n return {\n ...result,\n records: records,\n } as PivotChartConstructorOptions\n}\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const progressive: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed } = context\n const { dataset } = advancedVSeed\n const size = dataset.length\n\n if (size < 5000) {\n return result\n }\n\n result.large = true\n result.largeThreshold = 5000\n result.progressiveStep = 400\n result.progressiveThreshold = 8000\n\n return result\n}\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initColumn: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n\n result.type = 'bar'\n result.direction = 'vertical'\n result.xField = encoding[0].x[0]\n result.yField = encoding[0].y[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initBar: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n\n result.type = 'bar'\n result.direction = 'horizontal'\n result.yField = encoding[0].y?.[0]\n result.xField = encoding[0].x?.[0]\n result.seriesField = encoding[0].group?.[0]\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initBarParallel: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { encoding, datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n\n result.type = 'bar'\n result.direction = 'horizontal'\n result.yField = [encoding[0].y[0], unfoldInfo.groupId] as string[]\n result.xField = encoding[0].x[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { IAreaChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initArea: SpecPipe = (spec, context) => {\n const result = { ...spec } as IAreaChartSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n\n result.type = 'area'\n result.direction = 'vertical'\n result.xField = encoding[0].x[0]\n result.yField = encoding[0].y[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { ILineSeriesSpec, IRangeAreaSeriesSpec } from '@visactor/vchart'\nimport type { Color, SpecPipe } from 'src/types'\n\nexport const initAreaRange: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRangeAreaSeriesSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n const { color } = advancedVSeed.config.areaRange as {\n color: Color\n }\n\n result.type = 'rangeArea'\n result.direction = 'vertical'\n result.stack = false\n result.xField = encoding[0].x[0]\n result.yField = [encoding[0].y[0], encoding[0].y[1]]\n\n result.animation = true\n result.area = {\n style: {\n fill: color.colorScheme?.[0],\n },\n }\n\n return result\n}\n\nexport const initAreaRangeLine1: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineSeriesSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n const { color } = advancedVSeed.config.areaRange as {\n color: Color\n }\n result.type = 'line'\n result.direction = 'vertical'\n result.stack = false\n result.xField = encoding[0].x[0]\n result.yField = [encoding[0].y[0]]\n\n result.animation = true\n result.line = {\n style: {\n stroke: color.colorScheme?.[0],\n },\n }\n result.point = {\n style: {\n visible: false,\n fill: color.colorScheme?.[0],\n },\n }\n return result\n}\n\nexport const initAreaRangeLine2: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineSeriesSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n const { color } = advancedVSeed.config.areaRange as {\n color: Color\n }\n result.type = 'line'\n result.direction = 'vertical'\n result.stack = false\n result.xField = encoding[0].x[0]\n result.yField = [encoding[0].y[1]]\n\n result.animation = true\n result.line = {\n style: {\n stroke: color.colorScheme?.[0],\n },\n }\n result.point = {\n style: {\n visible: false,\n fill: color.colorScheme?.[0],\n },\n }\n return result\n}\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initLine: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n\n result.type = 'line'\n result.direction = 'vertical'\n result.xField = encoding[0].x[0]\n result.yField = encoding[0].y[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initColumnParallel: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { encoding, datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n\n result.type = 'bar'\n result.direction = 'vertical'\n result.xField = [encoding[0].x[0], unfoldInfo.groupId]\n result.yField = encoding[0].y[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { IPieChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initPie: SpecPipe = (spec, context) => {\n const result = { ...spec } as IPieChartSpec\n const { advancedVSeed } = context\n const { encoding, dataset } = advancedVSeed\n\n if (!encoding[0].angle || !encoding[0].radius || !encoding[0].group) {\n return result\n }\n\n const showStroke = dataset.length <= 30\n\n result.type = 'pie'\n result.outerRadius = 0.8\n result.innerRadius = 0\n result.valueField = encoding[0].radius[0]\n result.categoryField = encoding[0].angle[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.pie = {\n style: {\n stroke: '#ffffff',\n lineWidth: showStroke ? 1 : 0,\n centerOffset: 0,\n },\n state: {\n hover: {\n centerOffset: 5,\n outerRadius: result.outerRadius * 1.1,\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'\n\nexport const initDonut: SpecPipe = (spec, context) => {\n const result = { ...spec } as IPieChartSpec\n const { advancedVSeed } = context\n const { encoding, dataset } = advancedVSeed\n\n if (!encoding[0].angle || !encoding[0].radius || !encoding[0].group) {\n return result\n }\n const showStroke = dataset.length <= 30\n\n result.type = 'pie'\n result.outerRadius = 0.8\n result.innerRadius = result.outerRadius * 0.8\n result.valueField = encoding[0].radius[0]\n result.categoryField = encoding[0].angle[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n\n result.pie = {\n style: {\n stroke: '#ffffff',\n lineWidth: showStroke ? 1 : 0,\n },\n state: {\n hover: {\n outerRadius: result.outerRadius * 1.1,\n },\n },\n }\n\n result.animation = true\n\n return result\n}\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initRose: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRoseChartSpec\n const { advancedVSeed } = context\n const { encoding, dataset, datasetReshapeInfo } = advancedVSeed\n const { foldInfo } = datasetReshapeInfo[0]\n if (!encoding[0].radius || !encoding[0].angle || !encoding[0].group) {\n return result\n }\n\n result.type = 'rose'\n result.categoryField = encoding[0].angle[0]\n result.valueField = encoding[0].radius[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n result.outerRadius = 0.9\n result.innerRadius = 0\n\n const hasNegativeValue = dataset.flat().find((d) => d[foldInfo.measureValue] < 0)\n if (hasNegativeValue) {\n result.innerRadius = 0.05\n }\n\n result.rose = {\n style: {\n stroke: '#ffffff',\n lineWidth: 1,\n },\n state: {\n hover: {\n lineWidth: 1,\n fillOpacity: 0.6,\n },\n },\n }\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initRoseParallel: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRoseChartSpec\n const { advancedVSeed } = context\n const { encoding, datasetReshapeInfo, dataset } = advancedVSeed\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n if (!encoding[0].radius || !encoding[0].angle || !encoding[0].group) {\n return result\n }\n\n result.type = 'rose'\n result.categoryField = [encoding[0].angle[0], unfoldInfo.groupId]\n result.valueField = encoding[0].radius[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n\n result.outerRadius = 0.9\n result.innerRadius = 0\n\n const hasNegativeValue = dataset.flat().find((d) => d[foldInfo.measureValue] < 0)\n if (hasNegativeValue) {\n result.innerRadius = 0.05\n }\n\n result.rose = {\n style: {\n stroke: '#ffffff',\n lineWidth: 1,\n },\n state: {\n hover: {\n lineWidth: 1,\n fillOpacity: 0.6,\n },\n },\n }\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n","import type { IScatterChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initScatter: SpecPipe = (spec, context) => {\n const result = { ...spec } as IScatterChartSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n\n result.type = 'scatter'\n result.direction = 'vertical'\n result.xField = encoding[0].x[0]\n result.yField = encoding[0].y[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n","import type { IRadarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initRadar: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRadarChartSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].angle || !encoding[0].radius || !encoding[0].group) {\n return result\n }\n\n result.type = 'radar'\n result.angleField = encoding[0].angle[0]\n result.radiusField = encoding[0].radius[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n","import type { IFunnelChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initFunnel: SpecPipe = (spec, context) => {\n const result = { ...spec } as IFunnelChartSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].size || !encoding[0].group || !encoding[0].color) {\n return result\n }\n\n result.type = 'funnel'\n result.valueField = encoding[0].size[0]\n result.categoryField = encoding[0].group[0]\n result.padding = 0\n result.isTransform = true\n result.shape = 'rect'\n result.maxSize = '75%'\n result.minSize = '10%'\n result.region = [\n {\n clip: true,\n },\n ]\n result.funnel = {\n style: {\n cornerRadius: 4,\n fill: {\n field: encoding[0].color[0],\n scale: 'color',\n },\n },\n state: {\n hover: {\n fillOpacity: 0.6,\n },\n },\n }\n result.transformLabel = {\n visible: true,\n }\n\n result.animation = true\n\n return result\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { SpecPipe } from 'src/types'\n\nexport const initPivot: SpecPipe = (spec) => {\n const result = { ...spec } as PivotChartConstructorOptions\n\n return {\n ...result,\n animation: true,\n rows: [],\n columns: [],\n indicators: [],\n records: [],\n widthMode: 'adaptive',\n heightMode: 'adaptive',\n indicatorsAsCol: false,\n }\n}\n\nexport const pivotIndicatorsAsRow: SpecPipe = (spec) => {\n const result = { ...spec } as PivotChartConstructorOptions\n\n return {\n ...result,\n indicatorsAsCol: false,\n }\n}\n\nexport const pivotIndicatorsAsCol: SpecPipe = (spec) => {\n const result = { ...spec } as PivotChartConstructorOptions\n\n return {\n ...result,\n indicatorsAsCol: true,\n }\n}\n","import type { ICartesianBandAxisSpec, ISpec } from '@visactor/vchart'\nimport type { SpecPipe, XBandAxis } from 'src/types'\n\nexport const xBand: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const config = advancedVSeed.config?.[chartType as 'column']?.xAxis as XBandAxis\n\n if (!result.axes) {\n result.axes = []\n }\n\n if (!config) {\n result.axes = [\n ...result.axes,\n {\n visible: true,\n type: 'band',\n orient: 'bottom',\n },\n ] as ISpec['axes']\n return result\n }\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n labelAutoHide,\n labelAutoHideGap,\n labelAutoLimit,\n labelAutoLimitLength,\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,\n sampling,\n hover: true,\n label: {\n visible: label?.visible,\n flush: true,\n space: 8,\n style: {\n maxLineWidth: labelAutoLimitLength,\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n\n // 防重叠相关\n minGap: labelAutoHideGap,\n autoHide: labelAutoHide,\n autoHideMethod: 'greedy',\n autoHideSeparation: labelAutoHideGap,\n autoLimit: labelAutoLimit,\n autoRotate: labelAutoRotate,\n autoRotateAngle: labelAutoRotateAngleRange,\n lastVisible: true,\n },\n title: {\n visible: title?.visible,\n text: title?.titleText,\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n paddingInner: [0.15, 0.1],\n paddingOuter: [0.075, 0.1],\n } as ICartesianBandAxisSpec\n\n result.axes = [...result.axes, bandAxis] as ISpec['axes']\n return result\n}\n","// 标注层 z-index \nexport const ANNOTATION_Z_INDEX = 1000\n// 线性轴 顶部空隙 预留5px\nexport const LINEAR_AXIS_INNER_OFFSET_TOP = 7","import type { ISpec } from '@visactor/vchart'\nimport { LINEAR_AXIS_INNER_OFFSET_TOP } from '../../../../utils/constant'\nimport type { SpecPipe, XLinearAxis } from 'src/types'\nimport { autoFormatter } from '../../../../utils'\n\nexport const xLinear: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { locale } = advancedVSeed\n const config = advancedVSeed.config?.[chartType as 'bar']?.xAxis as XLinearAxis\n\n if (!result.axes) {\n result.axes = []\n }\n\n if (!config) {\n result.axes = [\n ...result.axes,\n {\n visible: true,\n type: 'linear',\n orient: 'bottom',\n },\n ] as ISpec['axes']\n return result\n }\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n\n zero,\n nice,\n inverse,\n max,\n min,\n log,\n logBase = 10,\n } = config\n\n const linearAxis = {\n visible,\n type: log ? 'log' : 'linear',\n base: logBase,\n orient: 'bottom',\n nice,\n zero: log ? false : zero,\n inverse,\n max,\n min,\n label: {\n visible: label?.visible,\n formatMethod: (value: string) => {\n return autoFormatter(value, locale)\n },\n style: {\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n },\n title: {\n visible: title?.visible,\n text: title?.titleText,\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n innerOffset: {\n right: LINEAR_AXIS_INNER_OFFSET_TOP,\n // left: LINEAR_AXIS_INNER_OFFSET_TOP,\n },\n }\n\n result.axes = [...result.axes, linearAxis] as ISpec['axes']\n\n return result\n}\n","import type { ICartesianBandAxisSpec, ISpec } from '@visactor/vchart'\nimport type { SpecPipe, XBandAxis } from 'src/types'\n\nexport const yBand: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const config = advancedVSeed.config?.[chartType as 'bar']?.yAxis as XBandAxis\n\n if (!result.axes) {\n result.axes = []\n }\n\n if (!config) {\n result.axes = [\n ...result.axes,\n {\n visible: true,\n type: 'band',\n orient: 'left',\n },\n ] as ISpec['axes']\n return result\n }\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n labelAutoHide,\n labelAutoHideGap,\n labelAutoLimit,\n labelAutoLimitLength,\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,\n sampling,\n hover: true,\n label: {\n visible: label?.visible,\n flush: true,\n containerAlign: 'left',\n space: 8,\n style: {\n maxLineWidth: labelAutoLimitLength,\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n // 防重叠相关\n minGap: labelAutoHideGap,\n autoHide: labelAutoHide,\n autoHideMethod: 'greedy',\n autoHideSeparation: labelAutoHideGap,\n autoLimit: labelAutoLimit,\n autoRotate: labelAutoRotate,\n autoRotateAngle: labelAutoRotateAngleRange,\n lastVisible: true,\n },\n title: {\n visible: title?.visible,\n text: title?.titleText,\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n paddingInner: [0.15, 0.1],\n paddingOuter: [0.075, 0.1],\n } as ICartesianBandAxisSpec\n\n result.axes = [...result.axes, bandAxis] as ISpec['axes']\n return result\n}\n","import type { ISpec } from '@visactor/vchart'\nimport { LINEAR_AXIS_INNER_OFFSET_TOP } from '../../../../utils/constant'\nimport { autoFormatter } from '../../../../utils'\nimport type { SpecPipe, YLinearAxis } from 'src/types'\n\nexport const yLinear: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { locale } = advancedVSeed\n const config = advancedVSeed.config?.[chartType as 'column']?.yAxis as YLinearAxis\n\n if (!result.axes) {\n result.axes = []\n }\n\n if (!config) {\n result.axes = [\n ...result.axes,\n {\n visible: true,\n type: 'linear',\n orient: 'left',\n },\n ] as ISpec['axes']\n return result\n }\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n\n zero,\n nice,\n inverse,\n max,\n min,\n log,\n logBase = 10,\n } = config\n\n const linearAxis = {\n visible,\n type: log ? 'log' : 'linear',\n base: logBase,\n orient: 'left',\n nice,\n zero: log ? false : zero,\n inverse,\n max,\n min,\n label: {\n visible: label?.visible,\n formatMethod: (value: string) => {\n return autoFormatter(value, locale)\n },\n style: {\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n },\n title: {\n visible: title?.visible,\n text: title?.titleText,\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n innerOffset: {\n top: LINEAR_AXIS_INNER_OFFSET_TOP,\n // bottom: LINEAR_AXIS_INNER_OFFSET_TOP,\n },\n }\n\n result.axes = [...result.axes, linearAxis] as ISpec['axes']\n\n return result\n}\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const radiusAxis: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRoseChartSpec\n const { advancedVSeed } = context\n const { dimensions, measures } = advancedVSeed\n\n if (!dimensions || !measures) {\n return result\n }\n\n const is0D = dimensions.length === 0\n const is1M1D = dimensions.length === 1 && measures.length === 1\n const showAxis = !(is0D || is1M1D)\n\n if (!result.axes) {\n result.axes = []\n }\n\n result.axes.push({\n orient: 'radius',\n visible: showAxis,\n zero: true,\n nice: showAxis ? true : false,\n grid: {\n visible: showAxis,\n },\n tick: {\n visible: showAxis,\n },\n label: {\n visible: showAxis,\n },\n domainLine: {\n visible: showAxis,\n },\n })\n\n return result\n}\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const angleAxis: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRoseChartSpec\n const { advancedVSeed } = context\n const { dimensions, measures } = advancedVSeed\n\n if (!dimensions || !measures) {\n return result\n }\n\n const is0D = dimensions.length === 0\n const is1M1D = dimensions.length === 1 && measures.length === 1\n const showAxis = !(is0D || is1M1D)\n\n if (!result.axes) {\n result.axes = []\n }\n\n result.axes.push({\n orient: 'angle',\n visible: showAxis,\n zero: true,\n nice: showAxis ? true : false,\n paddingInner: showAxis ? [0.15, 0.1] : [0, 0],\n paddingOuter: showAxis ? [0.075, 0.1] : [0, 0],\n grid: {\n visible: showAxis,\n },\n domainLine: {\n visible: showAxis,\n },\n tick: {\n visible: showAxis,\n },\n })\n\n return result\n}\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const radarAngleAxis: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRoseChartSpec\n const { advancedVSeed } = context\n const { dimensions, measures } = advancedVSeed\n\n if (!dimensions || !measures) {\n return result\n }\n\n if (!result.axes) {\n result.axes = []\n }\n\n result.axes.push({\n orient: 'angle',\n visible: true,\n zero: true,\n nice: true,\n grid: {\n visible: true,\n },\n domainLine: {\n visible: true,\n },\n tick: {\n visible: true,\n },\n })\n\n return result\n}\n","import type { IRoseChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const radarRadiusAxis: SpecPipe = (spec, context) => {\n const result = { ...spec } as IRoseChartSpec\n const { advancedVSeed } = context\n const { dimensions, measures } = advancedVSeed\n\n if (!dimensions || !measures) {\n return result\n }\n\n if (!result.axes) {\n result.axes = []\n }\n\n result.axes.push({\n orient: 'radius',\n visible: true,\n zero: true,\n nice: true,\n grid: {\n visible: true,\n },\n tick: {\n visible: true,\n },\n label: {\n visible: true,\n },\n domainLine: {\n visible: true,\n },\n })\n\n return result\n}\n","import { IAreaChartSpec, IBarChartSpec } from '@visactor/vchart'\nimport { SpecPipe } from 'src/types'\n\nexport const percent: SpecPipe = (spec, context) => {\n const result = { ...spec } as IAreaChartSpec | IBarChartSpec\n result.percent = true\n return result\n}\n","import type { 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 { SpecPipe, StackCornerRadius } from 'src/types'\n\nexport const stackCornerRadius: SpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const stackCornerRadius = advancedVSeed.config?.[chartType as 'column']?.stackCornerRadius as StackCornerRadius\n\n return {\n ...spec,\n stackCornerRadius,\n }\n}\n","import type { 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 { isEmpty } from 'remeda'\nimport { autoFormatter, createFormatter, findMeasureById } from '../../../../utils'\nimport type { SpecPipe, Tooltip } from 'src/types'\n\nexport const tooltip: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { measures, datasetReshapeInfo, chartType, locale } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n\n const { measureId, measureValue } = datasetReshapeInfo[0].foldInfo\n const { groupName } = datasetReshapeInfo[0].unfoldInfo\n\n result.tooltip = {\n visible: enable,\n\n mark: {\n title: {\n value: (datum) => (datum && (datum[groupName] as string)) || '',\n },\n content: [\n {\n visible: true,\n key: (datum) => (datum && (datum[groupName] as string)) || '',\n value: (datum) => {\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n },\n ],\n },\n dimension: {\n content: [\n {\n visible: true,\n key: (datum) => (datum && (datum[groupName] as string)) || '',\n value: (datum) => {\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n },\n ],\n },\n }\n return result\n}\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport type { ILineLikeLabelSpec } from '@visactor/vchart/esm/series/mixin/interface'\nimport { autoFormatter, createFormatter, findMeasureById } from '../../../../utils'\nimport type { Datum, Label, SpecPipe } from 'src/types'\nimport { isEmpty } from 'remeda'\n\nexport const label: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed } = context\n const { measures, datasetReshapeInfo, locale } = advancedVSeed\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { label: Label }\n\n if (!baseConfig || !baseConfig.label) {\n return result\n }\n\n const { measureId, measureValue } = datasetReshapeInfo[0].foldInfo\n // const { groupId, groupName } = datasetReshapeInfo[0].unfoldInfo\n const { label } = baseConfig\n const { enable } = label\n\n result.label = {\n visible: enable,\n formatMethod: (value: string, datum: Datum) => {\n const result = []\n\n const formatValue = (value: number) => {\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return value\n }\n\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n }\n\n result.push(formatValue(datum[measureValue] as number))\n\n return result.join(' ')\n },\n } as ILineLikeLabelSpec\n return result\n}\n","import type { IHeatmapChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const labelColorInversion: SpecPipe = (spec) => {\n const result = { ...spec } as IHeatmapChartSpec\n if (result.label) {\n result.label.smartInvert = true\n } else {\n result.label = {\n smartInvert: true,\n }\n }\n return result\n}\n","import type { StringOrNumber } from '@visactor/vchart'\nimport type { Legend, SpecPipe } from 'src/types'\n\nexport const discreteLegend: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { datasetReshapeInfo, chartType } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n const baseConfig = advancedVSeed.config[chartType] as { legend: Legend }\n if (!baseConfig || !baseConfig.legend) {\n return result\n }\n\n const { legend } = baseConfig\n const {\n enable,\n position = 'bottom',\n labelFontColor,\n labelFontSize = 12,\n labelFontWeight,\n maxSize,\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: maxSize,\n maxRow: 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 focusIconStyle: {\n size: labelFontSize + 2,\n fill: labelFontColor,\n fontWeight: labelFontWeight,\n },\n shape: {\n space: border ? 6 : 4,\n style: {\n symbolType: shapeType,\n size: border ? 8 : 10,\n },\n },\n label: {\n formatMethod: (value: StringOrNumber) => {\n return unfoldInfo.colorIdMap[String(value)] ?? value\n },\n style: {\n fontSize: labelFontSize,\n fill: labelFontColor,\n fontWeight: labelFontWeight,\n },\n },\n background: {\n state: {\n selectedHover: {\n fill: labelFontColor,\n fillOpacity: 0.05,\n },\n },\n },\n },\n }\n return result\n}\n","import type { StringOrNumber } from '@visactor/vchart'\nimport type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { IDiscreteTableLegendOption } from '@visactor/vtable/es/ts-types/component/legend'\nimport { unique } from 'remeda'\nimport type { Color, Legend, SpecPipe } from 'src/types'\n\nexport const pivotDiscreteLegend: SpecPipe = (spec, context) => {\n const result = { ...spec } as PivotChartConstructorOptions\n const { advancedVSeed } = context\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { legend: Legend, color: Color }\n\n if (!baseConfig || !baseConfig.legend) {\n return result\n }\n\n const { datasetReshapeInfo } = advancedVSeed\n const colorItems = unique(datasetReshapeInfo.flatMap((d) => d.unfoldInfo.colorItems))\n\n const colorIdMap = datasetReshapeInfo.reduce<Record<string, string>>((prev, cur) => {\n return { ...prev, ...cur.unfoldInfo.colorIdMap }\n }, {})\n\n const { legend, color } = baseConfig\n const { colorScheme } = color\n\n const {\n enable,\n position = 'bottom',\n labelFontColor,\n labelFontSize = 12,\n labelFontWeight = 400,\n maxSize,\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: maxSize,\n maxRow: maxSize,\n data: colorItems.map((d, index) => ({\n label: d,\n shape: {\n outerBorder: border\n ? {\n stroke: colorScheme?.[index],\n distance: 3,\n lineWidth: 1,\n }\n : undefined,\n fill: colorScheme?.[index],\n },\n })),\n\n item: {\n focus: true,\n focusIconStyle: {\n size: labelFontSize + 2,\n fill: labelFontColor,\n fontWeight: labelFontWeight,\n },\n shape: {\n space: border ? 6 : 4,\n style: {\n symbolType: shapeType,\n size: border ? 8 : 10,\n },\n },\n label: {\n formatMethod: (value: StringOrNumber) => {\n return colorIdMap[String(value)] ?? value\n },\n style: {\n fontSize: labelFontSize,\n fill: labelFontColor,\n fontWeight: labelFontWeight,\n },\n },\n background: {\n state: {\n selectedHover: {\n fill: labelFontColor,\n fillOpacity: 0.05,\n },\n },\n },\n },\n } as unknown as IDiscreteTableLegendOption\n return { ...result, legends }\n}\n","import type { Legend, SpecPipe } from 'src/types'\n\nexport const colorLegend: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { legend: Legend }\n const { encoding } = advancedVSeed\n\n if (!encoding[0].color) {\n return result\n }\n\n if (!baseConfig || !baseConfig.legend) {\n return result\n }\n\n const { legend } = baseConfig\n const { enable, position = 'bottom' } = legend || {}\n\n const orient = ['bottom', 'bottomLeft', 'bottomRight', 'bl', 'br'].includes(position)\n ? 'bottom'\n : ['top', 'topLeft', 'topRight', 'tl', 'tr'].includes(position)\n ? 'top'\n : ['left', 'leftTop', 'leftBottom', 'lt', 'lb'].includes(position)\n ? 'left'\n : 'right'\n\n const legendPosition = ['topLeft', 'bottomLeft', 'leftTop', 'rightTop', 'lt', 'rt', 'tl', 'bl'].includes(position)\n ? 'start'\n : ['topRight', 'bottomRight', 'leftBottom', 'rightBottom', 'lb', 'rb', 'rt', 'br'].includes(position)\n ? 'end'\n : 'middle'\n\n result.legends = {\n type: 'color',\n visible: enable,\n orient,\n position: legendPosition,\n field: encoding[0].color[0],\n inverse: ['left', 'right'].includes(orient) ? true : false,\n }\n return result\n}\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport { Separator } from 'src/dataReshape'\nimport type { Color, SpecPipe } from 'src/types'\n\nexport const color: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo, chartType } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n const baseConfig = advancedVSeed.config[chartType] as { color: Color }\n\n if (!baseConfig || !baseConfig.color) {\n return result\n }\n\n const { color } = baseConfig\n const { colorScheme, colorMapping } = color\n const mappingList: Array<[string, string]> = []\n if (colorMapping) {\n Object.entries(colorMapping)\n .sort((a, b) => a[0].split(Separator).length - b[0].split(Separator).length)\n .forEach(([key, value]) => {\n const idMap = Object.entries(unfoldInfo.colorIdMap).filter(([_, v]) => v.includes(key))\n\n for (const [colorId] of idMap) {\n mappingList.push([colorId, value])\n }\n })\n }\n\n result.color = {\n type: 'ordinal',\n domain: unfoldInfo.colorItems,\n range: colorScheme,\n specified: Object.fromEntries(mappingList),\n } as ILineChartSpec['color']\n return result\n}\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport type { Color, SpecPipe } from 'src/types'\n\nexport const linearColor: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo, chartType, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { color: Color }\n\n if (!baseConfig || !baseConfig.color) {\n return result\n }\n\n const { color } = baseConfig\n const { colorScheme } = color\n\n result.color = {\n type: 'linear',\n domain: [\n {\n dataId: datasetReshapeInfo[0].id,\n fields: encoding?.[0]?.color,\n },\n ],\n range: colorScheme,\n } as ILineChartSpec['color']\n return result\n}\n","import type { 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 { PivotChartConstructorOptions } from '@visactor/vtable'\nimport { execPipeline } from '../../../../utils'\nimport type { SpecPipe, SpecPipeline, SpecPipelineContext } from 'src/types'\nimport { unique } from 'remeda'\n\nexport const pivotIndicators =\n (chartPipeline: SpecPipeline): SpecPipe =>\n (spec, context) => {\n const result = { ...spec } as PivotChartConstructorOptions\n const { advancedVSeed } = context\n const { measures, datasetReshapeInfo, encoding } = advancedVSeed\n\n const colorItems = unique(datasetReshapeInfo.flatMap((d) => d.unfoldInfo.colorItems))\n\n const indicators = datasetReshapeInfo.map((reshapeInfo, index) => {\n const measure = measures?.find((d) => d.id === reshapeInfo.id)\n\n const newEncoding = [encoding[index]]\n const newDatasetReshapeInfo = [{ ...reshapeInfo, unfoldInfo: { ...reshapeInfo.unfoldInfo, colorItems } }]\n const newContext: SpecPipelineContext = {\n ...context,\n advancedVSeed: {\n ...advancedVSeed,\n datasetReshapeInfo: newDatasetReshapeInfo,\n encoding: newEncoding,\n },\n }\n\n const chartSpec = execPipeline(chartPipeline, newContext, {})\n return {\n indicatorKey: reshapeInfo.id,\n title: measure?.alias,\n cellType: 'chart',\n chartModule: 'vchart',\n chartSpec: chartSpec,\n style: {\n padding: [1, 1, 0, 1],\n },\n }\n })\n\n return {\n ...result,\n indicators: indicators,\n } as PivotChartConstructorOptions\n }\n\nexport const pivotIndicatorsAsRow: SpecPipe = (spec) => {\n const result = { ...spec } as PivotChartConstructorOptions\n\n return {\n ...result,\n indicatorsAsCol: false,\n }\n}\n\nexport const pivotIndicatorsAsCol: SpecPipe = (spec) => {\n const result = { ...spec } as PivotChartConstructorOptions\n\n return {\n ...result,\n indicatorsAsCol: true,\n }\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { SpecPipe } from 'src/types'\n\nexport const pivotGridStyle: SpecPipe = (spec) => {\n const result = { ...spec } as PivotChartConstructorOptions\n const transparent = 'rgba(0,0,0,0)'\n\n const hoverBackgroundColor = 'rgba(178,186,207, 0.2)'\n return {\n ...result,\n theme: {\n underlayBackgroundColor: transparent,\n bodyStyle: {\n borderColor: 'rgba(0,4,20,0.2)',\n borderLineWidth: [0, 0, 2, 0],\n bgColor: transparent,\n padding: [0, 0, 1, 0],\n hover: {\n cellBgColor: 'transparent',\n },\n },\n headerStyle: {\n borderColor: 'rgba(0,4,20,0.2)',\n fontSize: 12,\n color: '#333333',\n textAlign: 'center',\n borderLineWidth: 0,\n bgColor: transparent,\n hover: {\n cellBgColor: hoverBackgroundColor,\n },\n },\n rowHeaderStyle: {\n borderColor: 'rgba(0,4,20,0.2)',\n fontSize: 12,\n color: '#333333',\n borderLineWidth: 0,\n bgColor: transparent,\n hover: {\n cellBgColor: hoverBackgroundColor,\n },\n },\n cornerHeaderStyle: {\n borderColor: 'rgba(0,4,20,0.2)',\n textAlign: 'center',\n fontSize: 12,\n color: '#333333',\n fontWeight: 'bold',\n borderLineWidth: [0, 0, 0, 0],\n bgColor: transparent,\n hover: {\n cellBgColor: hoverBackgroundColor,\n },\n },\n cornerRightTopCellStyle: {\n borderColor: 'rgba(0,4,20,0.2)',\n borderLineWidth: 0,\n bgColor: transparent,\n hover: {\n cellBgColor: hoverBackgroundColor,\n },\n },\n cornerLeftBottomCellStyle: {\n borderColor: 'rgba(0,4,20,0.2)',\n borderLineWidth: 0,\n bgColor: transparent,\n hover: {\n cellBgColor: hoverBackgroundColor,\n },\n },\n cornerRightBottomCellStyle: {\n borderColor: 'rgba(0,4,20,0.2)',\n borderLineWidth: 0,\n bgColor: transparent,\n hover: {\n cellBgColor: hoverBackgroundColor,\n },\n },\n rightFrozenStyle: {\n borderColor: 'rgba(0,4,20,0.2)',\n borderLineWidth: 0,\n bgColor: transparent,\n hover: {\n cellBgColor: hoverBackgroundColor,\n },\n },\n bottomFrozenStyle: {\n borderColor: 'rgba(0,4,20,0.2)',\n borderLineWidth: 0,\n bgColor: transparent,\n hover: {\n cellBgColor: hoverBackgroundColor,\n },\n },\n selectionStyle: {\n cellBgColor: '',\n cellBorderColor: '',\n },\n frameStyle: {\n borderLineWidth: 0,\n bgColor: transparent,\n },\n },\n }\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { IBasicDimension } from '@visactor/vtable/es/ts-types/pivot-table/dimension/basic-dimension'\nimport type { Dimensions, SpecPipe } from 'src/types'\n\nexport const pivotColumnDimensions: SpecPipe = (spec, context) => {\n const result = { ...spec } as PivotChartConstructorOptions\n const { advancedVSeed } = context\n const dimensions = advancedVSeed.dimensions as Dimensions\n\n if (!dimensions) {\n return result\n }\n const columnDimensions = dimensions.filter((dim) => dim.location === 'columnDimension')\n const columns: IBasicDimension[] = columnDimensions.map((dim) => ({\n dimensionKey: dim.id,\n title: dim.alias || dim.id,\n }))\n return {\n ...result,\n columns: columns,\n }\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { IBasicDimension } from '@visactor/vtable/es/ts-types/pivot-table/dimension/basic-dimension'\nimport type { Dimensions, SpecPipe } from 'src/types'\n\nexport const pivotRowDimensions: SpecPipe = (spec, context) => {\n const result = { ...spec } as PivotChartConstructorOptions\n const { advancedVSeed } = context\n const dimensions = advancedVSeed.dimensions as Dimensions\n if (!dimensions) {\n return result\n }\n const rowDimensions = dimensions.filter((dim) => dim.location === 'rowDimension')\n const rows: IBasicDimension[] = rowDimensions.map((dim) => ({\n dimensionKey: dim.id,\n title: dim.alias || dim.id,\n }))\n return {\n ...result,\n rows: rows,\n }\n}\n","import type { 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 // 过滤掉 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 for (const selector of selectors) {\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\n return false\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 { IBarChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { BarStyle, Datum, SpecPipe } from 'src/types'\n\nexport const barStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle, dataset } = advancedVSeed\n const { barStyle } = markStyle\n\n const showStroke = dataset.length <= 100\n\n const result = {\n ...spec,\n bar: {\n style: {\n stroke: '#fff',\n lineWidth: showStroke ? 1 : 0,\n },\n state: {\n hover: {\n fillOpacity: 0.6,\n },\n },\n },\n } as IBarChartSpec\n\n if (!barStyle) {\n return result\n }\n\n const barStyles = (Array.isArray(barStyle) ? barStyle : [barStyle]) as BarStyle[]\n\n const customMap = barStyles.reduce<object>((result, style, index) => {\n const { barBorderColor, barBorderStyle, barBorderWidth, barColor, barColorOpacity, barRadius } = style\n\n const lineDash = barBorderStyle === 'dashed' ? [5, 2] : barBorderStyle === 'dotted' ? [2, 5] : [0, 0]\n return {\n ...result,\n [`custom${index + 1}`]: {\n // 优先级: 后者覆盖前者\n level: index + 1,\n filter: (datum: Datum) => {\n if (selector(datum, style.selector)) {\n return true\n }\n return false\n },\n style: {\n fill: barColor,\n fillOpacity: barColorOpacity,\n cornerRadius: barRadius,\n innerBorder: {\n stroke: barBorderColor,\n lineWidth: barBorderWidth,\n distance: (barBorderWidth || 0) / 2,\n lineDash: lineDash,\n },\n },\n },\n }\n }, {})\n\n return {\n ...result,\n bar: {\n state: {\n ...customMap,\n },\n },\n }\n}\n","import type { IAreaChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, PointStyle, SpecPipe } from 'src/types'\n\nexport const pointStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle } = advancedVSeed\n const { pointStyle } = markStyle\n const result = {\n ...spec,\n } as IAreaChartSpec\n\n if (!pointStyle) {\n return result\n }\n const pointStyles = (Array.isArray(pointStyle) ? pointStyle : [pointStyle]) as PointStyle[]\n\n const customMap = pointStyles.reduce<object>((result, style, index) => {\n const { pointBorderColor, pointBorderStyle, pointBorderWidth, pointColor, pointColorOpacity, pointSize } = style\n\n const lineDash = pointBorderStyle === 'dashed' ? [5, 2] : pointBorderStyle === 'dotted' ? [2, 5] : [0, 0]\n return {\n ...result,\n [`custom${index + 1}`]: {\n // 优先级: 后者覆盖前者\n level: index + 1,\n filter: (datum: Datum) => {\n if (selector(datum, style.selector)) {\n return true\n }\n return false\n },\n style: {\n size: pointSize,\n fill: pointColor,\n fillOpacity: pointColorOpacity,\n innerBorder: {\n stroke: pointBorderColor,\n lineWidth: pointBorderWidth,\n distance: (pointBorderWidth || 0) / 2,\n lineDash: lineDash,\n },\n },\n },\n }\n }, {})\n\n return {\n ...result,\n point: {\n state: {\n ...customMap,\n },\n },\n }\n}\n","import type { IScatterChartSpec } from '@visactor/vchart'\nimport type { ISeriesMarkAttributeContext } from '@visactor/vchart/esm/compile/mark'\nimport type { SpecPipe } from 'src/types'\n\nexport const pointStateDimensionHover: SpecPipe = (spec) => {\n const point = (spec as IScatterChartSpec).point || {}\n const result = {\n ...spec,\n point: {\n ...point,\n state: {\n ...(point.state || {}),\n dimension_hover: {\n scaleX: 1.4,\n scaleY: 1.4,\n },\n },\n },\n } as IScatterChartSpec\n return result\n}\n\nexport const pointStateHover: SpecPipe = (spec, context) => {\n const point = (spec as IScatterChartSpec).point || {}\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n const result = {\n ...spec,\n point: {\n ...point,\n state: {\n ...(point.state || {}),\n hover: {\n scaleX: 1.4,\n scaleY: 1.4,\n stroke: (datum, context: ISeriesMarkAttributeContext) => {\n const field = encoding[0]?.group?.[0] as string\n const color = context.seriesColor(datum[field] as string)\n return color\n },\n fillOpacity: 0.6,\n lineWidth: 1,\n },\n },\n },\n } as IScatterChartSpec\n return result\n}\n","import type { IAreaChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, LineStyle, SpecPipe } from 'src/types'\nimport { groupBy } from 'remeda'\n\nexport const lineStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle, encoding, dataset } = advancedVSeed\n const { lineStyle } = markStyle\n if (!lineStyle) {\n return spec\n }\n const result = { ...spec } as IAreaChartSpec\n\n const lineStyles = (Array.isArray(lineStyle) ? lineStyle : [lineStyle]) as LineStyle[]\n\n const group = encoding[0]?.group?.[0]\n const lineGroups = groupBy(dataset, (d) => d[group ?? ''] as string)\n\n const customMap = lineStyles.reduce<object>((result, style, index) => {\n const { lineColor, lineColorOpacity, lineSmooth, lineStyle, lineWidth } = style\n\n const dashSegment = (lineWidth ?? 2) * 2\n const dashGap = lineWidth ?? 2\n\n const lineDash =\n lineStyle === 'dashed' ? [dashSegment, dashSegment] : lineStyle === 'dotted' ? [dashGap / 2, dashGap * 2] : [0, 0]\n\n const curveType = lineSmooth ? 'monotone' : 'linear'\n\n return {\n ...result,\n [`custom${index + 1}`]: {\n // 优先级: 后者覆盖前者\n level: index + 1,\n filter: (datum: Datum) => {\n const lineData = lineGroups[datum[group ?? ''] as string]\n for (const d of lineData) {\n if (selector(d, style.selector)) {\n return true\n }\n }\n return false\n },\n style: {\n curveType: curveType,\n strokeOpacity: lineColorOpacity,\n stroke: lineColor,\n lineWidth: lineWidth,\n lineDash: lineDash,\n },\n },\n }\n }, {})\n\n return {\n ...result,\n line: {\n state: {\n ...customMap,\n },\n },\n }\n}\n","import type { IAreaChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { AreaStyle, Datum, SpecPipe } from 'src/types'\nimport { groupBy } from 'remeda'\n\nexport const areaStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle, encoding, dataset } = advancedVSeed\n const { areaStyle } = markStyle\n\n if (!areaStyle) {\n return spec\n }\n const result = { ...spec } as IAreaChartSpec\n\n const areaStyles = (Array.isArray(areaStyle) ? areaStyle : [areaStyle]) as AreaStyle[]\n\n const group = encoding[0]?.group?.[0]\n const lineGroups = groupBy(dataset, (d) => d[group ?? ''] as string)\n\n const customMap = areaStyles.reduce<object>((result, style, index) => {\n const { areaColor, areaColorOpacity } = style\n\n return {\n ...result,\n [`custom${index + 1}`]: {\n // 优先级: 后者覆盖前者\n level: index + 1,\n filter: (datum: Datum) => {\n const lineData = lineGroups[datum[group ?? ''] as string]\n for (const d of lineData) {\n if (selector(d, style.selector)) {\n return true\n }\n }\n return false\n },\n style: {\n fill: areaColor,\n fillOpacity: areaColorOpacity,\n },\n },\n }\n }, {})\n\n return {\n ...result,\n area: {\n state: {\n ...customMap,\n },\n },\n }\n}\n","import type { 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 = 'middle',\n backgroundBorderColor,\n backgroundBorderRadius = 4,\n backgroundBorderWidth = 1,\n backgroundColor = '#212121',\n backgroundPadding = 2,\n backgroundVisible = true,\n offsetX = 0,\n offsetY = 0,\n } = annotationPoint\n\n const dataset = advancedVSeed.dataset.flat()\n const selectedData = 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 visible: true,\n text: text,\n style: {\n textAlign: textAlign,\n textBaseline: textBaseline,\n fill: textColor,\n fontSize: textFontSize,\n fontWeight: textFontWeight,\n },\n labelBackground: {\n visible: backgroundVisible,\n padding: backgroundPadding,\n style: {\n cornerRadius: backgroundBorderRadius ?? 4,\n fill: backgroundColor,\n stroke: backgroundBorderColor,\n strokeWidth: backgroundBorderWidth,\n },\n },\n },\n },\n }\n })\n }) as ILineChartSpec['markPoint']\n\n return {\n ...spec,\n markPoint,\n }\n}\n","import type { ILineChartSpec, IMarkLineSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { SpecPipe } from 'src/types'\nimport { isArray, isNumber, isString } from 'remeda'\nimport { ANNOTATION_Z_INDEX } from '../../../../utils/constant'\n\nexport const annotationVerticalLine: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { annotation, encoding } = advancedVSeed\n\n if (!annotation || !annotation.annotationVerticalLine) {\n return spec\n }\n\n const { annotationVerticalLine } = annotation\n const annotationVerticalLineList = Array.isArray(annotationVerticalLine)\n ? annotationVerticalLine\n : [annotationVerticalLine]\n\n const positionMap = {\n outsideStart: 'start',\n outsideEnd: 'end',\n outsideMiddle: 'middle',\n insideStart: 'insideStartTop',\n insideMiddle: 'insideMiddleTop',\n insideEnd: 'insideEndTop',\n }\n const markLine = annotationVerticalLineList.flatMap((annotationVerticalLine) => {\n const {\n selector: selectorPoint,\n xValue,\n text = '',\n textPosition = 'insideEnd',\n textColor = '#ffffff',\n textFontSize = 12,\n textFontWeight = 400,\n textAlign = 'right',\n textBaseline = 'top',\n backgroundBorderColor,\n backgroundBorderRadius = 4,\n backgroundBorderWidth = 1,\n backgroundColor = '#212121',\n backgroundPadding = 2,\n backgroundVisible = true,\n lineColor = '#212121',\n lineStyle = 'dashed',\n lineVisible = true,\n lineWidth = 1,\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 visible: lineVisible,\n style: {\n stroke: lineColor,\n lineStyle: lineStyle,\n lineWidth: lineWidth,\n lineDash: lineStyle === 'dashed' ? [5, 2] : lineStyle === 'dotted' ? [2, 5] : [0],\n },\n },\n label: {\n text: text,\n position: positionMap[textPosition],\n style: {\n visible: true,\n textAlign: textAlign,\n textBaseline: textBaseline,\n fill: textColor,\n fontSize: textFontSize,\n fontWeight: textFontWeight,\n },\n labelBackground: {\n visible: backgroundVisible,\n padding: backgroundPadding,\n style: {\n cornerRadius: backgroundBorderRadius ?? 4,\n fill: backgroundColor,\n stroke: backgroundBorderColor,\n strokeWidth: backgroundBorderWidth,\n },\n },\n },\n endSymbol: {\n visible: true,\n style: {\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 = dataset.filter((datum) => selector(datum, selectorPoint))\n\n return selectedData.map((datum) => {\n const x = encoding[0]?.x?.[0]\n if (!x) {\n return {}\n }\n return generateOneMarkLine(datum[x] as string)\n })\n }) as IMarkLineSpec[]\n\n const specMarkLine = ((spec as ILineChartSpec).markLine as IMarkLineSpec[]) || []\n const newMarkLine = [...specMarkLine, ...(markLine || [])]\n\n return {\n ...spec,\n markLine: newMarkLine,\n }\n}\n","import type { ILineChartSpec, IMarkLineSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { SpecPipe } from 'src/types'\nimport { isArray, isNumber, isString } from 'remeda'\nimport { ANNOTATION_Z_INDEX } from '../../../../utils/constant'\n\nexport const annotationHorizontalLine: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { annotation, encoding } = advancedVSeed\n\n if (!annotation || !annotation.annotationHorizontalLine) {\n return spec\n }\n\n const { annotationHorizontalLine } = annotation\n const annotationVerticalLineList = Array.isArray(annotationHorizontalLine)\n ? annotationHorizontalLine\n : [annotationHorizontalLine]\n\n const positionMap = {\n outsideStart: 'start',\n outsideEnd: 'end',\n outsideMiddle: 'middle',\n insideStart: 'insideStartTop',\n insideMiddle: 'insideMiddleTop',\n insideEnd: 'insideEndTop',\n }\n\n const markLine = annotationVerticalLineList.flatMap((annotationVerticalLine) => {\n const {\n selector: selectorPoint,\n yValue,\n text = '',\n textPosition = 'insideEnd',\n textColor = '#ffffff',\n textFontSize = 12,\n textFontWeight = 400,\n textAlign = 'center',\n textBaseline = 'bottom',\n backgroundBorderColor,\n backgroundBorderRadius = 4,\n backgroundBorderWidth = 1,\n backgroundColor = '#212121',\n backgroundPadding = 2,\n backgroundVisible = true,\n lineColor = '#212121',\n lineStyle = 'dashed',\n lineVisible = true,\n lineWidth = 1,\n } = annotationVerticalLine\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 visible: lineVisible,\n style: {\n stroke: lineColor,\n lineStyle: lineStyle,\n lineWidth: lineWidth,\n lineDash: lineStyle === 'dashed' ? [5, 2] : lineStyle === 'dotted' ? [2, 5] : [0],\n },\n },\n label: {\n text: text,\n position: positionMap[textPosition],\n style: {\n visible: true,\n textAlign: textAlign,\n textBaseline: textBaseline,\n fill: textColor,\n fontSize: textFontSize,\n fontWeight: textFontWeight,\n },\n labelBackground: {\n visible: backgroundVisible,\n padding: backgroundPadding,\n style: {\n cornerRadius: backgroundBorderRadius ?? 4,\n fill: backgroundColor,\n stroke: backgroundBorderColor,\n strokeWidth: backgroundBorderWidth,\n },\n },\n },\n endSymbol: {\n visible: true,\n style: {\n fill: lineColor,\n },\n },\n }\n }\n\n if ((!selectorPoint && isArray(yValue)) || isString(yValue) || isNumber(yValue)) {\n const yValueArr = Array.isArray(yValue) ? yValue : [yValue]\n return yValueArr.map(generateOneMarkLine)\n }\n\n const selectedData = dataset.filter((datum) => selector(datum, selectorPoint))\n\n return selectedData.map((datum) => {\n const y = encoding[0]?.y?.[0]\n if (!y) {\n return {}\n }\n return generateOneMarkLine(datum[y] as string)\n })\n }) as IMarkLineSpec[]\n const specMarkLine = ((spec as ILineChartSpec).markLine as IMarkLineSpec[]) || []\n const newMarkLine = [...specMarkLine, ...(markLine || [])]\n return {\n ...spec,\n markLine: newMarkLine,\n }\n}\n","import type { ICartesianSeries, ILineChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, SpecPipe } from 'src/types'\nimport { isSubset } from './utils'\nimport { ANNOTATION_Z_INDEX } from '../../../../utils/constant'\n\nexport const annotationArea: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { annotation } = advancedVSeed\n\n if (!annotation || !annotation.annotationArea) {\n return spec\n }\n\n const { annotationArea } = annotation\n const annotationAreaList = Array.isArray(annotationArea) ? annotationArea : [annotationArea]\n\n const positionMap = {\n top: 'insideTop',\n topRight: 'insideTopRight',\n topLeft: 'insideTopLeft',\n bottom: 'insideBottom',\n bottomLeft: 'insideBottomLeft',\n bottomRight: 'insideBottomRight',\n left: 'insideLeft',\n right: 'insideRight',\n }\n\n const markArea = annotationAreaList.flatMap((annotationArea) => {\n const {\n selector: selectorPoint,\n text = '',\n textPosition = 'top',\n textColor = '#ffffff',\n textFontSize = 12,\n textFontWeight = 400,\n textAlign = 'center',\n textBaseline = 'top',\n backgroundBorderColor,\n backgroundBorderRadius = 4,\n backgroundBorderWidth = 1,\n backgroundColor = '#191d24',\n backgroundPadding = 10,\n backgroundVisible = true,\n outerPadding = 4,\n areaColor = '#888888',\n areaColorOpacity = 0.15,\n areaBorderColor,\n areaBorderRadius,\n areaBorderWidth,\n } = annotationArea\n\n const dataset = advancedVSeed.dataset.flat()\n const selectedData = dataset.filter((datum) => selector(datum, selectorPoint))\n\n return {\n zIndex: ANNOTATION_Z_INDEX,\n regionRelative: true,\n positions: (data: Datum[], context: ICartesianSeries) => {\n const positionData = data.filter((item) => selectedData.some((datum) => isSubset(datum, item)))\n const xyList = positionData.map((datum) => context.dataToPosition(datum) as { x: number; y: number })\n\n const yAxisHelper = context.getYAxisHelper() as unknown as {\n getBandwidth: (depth?: number) => number\n getScale: () => {\n range: () => number[]\n }\n }\n const xAxisHelper = context.getXAxisHelper() as unknown as {\n getBandwidth: (depth?: number) => number\n getScale: () => {\n range: () => number[]\n }\n }\n\n if (typeof xAxisHelper?.getBandwidth === 'function') {\n const yScale = yAxisHelper.getScale()\n\n const minX = Math.min(...xyList.map((item) => item.x)) - outerPadding\n const maxX = Math.max(...xyList.map((item) => item.x)) + outerPadding\n const minY = Math.min(...yScale.range())\n const maxY = Math.max(...yScale.range())\n return [\n // 左上\n {\n x: minX,\n y: minY,\n },\n // 右上\n {\n x: maxX,\n y: minY,\n },\n // 右下\n {\n x: maxX,\n y: maxY,\n },\n // 左下\n {\n x: minX,\n y: maxY,\n },\n ]\n }\n\n if (typeof yAxisHelper?.getBandwidth === 'function') {\n const xScale = xAxisHelper.getScale()\n\n const minY = Math.min(...xyList.map((item) => item.y)) - outerPadding\n const maxY = Math.max(...xyList.map((item) => item.y)) + outerPadding\n const minX = Math.min(...xScale.range())\n const maxX = Math.max(...xScale.range())\n\n return [\n // 左上\n {\n x: minX,\n y: minY,\n },\n // 右上\n {\n x: maxX,\n y: minY,\n },\n // 右下\n {\n x: maxX,\n y: maxY,\n },\n // 左下\n {\n x: minX,\n y: maxY,\n },\n ]\n }\n\n return []\n },\n label: {\n position: positionMap[textPosition],\n visible: true,\n text: text,\n style: {\n textAlign: textAlign,\n textBaseline: textBaseline,\n fill: textColor,\n fontSize: textFontSize,\n fontWeight: textFontWeight,\n },\n\n labelBackground: {\n visible: backgroundVisible,\n padding: backgroundPadding,\n style: {\n cornerRadius: backgroundBorderRadius ?? 4,\n fill: backgroundColor,\n stroke: backgroundBorderColor,\n strokeWidth: backgroundBorderWidth,\n },\n },\n },\n area: {\n style: {\n visible: true,\n fill: areaColor,\n fillOpacity: areaColorOpacity,\n stroke: areaBorderColor,\n strokeWidth: areaBorderWidth,\n cornerRadius: areaBorderRadius,\n },\n },\n }\n }) as ILineChartSpec['markArea']\n\n return {\n ...spec,\n markArea: markArea,\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 backgroundBorderColor,\n backgroundBorderRadius = 4,\n backgroundBorderWidth = 1,\n backgroundColor = '#191d24',\n backgroundPadding = 4,\n backgroundVisible = true,\n outerPadding = 8,\n areaColor = '#888888',\n areaColorOpacity = 0.15,\n areaBorderColor,\n areaBorderRadius,\n areaBorderWidth,\n } = annotationArea\n\n const dataset = advancedVSeed.dataset.flat()\n const selectedData = dataset.filter((datum) => selector(datum, selectorPoint))\n\n return {\n zIndex: ANNOTATION_Z_INDEX,\n regionRelative: true,\n positions: (data: Datum[], context: ICartesianSeries) => {\n const positionData = data.filter((item) => selectedData.some((datum) => isSubset(datum, item)))\n const xyList = positionData.map((datum) => context.dataToPosition(datum) as { x: number; y: number })\n\n const yAxisHelper = context.getYAxisHelper() as unknown as {\n getBandwidth: (depth?: number) => number\n getScale: () => {\n range: () => number[]\n }\n }\n const xAxisHelper = context.getXAxisHelper() as unknown as {\n getBandwidth: (depth?: number) => number\n getScale: () => {\n range: () => number[]\n }\n }\n\n if (typeof xAxisHelper?.getBandwidth === 'function') {\n const depth = context.fieldX.length ?? 0\n const xBandWidth = xAxisHelper?.getBandwidth?.(depth - 1)\n const yScale = yAxisHelper.getScale()\n\n const minX = Math.min(...xyList.map((item) => item.x)) - outerPadding\n const maxX = Math.max(...xyList.map((item) => item.x)) + xBandWidth + outerPadding\n const minY = Math.min(...yScale.range())\n const maxY = Math.max(...yScale.range())\n return [\n // 左上\n {\n x: minX,\n y: minY,\n },\n // 右上\n {\n x: maxX,\n y: minY,\n },\n // 右下\n {\n x: maxX,\n y: maxY,\n },\n // 左下\n {\n x: minX,\n y: maxY,\n },\n ]\n }\n\n if (typeof yAxisHelper?.getBandwidth === 'function') {\n const depth = context.fieldY.length ?? 0\n const yBandWidth = yAxisHelper?.getBandwidth?.(depth - 1)\n const xScale = xAxisHelper.getScale()\n\n const minY = Math.min(...xyList.map((item) => item.y)) - outerPadding\n const maxY = Math.max(...xyList.map((item) => item.y)) + yBandWidth + outerPadding\n const minX = Math.min(...xScale.range())\n const maxX = Math.max(...xScale.range())\n\n return [\n // 左上\n {\n x: minX,\n y: minY,\n },\n // 右上\n {\n x: maxX,\n y: minY,\n },\n // 右下\n {\n x: maxX,\n y: maxY,\n },\n // 左下\n {\n x: minX,\n y: maxY,\n },\n ]\n }\n\n return []\n },\n label: {\n position: positionMap[textPosition],\n visible: true,\n text: text,\n style: {\n textAlign: textAlign,\n textBaseline: textBaseline,\n fill: textColor,\n fontSize: textFontSize,\n fontWeight: textFontWeight,\n },\n\n labelBackground: {\n visible: backgroundVisible,\n padding: backgroundPadding,\n style: {\n cornerRadius: backgroundBorderRadius ?? 4,\n fill: backgroundColor,\n stroke: backgroundBorderColor,\n strokeWidth: backgroundBorderWidth,\n },\n },\n },\n area: {\n style: {\n visible: true,\n fill: areaColor,\n fillOpacity: areaColorOpacity,\n stroke: areaBorderColor,\n strokeWidth: areaBorderWidth,\n cornerRadius: areaBorderRadius,\n },\n },\n }\n }) as ILineChartSpec['markArea']\n\n return {\n ...spec,\n markArea: markArea,\n }\n}\n","import type { ICartesianCrosshairSpec, ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const verticalCrosshairLine: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n\n const config = advancedVSeed.config?.[chartType as 'line']?.crosshairLine\n if (!config) {\n return result\n }\n\n if (!result.crosshair) {\n result.crosshair = {}\n }\n\n const { visible = true, lineColor, labelColor, labelVisible, labelBackgroundColor } = config\n\n const crosshair = result.crosshair as ICartesianCrosshairSpec\n crosshair.xField = {\n visible,\n line: {\n type: 'line',\n style: {\n lineWidth: 1,\n opacity: 1,\n stroke: lineColor,\n lineDash: [4, 2],\n },\n },\n label: {\n visible: labelVisible,\n labelBackground: {\n visible: labelVisible,\n style: {\n fill: labelBackgroundColor,\n },\n },\n style: {\n fill: labelColor,\n },\n },\n }\n\n return result\n}\n","import type { ICartesianCrosshairSpec, ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const verticalCrosshairRect: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n\n const config = advancedVSeed.config?.[chartType as 'column']?.crosshairRect\n if (!config) {\n return result\n }\n\n if (!result.crosshair) {\n result.crosshair = {}\n }\n\n const { visible = true, rectColor, labelColor, labelVisible, labelBackgroundColor } = config\n const crosshair = result.crosshair as ICartesianCrosshairSpec\n crosshair.xField = {\n visible,\n line: {\n type: 'rect',\n style: {\n lineWidth: 0,\n opacity: 0.2,\n fill: rectColor,\n },\n },\n label: {\n visible: labelVisible,\n labelBackground: {\n visible: labelVisible,\n style: {\n fill: labelBackgroundColor,\n },\n },\n style: {\n fill: labelColor,\n },\n },\n }\n\n return result\n}\n","import type { ICartesianCrosshairSpec, ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const horizontalCrosshairRect: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n\n const config = advancedVSeed.config?.[chartType as 'column']?.crosshairRect\n if (!config) {\n return result\n }\n\n if (!result.crosshair) {\n result.crosshair = {}\n }\n\n const { visible = true, rectColor, labelColor, labelVisible, labelBackgroundColor } = config\n const crosshair = result.crosshair as ICartesianCrosshairSpec\n crosshair.yField = {\n visible,\n line: {\n type: 'rect',\n style: {\n lineWidth: 0,\n opacity: 0.2,\n fill: rectColor,\n },\n },\n label: {\n visible: labelVisible,\n labelBackground: {\n visible: labelVisible,\n style: {\n fill: labelBackgroundColor,\n },\n },\n style: {\n fill: labelColor,\n },\n },\n }\n\n return result\n}\n","import type { ICartesianCrosshairSpec, ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const horizontalCrosshairLine: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n\n const config = advancedVSeed.config?.[chartType as 'line']?.crosshairLine\n if (!config) {\n return result\n }\n\n if (!result.crosshair) {\n result.crosshair = {}\n }\n\n const { visible = true, lineColor, labelColor, labelVisible, labelBackgroundColor } = config\n\n const crosshair = result.crosshair as ICartesianCrosshairSpec\n crosshair.yField = {\n visible,\n line: {\n type: 'line',\n style: {\n lineWidth: 1,\n opacity: 1,\n stroke: lineColor,\n lineDash: [4, 2],\n },\n },\n label: {\n visible: labelVisible,\n labelBackground: {\n visible: labelVisible,\n style: {\n fill: labelBackgroundColor,\n },\n },\n style: {\n fill: labelColor,\n },\n },\n }\n\n return result\n}\n","import type { Spec, SpecPipe, SpecPipeline, SpecPipelineContext } from 'src/types'\nimport { execPipeline } from '../../../../utils'\nimport type { ICommonChartSpec, ILineSeriesSpec } from '@visactor/vchart'\n\nexport const series = (...args: SpecPipeline[]): SpecPipe => {\n const result = {\n type: 'common',\n padding: 0,\n region: [\n {\n clip: true,\n },\n ],\n } as ICommonChartSpec\n\n return (_, context) => {\n result.series = args.map((pipeline) => {\n return execPipeline<Spec, SpecPipelineContext>(pipeline, context, {})\n }) as ILineSeriesSpec[]\n\n return result\n }\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n xBand,\n yLinear,\n initLine,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n initPivot,\n datasetPivot,\n pivotDiscreteLegend,\n pivotIndicators,\n pivotAdapter,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n pointStyle,\n lineStyle,\n verticalCrosshairLine,\n pointStateDimensionHover,\n progressive,\n} from '../pipes'\n\nconst line: SpecPipeline = [\n initLine,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairLine,\n discreteLegend,\n pointStyle,\n pointStateDimensionHover,\n lineStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotLine: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initLine,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairLine,\n pointStyle,\n pointStateDimensionHover,\n lineStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const lineSpecPipeline: SpecPipeline = [pivotAdapter(line, pivotLine)]\n","import type { SpecPipeline } from 'src/types'\nimport {\n initColumn,\n datasetXY,\n xBand,\n yLinear,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n pivotAdapter,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n stackInverse,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n verticalCrosshairRect,\n stackCornerRadius,\n progressive,\n} from '../pipes'\n\nconst column: SpecPipeline = [\n initColumn,\n stackCornerRadius,\n stackInverse,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairRect,\n discreteLegend,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotColumn: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initColumn,\n stackCornerRadius,\n stackInverse,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairRect,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const columnSpecPipeline = [pivotAdapter(column, pivotColumn)]\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n xBand,\n yLinear,\n initColumnParallel,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n pivotIndicators,\n initPivot,\n datasetPivot,\n pivotAdapter,\n pivotDiscreteLegend,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n verticalCrosshairRect,\n stackCornerRadius,\n progressive,\n} from '../pipes'\n\nconst columnParallel: SpecPipeline = [\n initColumnParallel,\n stackCornerRadius,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n discreteLegend,\n verticalCrosshairRect,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotColumnParallel: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initColumnParallel,\n stackCornerRadius,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairRect,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const columnParallelSpecPipeline: SpecPipeline = [pivotAdapter(columnParallel, pivotColumnParallel)]\n","import type { SpecPipeline } from 'src/types'\nimport {\n initColumn,\n datasetXY,\n xBand,\n yLinear,\n percent,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n pivotAdapter,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n stackInverse,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n verticalCrosshairRect,\n stackCornerRadius,\n progressive,\n} from '../pipes'\n\nconst columnPercent: SpecPipeline = [\n initColumn,\n stackCornerRadius,\n stackInverse,\n color,\n backgroundColor,\n percent,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairRect,\n discreteLegend,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotColumnPercent: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initColumn,\n stackCornerRadius,\n stackInverse,\n color,\n percent,\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairRect,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const columnPercentSpecPipeline: SpecPipeline = [pivotAdapter(columnPercent, pivotColumnPercent)]\n","import type { SpecPipeline } from 'src/types'\nimport {\n initBar,\n datasetYX,\n xLinear,\n yBand,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n pivotAdapter,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotIndicatorsAsCol,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n horizontalCrosshairRect,\n stackCornerRadius,\n progressive,\n} from '../pipes'\n\nconst bar: SpecPipeline = [\n initBar,\n stackCornerRadius,\n color,\n backgroundColor,\n datasetYX,\n progressive,\n xLinear,\n yBand,\n label,\n tooltip,\n horizontalCrosshairRect,\n discreteLegend,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotBar: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsCol,\n datasetPivot,\n pivotIndicators([\n initBar,\n stackCornerRadius,\n color,\n backgroundColor,\n datasetYX,\n progressive,\n xLinear,\n yBand,\n label,\n label,\n tooltip,\n horizontalCrosshairRect,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const barSpecPipeline: SpecPipeline = [pivotAdapter(bar, pivotBar)]\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetYX,\n xLinear,\n yBand,\n initBarParallel,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n initPivot,\n datasetPivot,\n pivotDiscreteLegend,\n pivotIndicators,\n pivotAdapter,\n pivotIndicatorsAsCol,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n horizontalCrosshairRect,\n stackCornerRadius,\n progressive,\n} from '../pipes'\n\nconst barParallel: SpecPipeline = [\n initBarParallel,\n stackCornerRadius,\n color,\n backgroundColor,\n datasetYX,\n progressive,\n xLinear,\n yBand,\n label,\n tooltip,\n horizontalCrosshairRect,\n discreteLegend,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotBarParallel: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsCol,\n datasetPivot,\n pivotIndicators([\n initBarParallel,\n stackCornerRadius,\n color,\n backgroundColor,\n datasetYX,\n xLinear,\n yBand,\n label,\n tooltip,\n horizontalCrosshairRect,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const barParallelSpecPipeline: SpecPipeline = [pivotAdapter(barParallel, pivotBarParallel)]\n","import type { SpecPipeline } from 'src/types'\nimport {\n initBar,\n datasetYX,\n xLinear,\n yBand,\n percent,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n pivotAdapter,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotIndicatorsAsCol,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n horizontalCrosshairRect,\n stackCornerRadius,\n progressive,\n} from '../pipes'\n\nconst barPercent: SpecPipeline = [\n initBar,\n stackCornerRadius,\n color,\n backgroundColor,\n percent,\n datasetYX,\n progressive,\n xLinear,\n yBand,\n label,\n tooltip,\n horizontalCrosshairRect,\n discreteLegend,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotBarPercent: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsCol,\n datasetPivot,\n pivotIndicators([\n initBar,\n stackCornerRadius,\n color,\n backgroundColor,\n percent,\n datasetYX,\n yBand,\n xLinear,\n label,\n tooltip,\n horizontalCrosshairRect,\n barStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const barPercentSpecPipeline: SpecPipeline = [pivotAdapter(barPercent, pivotBarPercent)]\n","import type { SpecPipeline } from 'src/types'\nimport {\n xBand,\n yLinear,\n initArea,\n stackInverse,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotAdapter,\n initPivot,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n pointStyle,\n lineStyle,\n areaStyle,\n verticalCrosshairLine,\n pointStateDimensionHover,\n datasetXY,\n progressive,\n} from '../pipes'\n\nconst area: SpecPipeline = [\n initArea,\n stackInverse,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairLine,\n discreteLegend,\n pointStyle,\n pointStateDimensionHover,\n lineStyle,\n areaStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotArea: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initArea,\n color,\n backgroundColor,\n stackInverse,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairLine,\n pointStyle,\n pointStateDimensionHover,\n lineStyle,\n areaStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const areaSpecPipeline = [pivotAdapter(area, pivotArea)]\n","import type { SpecPipeline } from 'src/types'\nimport {\n percent,\n datasetXY,\n xBand,\n yLinear,\n initArea,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotAdapter,\n initPivot,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n stackInverse,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n pointStyle,\n lineStyle,\n areaStyle,\n verticalCrosshairLine,\n progressive,\n} from '../pipes'\n\nconst areaPercent: SpecPipeline = [\n initArea,\n stackInverse,\n color,\n backgroundColor,\n percent,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairLine,\n discreteLegend,\n pointStyle,\n lineStyle,\n areaStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotAreaPercent: SpecPipeline = [\n initPivot,\n\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initArea,\n stackInverse,\n color,\n backgroundColor,\n percent,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n tooltip,\n verticalCrosshairLine,\n pointStyle,\n lineStyle,\n areaStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const areaPercentSpecPipeline = [pivotAdapter(areaPercent, pivotAreaPercent)]\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n xBand,\n yLinear,\n backgroundColor,\n label,\n datasetPivot,\n pivotIndicators,\n pivotAdapter,\n initPivot,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n verticalCrosshairLine,\n initAreaRange,\n series,\n lineStyle,\n pointStyle,\n pointStateDimensionHover,\n areaStyle,\n progressive,\n} from '../pipes'\nimport { initAreaRangeLine1, initAreaRangeLine2 } from '../pipes/init/areaRange'\n\nconst areaRange: SpecPipeline = [\n series(\n [initAreaRange, areaStyle],\n [initAreaRangeLine1, lineStyle, pointStyle, pointStateDimensionHover],\n [initAreaRangeLine2, lineStyle, pointStyle, pointStateDimensionHover],\n ),\n datasetXY,\n progressive,\n\n backgroundColor,\n xBand,\n yLinear,\n label,\n verticalCrosshairLine,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotAreaRange: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n series(\n [initAreaRange, areaStyle],\n [initAreaRangeLine1, lineStyle, pointStyle, pointStateDimensionHover],\n [initAreaRangeLine2, lineStyle, pointStyle, pointStateDimensionHover],\n ),\n backgroundColor,\n datasetXY,\n progressive,\n xBand,\n yLinear,\n label,\n verticalCrosshairLine,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n]\n\nexport const areaRangeSpecPipeline = [pivotAdapter(areaRange, pivotAreaRange)]\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n yLinear,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n initPivot,\n datasetPivot,\n pivotDiscreteLegend,\n pivotIndicators,\n pivotAdapter,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n pointStyle,\n verticalCrosshairLine,\n xLinear,\n horizontalCrosshairLine,\n pointStateHover,\n initScatter,\n progressive\n} from '../pipes'\n\nconst scatter: SpecPipeline = [\n initScatter,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n xLinear,\n yLinear,\n label,\n tooltip,\n verticalCrosshairLine,\n horizontalCrosshairLine,\n discreteLegend,\n pointStyle,\n pointStateHover,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotScatter: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initScatter,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n xLinear,\n yLinear,\n label,\n tooltip,\n verticalCrosshairLine,\n horizontalCrosshairLine,\n pointStyle,\n pointStateHover,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const scatterSpecPipeline: SpecPipeline = [pivotAdapter(scatter, pivotScatter)]\n","import type { SpecPipeline } from 'src/types'\nimport {\n backgroundColor,\n color,\n datasetXY,\n datasetPivot,\n initPie,\n initPivot,\n label,\n discreteLegend,\n pivotAdapter,\n pivotColumnDimensions,\n pivotGridStyle,\n pivotIndicators,\n pivotIndicatorsAsRow,\n pivotDiscreteLegend,\n pivotRowDimensions,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n progressive,\n} from '../pipes'\n\nconst pie: SpecPipeline = [\n initPie,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n label,\n tooltip,\n discreteLegend,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotPie: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initPie,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n label,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const pieSpecPipeline: SpecPipeline = [pivotAdapter(pie, pivotPie)]\n","import type { SpecPipeline } from 'src/types'\nimport {\n backgroundColor,\n color,\n datasetXY,\n datasetPivot,\n initDonut,\n initPivot,\n label,\n discreteLegend,\n pivotAdapter,\n pivotColumnDimensions,\n pivotGridStyle,\n pivotIndicators,\n pivotIndicatorsAsRow,\n pivotDiscreteLegend,\n pivotRowDimensions,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n progressive,\n} from '../pipes'\n\nconst donut: SpecPipeline = [\n initDonut,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n label,\n tooltip,\n discreteLegend,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotDonut: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initDonut,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n label,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const donutSpecPipeline: SpecPipeline = [pivotAdapter(donut, pivotDonut)]\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n pivotAdapter,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotDiscreteLegend,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n stackInverse,\n verticalCrosshairRect,\n stackCornerRadius,\n initRose,\n radiusAxis,\n angleAxis,\n progressive,\n} from '../pipes'\n\nconst rose: SpecPipeline = [\n initRose,\n stackCornerRadius,\n stackInverse,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n radiusAxis,\n angleAxis,\n label,\n tooltip,\n verticalCrosshairRect,\n discreteLegend,\n]\n\nconst pivotRose: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initRose,\n stackCornerRadius,\n stackInverse,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n radiusAxis,\n angleAxis,\n label,\n tooltip,\n verticalCrosshairRect,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const roseSpecPipeline = [pivotAdapter(rose, pivotRose)]\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n pivotIndicators,\n initPivot,\n datasetPivot,\n pivotAdapter,\n pivotDiscreteLegend,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotRowDimensions,\n pivotColumnDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n verticalCrosshairRect,\n stackCornerRadius,\n initRoseParallel,\n radiusAxis,\n angleAxis,\n progressive,\n} from '../pipes'\n\nconst roseParallel: SpecPipeline = [\n initRoseParallel,\n stackCornerRadius,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n radiusAxis,\n angleAxis,\n label,\n tooltip,\n discreteLegend,\n verticalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n]\n\nconst pivotRoseParallel: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initRoseParallel,\n stackCornerRadius,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n radiusAxis,\n angleAxis,\n label,\n tooltip,\n verticalCrosshairRect,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationAreaBand,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const roseParallelSpecPipeline: SpecPipeline = [pivotAdapter(roseParallel, pivotRoseParallel)]\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n backgroundColor,\n label,\n tooltip,\n discreteLegend,\n color,\n initPivot,\n datasetPivot,\n pivotDiscreteLegend,\n pivotIndicators,\n pivotAdapter,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n pointStyle,\n lineStyle,\n verticalCrosshairLine,\n pointStateDimensionHover,\n initRadar,\n areaStyle,\n radarAngleAxis,\n radarRadiusAxis,\n progressive,\n} from '../pipes'\n\nconst radar: SpecPipeline = [\n initRadar,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n radarAngleAxis,\n radarRadiusAxis,\n label,\n tooltip,\n verticalCrosshairLine,\n discreteLegend,\n pointStyle,\n pointStateDimensionHover,\n lineStyle,\n areaStyle,\n // annotationPoint,\n // annotationVerticalLine,\n // annotationHorizontalLine,\n // annotationArea,\n]\n\nconst pivotRadar: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initRadar,\n color,\n backgroundColor,\n datasetXY,\n progressive,\n radarAngleAxis,\n radarRadiusAxis,\n label,\n tooltip,\n verticalCrosshairLine,\n pointStyle,\n pointStateDimensionHover,\n lineStyle,\n areaStyle,\n // annotationPoint,\n // annotationVerticalLine,\n // annotationHorizontalLine,\n // annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n pivotDiscreteLegend,\n]\n\nexport const radarSpecPipeline: SpecPipeline = [pivotAdapter(radar, pivotRadar)]\n","import type { SpecPipeline } from 'src/types'\nimport {\n backgroundColor,\n datasetXY,\n datasetPivot,\n initPivot,\n label,\n colorLegend,\n pivotAdapter,\n pivotColumnDimensions,\n pivotGridStyle,\n pivotIndicators,\n pivotIndicatorsAsRow,\n pivotRowDimensions,\n tooltip,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n initFunnel,\n linearColor,\n} from '../pipes'\n\nconst funnel: SpecPipeline = [\n initFunnel,\n linearColor,\n backgroundColor,\n datasetXY,\n label,\n tooltip,\n colorLegend,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotFunnel: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initFunnel,\n linearColor,\n backgroundColor,\n datasetXY,\n label,\n tooltip,\n colorLegend,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n]\n\nexport const funnelSpecPipeline: SpecPipeline = [pivotAdapter(funnel, pivotFunnel)]\n","import type { IHeatmapChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initHeatmap: SpecPipe = (spec, context) => {\n const result = { ...spec } as IHeatmapChartSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].color) {\n return result\n }\n\n result.type = 'heatmap'\n result.direction = 'vertical'\n result.xField = encoding[0].x[0]\n result.yField = encoding[0].y[0]\n result.valueField = encoding[0].color[0]\n result.padding = 0\n result.cell = {\n style: {\n shape: 'rect',\n stroke: '#ffffff',\n lineWidth: 1,\n fill: {\n field: encoding[0].color[0],\n scale: 'color',\n },\n },\n }\n result.axes = [\n {\n type: 'band',\n orient: 'left',\n bandPadding: 0,\n },\n {\n type: 'band',\n orient: 'bottom',\n bandPadding: 0,\n },\n ]\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n datasetXY,\n backgroundColor,\n label,\n tooltip,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotAdapter,\n pivotIndicatorsAsRow,\n pivotGridStyle,\n pivotColumnDimensions,\n pivotRowDimensions,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n pointStyle,\n lineStyle,\n pointStateDimensionHover,\n colorLegend,\n linearColor,\n labelColorInversion,\n} from '../pipes'\nimport { initHeatmap } from '../pipes/init/heatmap'\n\nconst heatmap: SpecPipeline = [\n initHeatmap,\n linearColor,\n backgroundColor,\n datasetXY,\n label,\n labelColorInversion,\n colorLegend,\n tooltip,\n pointStyle,\n pointStateDimensionHover,\n lineStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n]\n\nconst pivotHeatmap: SpecPipeline = [\n initPivot,\n pivotGridStyle,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initHeatmap,\n linearColor,\n backgroundColor,\n datasetXY,\n label,\n labelColorInversion,\n colorLegend,\n tooltip,\n pointStyle,\n pointStateDimensionHover,\n lineStyle,\n annotationPoint,\n annotationVerticalLine,\n annotationHorizontalLine,\n annotationArea,\n ]),\n pivotRowDimensions,\n pivotColumnDimensions,\n]\n\nexport const heatmapSpecPipeline: SpecPipeline = [pivotAdapter(heatmap, pivotHeatmap)]\n","import type { ListTableConstructorOptions } from '@visactor/vtable'\nimport type { SpecPipe } from 'src/types'\n\nexport const initTable: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { dataset } = advancedVSeed\n\n return {\n ...spec,\n records: dataset,\n widthMode: 'standard',\n heightMode: 'autoHeight',\n autoWrapText: true,\n columnResizeMode: 'all',\n showHeader: true,\n tooltip: {\n isShowOverflowTextTooltip: true,\n },\n animationAppear: {\n duration: 300,\n delay: 250,\n type: 'one-by-one',\n direction: 'row',\n },\n hover: {\n highlightMode: 'row',\n },\n theme: {\n underlayBackgroundColor: 'transparent',\n },\n } as ListTableConstructorOptions\n}\n","import type { PivotTableConstructorOptions } from '@visactor/vtable'\nimport type { SpecPipe } from 'src/types'\n\nexport const initPivotTable: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { dataset } = advancedVSeed\n\n return {\n ...spec,\n records: dataset,\n widthMode: 'standard',\n heightMode: 'autoHeight',\n autoWrapText: true,\n columnResizeMode: 'all',\n columnResizeType: 'column',\n showColumnHeader: true,\n showRowHeader: true,\n select: {\n highlightMode: 'cell',\n headerSelectMode: 'inline',\n },\n hover: {\n highlightMode: 'cross',\n },\n tooltip: {\n isShowOverflowTextTooltip: true,\n },\n widthAdaptiveMode: 'all',\n animationAppear: {\n duration: 300,\n delay: 250,\n type: 'one-by-one',\n direction: 'row',\n },\n theme: {\n underlayBackgroundColor: 'transparent',\n },\n } as PivotTableConstructorOptions\n}\n","import type { ColumnsDefine, ListTableConstructorOptions } from '@visactor/vtable'\nimport type { Dimension, DimensionGroup, Measure, MeasureGroup, MeasureTree, SpecPipe } from 'src/types'\n\nexport const measureTreeToColumns: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const measures = (advancedVSeed as unknown as { measures: MeasureTree }).measures\n const result = { ...spec } as ListTableConstructorOptions\n\n const eachNode = (node: Measure | MeasureGroup) => {\n if ('children' in node) {\n return {}\n }\n\n return {\n width: 'auto',\n }\n }\n const columns = treeTreeToColumns<Measure, MeasureGroup>(measures, eachNode)\n return {\n ...result,\n columns: [...(result.columns || []), ...columns] as ListTableConstructorOptions['columns'],\n }\n}\n\nexport const dimensionTreeToColumns: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const dimensions = (advancedVSeed as unknown as { dimensions: MeasureTree }).dimensions\n const result = { ...spec } as ListTableConstructorOptions\n const eachNode = (node: Measure | MeasureGroup) => {\n if ('children' in node) {\n return {}\n }\n\n return {\n width: 'auto',\n }\n }\n const columns = treeTreeToColumns<Dimension, DimensionGroup>(dimensions, eachNode)\n\n return {\n ...result,\n columns: [...(result.columns || []), ...columns] as ListTableConstructorOptions['columns'],\n }\n}\n\nconst treeTreeToColumns = <\n T extends { id: string; alias?: string },\n U extends { id: string; alias?: string; children?: (T | U)[] },\n>(\n tree: (T | U)[],\n callback?: (node: T | U) => object,\n): ColumnsDefine[] => {\n const result = tree.map((item) => {\n if ('children' in item && Array.isArray(item.children)) {\n const groupNode = item as unknown as U\n const field = groupNode.id\n const title = groupNode.alias ?? groupNode.id\n const props = callback?.(groupNode) || {}\n // group\n return {\n field,\n title,\n columns: treeTreeToColumns(item.children, callback),\n ...props,\n }\n } else {\n const field = item.id\n const title = item.alias ?? item.id\n const props = callback?.(item) || {}\n // leaf\n return {\n field,\n title,\n ...props,\n }\n }\n }) as unknown as ColumnsDefine[]\n\n return result || []\n}\n","import type { Dimensions, SpecPipe } from 'src/types'\n\nexport const pivotColumns: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const dimensions = advancedVSeed.dimensions as Dimensions\n const columns = dimensions.filter((item) => item['location'] === 'columnDimension')\n\n return {\n ...spec,\n columns: columns.map((item) => {\n return {\n dimensionKey: item.id,\n title: item.alias || item.id,\n width: 'auto',\n }\n }),\n }\n}\n","import type { Dimensions, SpecPipe } from 'src/types'\n\nexport const pivotRows: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const dimensions = advancedVSeed.dimensions as Dimensions\n const rows = dimensions.filter((item) => item['location'] === 'rowDimension')\n\n return {\n ...spec,\n rows: rows.map((item) => {\n return {\n dimensionKey: item.id,\n title: item.alias || item.id,\n width: 'auto',\n }\n }),\n }\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport { intl } from 'src/i18n'\nimport type { Measures, SpecPipe } from 'src/types'\n\nexport const pivotIndicators: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const measures = (advancedVSeed as unknown as { measures: Measures }).measures\n\n return {\n ...spec,\n indicatorsAsCol: true,\n indicatorTitle: intl.i18n`指标名称`,\n indicators: measures.map((item) => {\n return {\n cellType: 'text',\n indicatorKey: item.id,\n title: item.alias || item.id,\n width: 'auto',\n }\n }) as unknown as PivotChartConstructorOptions['indicators'],\n }\n}\n","import type { BaseTableConstructorOptions } from '@visactor/vtable/es/ts-types'\nimport { color } from 'd3-color'\nimport type { SpecPipe, TableConfig } from 'src/types'\n\nexport const bodyStyle: SpecPipe = (spec, context) => {\n const result = { ...spec } as BaseTableConstructorOptions\n const { advancedVSeed } = context\n const { customTheme, chartType } = advancedVSeed\n const themConfig = customTheme?.config?.[chartType] as TableConfig\n\n if (!result.theme || !themConfig) return result\n\n // basic\n const borderColor = themConfig.borderColor || 'rgb(224, 224, 224)'\n const backgroundColor = themConfig.bodyBackgroundColor || '#fff'\n const fontColor = themConfig.bodyFontColor || '#1B1F23'\n const fontSize = themConfig.bodyFontSize || 12\n // Interaction\n const hoverCellBgColor = themConfig.hoverBodyBackgroundColor || '#bedaff'\n const hoverInlineColor = color(hoverCellBgColor)?.copy({ opacity: 0.2 }).toString()\n\n result.theme.bodyStyle = {\n borderColor: borderColor,\n borderLineWidth: 1,\n padding: [8.6, 12, 8.6, 12],\n textAlign: 'right',\n hover: {\n cellBgColor: hoverCellBgColor,\n inlineRowBgColor: hoverInlineColor,\n inlineColumnBgColor: hoverInlineColor,\n },\n color: fontColor,\n fontSize: fontSize,\n fontStyle: 'normal',\n fontWeight: 'normal',\n fontVariant: 'normal',\n bgColor: backgroundColor,\n lineHeight: fontSize * 1.5,\n }\n\n return result\n}\n","import type { BaseTableConstructorOptions } from '@visactor/vtable/es/ts-types'\nimport { color } from 'd3-color'\nimport type { SpecPipe, TableConfig } from 'src/types'\n\nexport const headerStyle: SpecPipe = (spec, context) => {\n const result = { ...spec } as BaseTableConstructorOptions\n const { advancedVSeed } = context\n const { customTheme, chartType } = advancedVSeed\n const themConfig = customTheme?.config?.[chartType] as TableConfig\n\n if (!result.theme || !themConfig) return result\n\n // basic\n const borderColor = themConfig.borderColor || 'rgb(224, 224, 224)'\n const backgroundColor = themConfig.headerBackgroundColor || '#EEF1F5'\n const fontColor = themConfig.headerFontColor || '#1B1F23'\n const fontSize = themConfig.headerFontSize || 12\n // Interaction\n const hoverCellBgColor = themConfig.hoverHeaderBackgroundColor || '#bedaff'\n const hoverInlineColor = themConfig.hoverHeaderBackgroundColor\n\n result.theme.headerStyle = {\n borderColor: borderColor,\n borderLineWidth: 1,\n padding: [8, 12, 8, 12],\n textAlign: 'center',\n hover: {\n cellBgColor: color(hoverCellBgColor)?.copy({ opacity: 1 }).brighter(0.5).toString(),\n inlineRowBgColor: hoverInlineColor,\n inlineColumnBgColor: hoverInlineColor,\n },\n frameStyle: {\n borderColor: [null, null, borderColor, null],\n borderLineWidth: 1,\n },\n fontSize: fontSize,\n fontVariant: 'normal',\n fontStyle: 'normal',\n fontWeight: 'bold',\n color: fontColor,\n bgColor: backgroundColor,\n lineHeight: fontSize * 1.5,\n }\n\n return result\n}\n","import type { BaseTableConstructorOptions } from '@visactor/vtable/es/ts-types'\nimport { color } from 'd3-color'\n\nimport type { SpecPipe, TableConfig } from 'src/types'\n\nexport const rowHeaderStyle: SpecPipe = (spec, context) => {\n const result = { ...spec } as BaseTableConstructorOptions\n const { advancedVSeed } = context\n const { customTheme, chartType } = advancedVSeed\n const themConfig = customTheme?.config?.[chartType] as TableConfig\n\n if (!result.theme || !themConfig) return result\n\n // basic\n const borderColor = themConfig.borderColor || 'rgb(224, 224, 224)'\n const backgroundColor = themConfig.headerBackgroundColor || '#EEF1F5'\n const fontColor = themConfig.headerFontColor || '#1B1F23'\n const fontSize = themConfig.headerFontSize || 12\n // Interaction\n const hoverCellBgColor = themConfig.hoverHeaderBackgroundColor || '#bedaff'\n const hoverInlineColor = themConfig.hoverHeaderBackgroundColor\n\n result.theme.rowHeaderStyle = {\n borderColor: borderColor,\n borderLineWidth: 1,\n padding: [8.6, 12, 8.6, 12],\n textAlign: 'left',\n hover: {\n cellBgColor: color(hoverCellBgColor)?.copy({ opacity: 1 }).brighter(0.5).toString(),\n inlineRowBgColor: hoverInlineColor,\n inlineColumnBgColor: hoverInlineColor,\n },\n frameStyle: {\n borderColor: [null, borderColor, null, null],\n borderLineWidth: 1,\n },\n fontSize: fontSize,\n fontVariant: 'normal',\n fontStyle: 'normal',\n fontWeight: 'bold',\n color: fontColor,\n bgColor: backgroundColor,\n lineHeight: fontSize * 1.5,\n }\n\n return result\n}\n","import type { BaseTableConstructorOptions } from '@visactor/vtable/es/ts-types'\nimport { color } from 'd3-color'\nimport type { SpecPipe, TableConfig } from 'src/types'\n\nexport const cornerHeaderStyle: SpecPipe = (spec, context) => {\n const result = { ...spec } as BaseTableConstructorOptions\n const { advancedVSeed } = context\n const { customTheme, chartType } = advancedVSeed\n const themConfig = customTheme?.config?.[chartType] as TableConfig\n\n if (!result.theme || !themConfig) return result\n\n // basic\n const borderColor = themConfig.borderColor || 'rgb(224, 224, 224)'\n const backgroundColor = themConfig.headerBackgroundColor || '#EEF1F5'\n const fontColor = themConfig.headerFontColor || '#1B1F23'\n const fontSize = themConfig.headerFontSize || 12\n // Interaction\n const hoverCellBgColor = themConfig.hoverHeaderBackgroundColor || '#bedaff'\n const hoverInlineColor = 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: color(hoverCellBgColor)?.copy({ opacity: 1 }).brighter(0.5).toString(),\n inlineRowBgColor: hoverInlineColor,\n inlineColumnBgColor: hoverInlineColor,\n },\n frameStyle: {\n borderColor: [null, borderColor, borderColor, null],\n borderLineWidth: 1,\n },\n fontSize: fontSize,\n fontVariant: 'normal',\n fontStyle: 'normal',\n fontWeight: 'bold',\n color: fontColor,\n bgColor: backgroundColor,\n lineHeight: fontSize * 1.5,\n }\n\n return result\n}\n","import type { BaseTableConstructorOptions } from '@visactor/vtable/es/ts-types'\nimport type { SpecPipe, TableConfig } from 'src/types'\n\nexport const frameStyle: SpecPipe = (spec, context) => {\n const result = { ...spec } as BaseTableConstructorOptions\n const { advancedVSeed } = context\n const { customTheme, chartType } = advancedVSeed\n const themConfig = customTheme?.config?.[chartType] as TableConfig\n\n if (!result.theme || !themConfig) return result\n\n const borderColor = themConfig.borderColor || 'rgb(224, 224, 224)'\n\n result.theme.frameStyle = {\n borderColor,\n borderLineWidth: 0,\n cornerRadius: 4,\n }\n\n return result\n}\n","import type { BaseTableConstructorOptions } from '@visactor/vtable/es/ts-types'\nimport { color } from 'd3-color'\nimport type { SpecPipe, TableConfig } from 'src/types'\n\nexport const selectionStyle: SpecPipe = (spec, context) => {\n const result = { ...spec } as BaseTableConstructorOptions\n const { advancedVSeed } = context\n const { customTheme, chartType } = advancedVSeed\n const themConfig = customTheme?.config?.[chartType] as TableConfig\n\n if (!result.theme || !themConfig) return result\n\n const borderColor = themConfig.selectedBorderColor || 'rgb(224, 224, 224)'\n\n result.theme.selectionStyle = {\n cellBorderColor: borderColor,\n cellBorderLineWidth: 2,\n cellBgColor: color(borderColor)\n ?.copy({\n opacity: 0.15,\n })\n .toString(),\n }\n\n return result\n}\n","import type { SpecPipeline } from 'src/types'\nimport { initTable, dimensionTreeToColumns, measureTreeToColumns, bodyStyle, headerStyle, frameStyle, selectionStyle } from '../pipes'\n\nexport const tableSpecPipeline: SpecPipeline = [\n initTable,\n dimensionTreeToColumns,\n measureTreeToColumns,\n bodyStyle,\n headerStyle,\n frameStyle,\n selectionStyle,\n]\n","import type { SpecPipeline } from 'src/types'\nimport {\n initPivotTable,\n pivotColumns,\n pivotRows,\n pivotIndicators,\n bodyStyle,\n headerStyle,\n rowHeaderStyle,\n cornerHeaderStyle,\n frameStyle,\n selectionStyle,\n} from '../pipes'\n\nexport const pivotTableSpecPipeline: SpecPipeline = [\n initPivotTable,\n pivotColumns,\n pivotRows,\n pivotIndicators,\n bodyStyle,\n headerStyle,\n rowHeaderStyle,\n cornerHeaderStyle,\n frameStyle,\n selectionStyle,\n]\n","import type { AdvancedPipelineContext, AdvancedVSeed } from 'src/types'\nimport { execPipeline } from '../../pipeline'\nimport type { Builder } from './builder'\n\nexport const buildAdvanced = (builder: Builder): AdvancedVSeed | null => {\n const start = typeof performance !== 'undefined' ? performance.now() : Date.now()\n const { chartType } = builder.vseed\n if (!chartType) {\n throw new Error('chartType is nil in buildAdvanced')\n }\n\n const pipeline = builder.getAdvancedPipeline(chartType)\n if (!pipeline) {\n throw new Error(`no advanced pipeline for chartType ${chartType}`)\n }\n\n const context: AdvancedPipelineContext = {\n vseed: builder.vseed,\n customTheme: builder.getThemeMap(),\n }\n\n try {\n return execPipeline<AdvancedVSeed, AdvancedPipelineContext>(pipeline, context)\n } catch (e) {\n console.error(e)\n throw new Error(`buildAdvanced error, see error info in console`)\n } finally {\n const end = typeof performance !== 'undefined' ? performance.now() : Date.now()\n builder.performance['buildAdvanced'] = `${(end - start).toFixed(4)}ms`\n }\n}\n","import type { Spec } from 'src/types'\nimport type { Builder } from './builder'\nimport type { AdvancedVSeed, SpecPipelineContext } from 'src/types'\nimport { execPipeline } from '../../pipeline'\n\nexport const buildSpec = (builder: Builder, advancedVSeed: AdvancedVSeed): Spec => {\n const start = typeof performance !== 'undefined' ? performance.now() : Date.now()\n\n const { chartType } = builder.vseed\n if (!chartType) {\n throw new Error('chartType is nil in buildSpec')\n }\n\n const pipeline = builder.getSpecPipeline(chartType)\n if (!pipeline) {\n throw new Error(`no spec pipeline for chartType ${chartType}`)\n }\n\n const context: SpecPipelineContext = {\n vseed: builder.vseed,\n advancedVSeed,\n }\n try {\n return execPipeline<Spec, SpecPipelineContext>(pipeline, context)\n } catch (e) {\n console.error(e)\n throw new Error(`buildSpec error, see error info in console`)\n } finally {\n const end = typeof performance !== 'undefined' ? performance.now() : Date.now()\n builder.performance['buildSpec'] = `${(end - start).toFixed(4)}ms`\n }\n}\n","import type { Spec } from 'src/types'\nimport type { Builder } from './builder'\n\nexport const build = (builder: Builder): Spec => {\n // console.log('debug vseed', builder.vseed)\n const advancedVSeed = builder.buildAdvanced()\n builder.advancedVSeed = advancedVSeed\n // console.log('debug advancedVSeed', advancedVSeed)\n if (!advancedVSeed) {\n throw new Error('advancedVSeed is null')\n }\n const spec = builder.buildSpec(advancedVSeed)\n builder.spec = spec\n // console.log('debug spec', spec)\n return spec\n}\n","import { unique } from 'remeda'\nimport type { Builder } from '../builder'\n\nexport const getColorItems = (builder: Builder): string[] => {\n const advancedVSeed = builder.advancedVSeed\n if (!advancedVSeed) {\n return []\n }\n\n const { datasetReshapeInfo } = advancedVSeed\n const colorItems = unique(datasetReshapeInfo.flatMap((d) => d.unfoldInfo.colorItems))\n const colorIdMap = datasetReshapeInfo.reduce<Record<string, string>>((prev, cur) => {\n return { ...prev, ...cur.unfoldInfo.colorIdMap }\n }, {})\n\n return colorItems.map((d) => colorIdMap[d])\n}\n\nexport const getColorIdMap = (builder: Builder): Record<string, string> => {\n const advancedVSeed = builder.advancedVSeed\n if (!advancedVSeed) {\n return {}\n }\n\n const { datasetReshapeInfo } = advancedVSeed\n const colorIdMap = datasetReshapeInfo.reduce<Record<string, string>>((prev, cur) => {\n return { ...prev, ...cur.unfoldInfo.colorIdMap }\n }, {})\n\n return colorIdMap\n}\n","import type {\n AdvancedPipe,\n AdvancedPipeline,\n AdvancedVSeed,\n ChartType,\n CustomThemeConfig,\n Spec,\n SpecPipe,\n SpecPipeline,\n VSeed,\n VSeedBuilder,\n} from 'src/types'\nimport { buildAdvanced } from './buildAdvanced'\nimport { buildSpec } from './buildSpec'\nimport { build } from './build'\nimport { intl } from 'src/i18n'\nimport { getColorIdMap, getColorItems } from './advanced'\n\nexport class Builder implements VSeedBuilder {\n private _vseed: VSeed\n private _advancedVSeed: AdvancedVSeed | null = null\n private _spec: Spec | null = null\n private _performance: Record<string, string | number> = {}\n\n constructor(vseed: VSeed) {\n this._vseed = vseed\n this._vseed.locale = vseed.locale || intl.getLocale()\n }\n\n build = () => build(this)\n\n buildSpec = (advanced: AdvancedVSeed) => buildSpec(this, advanced)\n\n buildAdvanced = () => buildAdvanced(this)\n\n 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 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 getTheme = (themeKey: string) => Builder._themeMap[themeKey]\n getThemeMap = () => Builder._themeMap\n\n getColorItems = () => getColorItems(this)\n getColorIdMap = () => getColorIdMap(this)\n\n get vseed() {\n return this._vseed\n }\n\n set vseed(value) {\n this._vseed = value\n }\n\n get advancedVSeed() {\n return this._advancedVSeed\n }\n\n set advancedVSeed(value) {\n this._advancedVSeed = value\n }\n\n get spec() {\n return this._spec\n }\n\n set spec(value) {\n this._spec = value\n }\n\n get performance() {\n return this._performance\n }\n\n set performance(value) {\n this._performance = value\n }\n\n static _advancedPipelineMap: Partial<Record<ChartType, AdvancedPipeline>> = {}\n static _specPipelineMap: Partial<Record<ChartType, SpecPipeline>> = {}\n\n static _customAdvancedPipe: Partial<Record<ChartType, AdvancedPipe>> = {}\n static _customSpecPipe: Partial<Record<ChartType, SpecPipe>> = {}\n\n static _themeMap: Record<string, CustomThemeConfig> = {}\n static from = (vseed: VSeed) => new Builder(vseed)\n}\n","import {\n areaAdvancedPipeline,\n areaPercentAdvancedPipeline,\n areaPercentSpecPipeline,\n areaRangeAdvancedPipeline,\n areaRangeSpecPipeline,\n areaSpecPipeline,\n barAdvancedPipeline,\n barParallelAdvancedPipeline,\n barParallelSpecPipeline,\n barPercentAdvancedPipeline,\n barPercentSpecPipeline,\n barSpecPipeline,\n columnAdvancedPipeline,\n columnParallelAdvancedPipeline,\n columnParallelSpecPipeline,\n columnPercentAdvancedPipeline,\n columnPercentSpecPipeline,\n columnSpecPipeline,\n donutAdvancedPipeline,\n donutSpecPipeline,\n funnelAdvancedPipeline,\n funnelSpecPipeline,\n heatmapAdvancedPipeline,\n heatmapSpecPipeline,\n lineAdvancedPipeline,\n lineSpecPipeline,\n pieAdvancedPipeline,\n pieSpecPipeline,\n pivotTableAdvancedPipeline,\n pivotTableSpecPipeline,\n radarAdvancedPipeline,\n radarSpecPipeline,\n roseAdvancedPipeline,\n roseParallelAdvancedPipeline,\n roseParallelSpecPipeline,\n roseSpecPipeline,\n scatterAdvancedPipeline,\n scatterSpecPipeline,\n tableAdvancedPipeline,\n tableSpecPipeline,\n} from '../../pipeline'\nimport { Builder } from '../builder'\n\nexport const registerColumn = () => {\n Builder._advancedPipelineMap['column'] = columnAdvancedPipeline\n Builder._specPipelineMap['column'] = columnSpecPipeline\n}\n\nexport const registerBar = () => {\n Builder._advancedPipelineMap['bar'] = barAdvancedPipeline\n Builder._specPipelineMap['bar'] = barSpecPipeline\n}\n\nexport const registerLine = () => {\n Builder._advancedPipelineMap['line'] = lineAdvancedPipeline\n Builder._specPipelineMap['line'] = lineSpecPipeline\n}\n\nexport const registerArea = () => {\n Builder._advancedPipelineMap['area'] = areaAdvancedPipeline\n Builder._specPipelineMap['area'] = areaSpecPipeline\n}\n\nexport const registerAreaPercent = () => {\n Builder._advancedPipelineMap['areaPercent'] = areaPercentAdvancedPipeline\n Builder._specPipelineMap['areaPercent'] = areaPercentSpecPipeline\n}\n\nexport const registerAreaRange = () => {\n Builder._advancedPipelineMap['areaRange'] = areaRangeAdvancedPipeline\n Builder._specPipelineMap['areaRange'] = areaRangeSpecPipeline\n}\n\nexport const registerBarPercent = () => {\n Builder._advancedPipelineMap['barPercent'] = barPercentAdvancedPipeline\n Builder._specPipelineMap['barPercent'] = barPercentSpecPipeline\n}\n\nexport const registerColumnPercent = () => {\n Builder._advancedPipelineMap['columnPercent'] = columnPercentAdvancedPipeline\n Builder._specPipelineMap['columnPercent'] = columnPercentSpecPipeline\n}\n\nexport const registerColumnParallel = () => {\n Builder._advancedPipelineMap['columnParallel'] = columnParallelAdvancedPipeline\n Builder._specPipelineMap['columnParallel'] = columnParallelSpecPipeline\n}\n\nexport const registerBarParallel = () => {\n Builder._advancedPipelineMap['barParallel'] = barParallelAdvancedPipeline\n Builder._specPipelineMap['barParallel'] = barParallelSpecPipeline\n}\n\nexport const registerPie = () => {\n Builder._advancedPipelineMap['pie'] = pieAdvancedPipeline\n Builder._specPipelineMap['pie'] = pieSpecPipeline\n}\n\nexport const registerDonut = () => {\n Builder._advancedPipelineMap['donut'] = donutAdvancedPipeline\n Builder._specPipelineMap['donut'] = donutSpecPipeline\n}\n\nexport const registerRose = () => {\n Builder._advancedPipelineMap['rose'] = roseAdvancedPipeline\n Builder._specPipelineMap['rose'] = roseSpecPipeline\n}\n\nexport const registerRoseParallel = () => {\n Builder._advancedPipelineMap['roseParallel'] = roseParallelAdvancedPipeline\n Builder._specPipelineMap['roseParallel'] = roseParallelSpecPipeline\n}\n\nexport const registerFunnel = () => {\n Builder._advancedPipelineMap['funnel'] = funnelAdvancedPipeline\n Builder._specPipelineMap['funnel'] = funnelSpecPipeline\n}\n\nexport const registerScatter = () => {\n Builder._advancedPipelineMap['scatter'] = scatterAdvancedPipeline\n Builder._specPipelineMap['scatter'] = scatterSpecPipeline\n}\n\nexport const registerTable = () => {\n Builder._advancedPipelineMap['table'] = tableAdvancedPipeline\n Builder._specPipelineMap['table'] = tableSpecPipeline\n}\n\nexport const registerPivotTable = () => {\n Builder._advancedPipelineMap['pivotTable'] = pivotTableAdvancedPipeline\n Builder._specPipelineMap['pivotTable'] = pivotTableSpecPipeline\n}\nexport const registerHeatmap = () => {\n Builder._advancedPipelineMap['heatmap'] = heatmapAdvancedPipeline\n Builder._specPipelineMap['heatmap'] = heatmapSpecPipeline\n}\nexport const registerRadar = () => {\n Builder._advancedPipelineMap['radar'] = radarAdvancedPipeline\n Builder._specPipelineMap['radar'] = radarSpecPipeline\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: 100,\n labelAutoRotate: false,\n labelAutoRotateAngleRange: [0, -45, -90],\n label: {\n visible: true,\n labelAngle: 0,\n labelColor: '#797B85',\n labelFontSize: 12,\n labelFontWeight: 400,\n },\n title: {\n visible: false,\n titleText: '',\n titleColor: '#646A73',\n titleFontSize: 12,\n titleFontWeight: 400,\n },\n grid: {\n visible: false,\n gridColor: '#36415926',\n gridWidth: 0.5,\n },\n tick: {\n visible: false,\n tickInside: false,\n tickSize: 4,\n tickColor: '#3641594d',\n },\n line: {\n visible: true,\n lineColor: '#3641594d',\n lineWidth: 1,\n },\n }\n const barBandAxis: YBandAxis = {\n ...bandAxis,\n labelAutoHide: false,\n labelAutoHideGap: 1,\n labelAutoLimit: false,\n labelAutoLimitLength: undefined,\n labelAutoRotate: false,\n labelAutoRotateAngleRange: [0, -45, -90],\n }\n\n const crosshairLine = {\n visible: true,\n labelVisible: true,\n lineColor: '#3641594d',\n labelColor: '#ffffff',\n labelBackgroundColor: '#364159',\n }\n const crosshairRect = {\n visible: true,\n labelVisible: true,\n rectColor: '#3641594d',\n labelColor: '#ffffff',\n labelBackgroundColor: '#364159',\n }\n\n const baseConfig: {\n backgroundColor?: BackgroundColor\n color?: Color\n label?: Label\n tooltip?: Tooltip\n legend?: Legend\n } = {\n backgroundColor: 'transparent',\n color: {\n colorScheme: [\n '#8D72F6',\n '#5766EC',\n '#66A3FE',\n '#51D5E6',\n '#4EC0B3',\n '#F9DF90',\n '#F9AD71',\n '#ED8888',\n '#E9A0C3',\n '#D77DD3',\n ],\n },\n label: {\n enable: true,\n },\n tooltip: {\n enable: true,\n },\n legend: {\n enable: true,\n border: true,\n maxSize: 1,\n shapeType: 'rectRound',\n position: 'rt',\n labelFontColor: '#646A73',\n labelFontSize: 12,\n labelFontWeight: 400,\n },\n }\n const tableConfig: TableConfig = {\n borderColor: '#e3e5eb',\n\n bodyFontSize: 12,\n bodyFontColor: '#141414',\n bodyBackgroundColor: 'transparent',\n\n headerFontSize: 12,\n headerFontColor: '#21252c',\n headerBackgroundColor: '#f6f7f9',\n\n hoverBodyBackgroundColor: '#bedaff',\n hoverHeaderBackgroundColor: '#D9DDE488',\n selectedBorderColor: '#4080ff',\n }\n\n return {\n config: {\n // table\n table: tableConfig,\n pivotTable: tableConfig,\n // cartesian\n line: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine,\n },\n column: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairRect,\n stackCornerRadius: [4, 4, 0, 0],\n },\n columnParallel: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairRect,\n stackCornerRadius: [4, 4, 0, 0],\n },\n columnPercent: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairRect,\n stackCornerRadius: [4, 4, 0, 0],\n },\n bar: {\n ...baseConfig,\n xAxis: linearAxis,\n yAxis: barBandAxis,\n crosshairRect,\n stackCornerRadius: [0, 4, 4, 0],\n },\n barParallel: {\n ...baseConfig,\n xAxis: linearAxis,\n yAxis: barBandAxis,\n crosshairRect,\n stackCornerRadius: [0, 4, 4, 0],\n },\n barPercent: {\n ...baseConfig,\n xAxis: linearAxis,\n yAxis: barBandAxis,\n crosshairRect,\n stackCornerRadius: [0, 4, 4, 0],\n },\n area: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine,\n },\n areaPercent: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine,\n },\n areaRange: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine,\n },\n scatter: {\n ...baseConfig,\n xAxis: {\n ...linearAxis,\n line: {\n ...linearAxis.line,\n visible: true,\n },\n },\n yAxis: {\n ...linearAxis,\n line: {\n ...linearAxis.line,\n visible: true,\n },\n },\n crosshairLine,\n },\n // polar\n pie: {\n ...baseConfig,\n },\n donut: {\n ...baseConfig,\n },\n radar: {\n ...baseConfig,\n },\n rose: {\n ...baseConfig,\n },\n roseParallel: {\n ...baseConfig,\n },\n // other\n funnel: {\n ...baseConfig,\n color: {\n colorScheme: [\n '#5766EC',\n '#6372F0',\n '#7080F4',\n '#7C8CFA',\n '#8998FF',\n '#95A3FF',\n '#A0AEFF',\n '#ACB9FF',\n '#B7C4FF',\n '#C2CEFF',\n ].reverse(),\n },\n },\n heatmap: {\n ...baseConfig,\n color: {\n colorScheme: [\n '#5766EC',\n '#6372F0',\n '#7080F4',\n '#7C8CFA',\n '#8998FF',\n '#95A3FF',\n '#A0AEFF',\n '#ACB9FF',\n '#B7C4FF',\n '#C2CEFF',\n ].reverse(),\n },\n },\n },\n }\n}\n","import type {\n BackgroundColor,\n Color,\n CustomThemeConfig,\n Label,\n Legend,\n TableConfig,\n Tooltip,\n YBandAxis,\n YLinearAxis,\n} from 'src/types'\n\nexport const darkTheme = (): CustomThemeConfig => {\n const linearAxis: YLinearAxis = {\n nice: true,\n zero: true,\n label: {\n visible: true,\n labelAngle: 0,\n labelColor: '#E2E3E6',\n labelFontSize: 12,\n labelFontWeight: 400,\n },\n title: {\n visible: false,\n titleText: '',\n titleColor: '#FDFDFD',\n titleFontSize: 12,\n titleFontWeight: 400,\n },\n grid: {\n visible: true,\n gridColor: '#404349',\n gridWidth: 0.5,\n },\n tick: {\n visible: false,\n tickInside: false,\n tickSize: 4,\n tickColor: '#4B4F54',\n },\n line: {\n visible: false,\n lineColor: '#4B4F54',\n lineWidth: 1,\n },\n }\n const bandAxis: YBandAxis = {\n labelAutoHide: true,\n labelAutoHideGap: 4,\n labelAutoLimit: true,\n labelAutoLimitLength: 100,\n labelAutoRotate: false,\n labelAutoRotateAngleRange: [0, -45, -90],\n label: {\n visible: true,\n labelAngle: 0,\n labelColor: '#E2E3E6',\n labelFontSize: 12,\n labelFontWeight: 400,\n },\n title: {\n visible: false,\n titleText: '',\n titleColor: '#FDFDFD',\n titleFontSize: 12,\n titleFontWeight: 400,\n },\n grid: {\n visible: false,\n gridColor: '#404349',\n gridWidth: 0.5,\n },\n tick: {\n visible: false,\n tickInside: false,\n tickSize: 4,\n tickColor: '#4B4F54',\n },\n line: {\n visible: true,\n lineColor: '#4B4F54',\n lineWidth: 1,\n },\n }\n const barBandAxis: YBandAxis = {\n ...bandAxis,\n labelAutoHide: false,\n labelAutoHideGap: 1,\n labelAutoLimit: false,\n labelAutoLimitLength: undefined,\n labelAutoRotate: false,\n labelAutoRotateAngleRange: [0, -45, -90],\n }\n const crosshairLine = {\n visible: true,\n labelVisible: true,\n lineColor: '#E2E3E6',\n labelColor: '#4B4F54',\n labelBackgroundColor: '#ffffff',\n }\n const crosshairRect = {\n visible: true,\n labelVisible: true,\n lineColor: '#E2E3E6',\n labelColor: '#4B4F54',\n labelBackgroundColor: '#ffffff',\n }\n\n const baseConfig: {\n backgroundColor?: BackgroundColor\n color?: Color\n label?: Label\n tooltip?: Tooltip\n legend?: Legend\n } = {\n backgroundColor: 'transparent',\n color: {\n colorScheme: [\n '#2E62F1',\n '#4DC36A',\n '#FF8406',\n '#FFCC00',\n '#4F44CF',\n '#5AC8FA',\n '#003A8C',\n '#B08AE2',\n '#FF6341',\n '#98DD62',\n ],\n },\n label: {\n enable: true,\n },\n tooltip: {\n enable: true,\n },\n legend: {\n enable: true,\n border: true,\n maxSize: 1,\n position: 'rt',\n shapeType: 'rectRound',\n labelFontColor: '#FDFDFD',\n labelFontSize: 12,\n labelFontWeight: 400,\n },\n }\n\n const tableConfig: TableConfig = {\n borderColor: '#4b4e53',\n\n bodyFontSize: 12,\n bodyFontColor: '#fdfdfd',\n bodyBackgroundColor: 'transparent',\n\n headerFontSize: 12,\n headerFontColor: '#fdfdfd',\n headerBackgroundColor: '#36393e',\n\n hoverBodyBackgroundColor: '#4284ff66',\n hoverHeaderBackgroundColor: '#5f5f5f88',\n selectedBorderColor: '#3073F2',\n }\n\n return {\n config: {\n table: tableConfig,\n pivotTable: tableConfig,\n\n // cartesian\n line: {\n ...baseConfig,\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine: crosshairLine,\n },\n column: {\n ...baseConfig,\n\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairRect: crosshairRect,\n stackCornerRadius: [4, 4, 0, 0],\n },\n columnParallel: {\n ...baseConfig,\n\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairRect: crosshairRect,\n stackCornerRadius: [4, 4, 0, 0],\n },\n columnPercent: {\n ...baseConfig,\n\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairRect: crosshairRect,\n stackCornerRadius: [4, 4, 0, 0],\n },\n bar: {\n ...baseConfig,\n\n xAxis: linearAxis,\n yAxis: barBandAxis,\n crosshairRect: crosshairRect,\n stackCornerRadius: [0, 4, 4, 0],\n },\n barParallel: {\n ...baseConfig,\n\n xAxis: linearAxis,\n yAxis: barBandAxis,\n crosshairRect: crosshairRect,\n stackCornerRadius: [0, 4, 4, 0],\n },\n barPercent: {\n ...baseConfig,\n\n xAxis: linearAxis,\n yAxis: barBandAxis,\n crosshairRect: crosshairRect,\n stackCornerRadius: [0, 4, 4, 0],\n },\n area: {\n ...baseConfig,\n\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine: crosshairLine,\n },\n areaPercent: {\n ...baseConfig,\n\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine: crosshairLine,\n },\n areaRange: {\n ...baseConfig,\n\n xAxis: bandAxis,\n yAxis: linearAxis,\n crosshairLine: crosshairLine,\n },\n scatter: {\n ...baseConfig,\n\n xAxis: {\n ...linearAxis,\n line: {\n ...linearAxis.line,\n visible: true,\n },\n },\n yAxis: {\n ...linearAxis,\n line: {\n ...linearAxis.line,\n visible: true,\n },\n },\n crosshairLine,\n },\n // polar\n pie: {\n ...baseConfig,\n },\n donut: {\n ...baseConfig,\n },\n radar: {\n ...baseConfig,\n },\n rose: {\n ...baseConfig,\n },\n roseParallel: {\n ...baseConfig,\n },\n // other\n funnel: {\n ...baseConfig,\n color: {\n colorScheme: [\n '#2E62F1',\n '#3A6EF6',\n '#4780FA',\n '#548CFE',\n '#6198FF',\n '#6FA3FF',\n '#7CACFF',\n '#88B7FF',\n '#94C2FF',\n '#A0CEFF',\n ],\n },\n },\n heatmap: {\n ...baseConfig,\n },\n },\n }\n}\n","import type { CustomThemeConfig } from 'src/types'\nimport { Builder } from '../builder'\nimport { darkTheme, lightTheme } from '../../theme'\n\nexport const registerCustomTheme = (\n key: string,\n themeConfig:\n | CustomThemeConfig\n | ((props: { lightTheme: CustomThemeConfig; darkTheme: CustomThemeConfig }) => CustomThemeConfig),\n) => {\n const customTheme =\n typeof themeConfig === 'function' ? themeConfig({ lightTheme: lightTheme(), darkTheme: darkTheme() }) : themeConfig\n Builder._themeMap[key] = customTheme\n}\n\nexport const registerLightTheme = () => {\n registerCustomTheme('light', lightTheme())\n}\n\nexport const registerDarkTheme = () => {\n registerCustomTheme('dark', darkTheme())\n}\n","import {\n registerArea,\n registerAreaPercent,\n registerBar,\n registerBarParallel,\n registerBarPercent,\n registerColumn,\n registerColumnParallel,\n registerColumnPercent,\n registerLine,\n registerPie,\n registerDonut,\n registerRose,\n registerRoseParallel,\n registerFunnel,\n registerScatter,\n registerTable,\n registerPivotTable,\n registerAreaRange,\n registerHeatmap,\n registerRadar,\n} from './chartType'\nimport { registerDarkTheme, registerLightTheme } from './theme'\n\nexport const registerAll = () => {\n /**\n * ------------------\n * ChartTypes\n * ------------------\n */\n\n // table\n registerTable()\n registerPivotTable()\n // cartesian\n registerLine()\n registerColumn()\n registerColumnParallel()\n registerColumnPercent()\n registerBar()\n registerBarParallel()\n registerBarPercent()\n registerArea()\n registerAreaPercent()\n registerAreaRange()\n registerScatter()\n // polar\n registerPie()\n registerDonut()\n registerRose()\n registerRoseParallel()\n registerRadar()\n // other\n registerFunnel()\n registerHeatmap()\n\n /**\n * ------------------\n * Theme\n * ------------------\n */\n registerLightTheme()\n registerDarkTheme()\n}\n","import type { AdvancedPipe, ChartType, SpecPipe } from 'src/types'\nimport { Builder } from '../builder'\n\nexport const updateAdvanced = (chartType: ChartType, advancedPipe: AdvancedPipe) => {\n Builder._customAdvancedPipe[chartType] = advancedPipe\n}\nexport const updateSpec = (chartType: ChartType, specPipe: SpecPipe) => {\n Builder._customSpecPipe[chartType] = specPipe\n}\n","import { z } from 'zod'\n\nexport type ChartType =\n | 'table'\n | 'pivotTable'\n // cartesian\n | 'line'\n | 'column'\n | 'columnPercent'\n | 'columnParallel'\n | 'bar'\n | 'barPercent'\n | 'barParallel'\n | 'area'\n | 'areaPercent'\n | 'areaRange'\n | 'scatter'\n | 'dualAxis'\n // polar\n | 'rose'\n | 'roseParallel'\n | 'pie'\n | 'donut'\n | 'radar'\n // other\n | 'heatmap'\n | 'funnel'\n\nexport enum ChartTypeEnum {\n Table = 'table',\n PivotTable = 'pivotTable',\n // cartesian\n Line = 'line',\n Column = 'column',\n ColumnPercent = 'columnPercent',\n ColumnParallel = 'columnParallel',\n Bar = 'bar',\n BarPercent = 'barPercent',\n BarParallel = 'barParallel',\n Area = 'area',\n AreaPercent = 'areaPercent',\n AreaRange = 'areaRange',\n DualAxis = 'dualAxis',\n Scatter = 'scatter',\n // polar\n Rose = 'rose',\n RoseParallel = 'roseParallel',\n Pie = 'pie',\n Donut = 'donut',\n Radar = 'radar',\n // other\n Funnel = 'funnel',\n Heatmap = 'heatmap',\n}\n\nexport const zChartType = z.enum([\n 'table',\n 'pivotTable',\n // cartesian\n 'line',\n 'column',\n 'columnPercent',\n 'columnParallel',\n 'bar',\n 'barPercent',\n 'barParallel',\n 'area',\n 'areaPercent',\n 'areaRange',\n 'scatter',\n 'dualAxis',\n // polar\n 'rose',\n 'roseParallel',\n 'pie',\n 'donut',\n 'radar',\n // other\n 'funnel',\n 'heatmap',\n])\n","import { z } from 'zod'\n\n/**\n * example dataset link:\n * [\n * { date: '2019', 20001:'type', profit:10, sales: null, },\n * { date: '2020', 20001:'type', profit:30, sales: -1.1, },\n * { date: '2021', 20001:'type', profit:30, sales: 1, },\n * { date: '2023', 20001:'type', profit:40, sales: undefined, },\n * { date: '2022', 20001:'type', profit:50, sales: 100, },\n * ]\n */\nexport const zDatum = z.record(z.string().or(z.number()), z.any())\nexport const zDataset = z.array(zDatum)\n\nexport type Datum = z.infer<typeof zDatum>\nexport type Dataset = z.infer<typeof zDataset>\n","import { z } from 'zod'\n\nexport type Dimension = {\n id: string\n alias?: string\n location?: 'dimension' | 'rowDimension' | 'columnDimension'\n}\n\nexport type DimensionGroup = {\n id: string\n alias?: string\n children?: (Dimension | DimensionGroup)[]\n}\n\nexport type Dimensions = Dimension[]\n\nexport type DimensionTree = (Dimension | DimensionGroup)[]\n\nexport const zDimension = z.object({\n id: z.string(),\n alias: z.string().optional(),\n location: z.enum(['dimension', 'rowDimension', 'columnDimension']).default('dimension'),\n})\nexport const zDimensionGroup: z.ZodType<DimensionGroup> = z.object({\n id: z.string(),\n alias: z.string().optional(),\n get children() {\n return z.array(zDimensionGroup.or(zDimension)).optional()\n },\n})\nexport const zDimensions = z.array(zDimension)\nexport const zDimensionTree = z.array(zDimensionGroup.or(zDimension))\n","import { z } from 'zod'\n\nexport interface NumFormat {\n /**\n * @description 数字格式化类型, 支持数值(十进制)、百分比(%)、千分比(‰)、科学计数法\n * @default 'number'\n */\n type?: 'number' | 'percent' | 'permille' | 'scientific'\n\n /**\n * @description 数值格式化比例, 百分比和千分比需要设置比例\n * @default 1\n * @example\n * - 100000 转换为 10万, ratio:10000, symbol:\"万\"\n * - 100000 转换为 10K, ratio:1000, symbol:\"K\"\n * - 100000 转换为 100%, ratio:100, symbol:\"%\"\n * - 100000 转换为 100‰, ratio:1000, symbol:\"‰\"\n */\n ratio?: number\n\n /**\n * @description 数值格式化符号, 例如%、‰\n * @default ''\n * @example\n * - 100000 转换为 10万, ratio:10000, symbol:\"万\"\n * - 100000 转换为 10K, ratio:1000, symbol:\"K\"\n * - 100000 转换为 100%, ratio:100, symbol:\"%\"\n * - 100000 转换为 100‰, ratio:1000, symbol:\"‰\"\n */\n symbol?: string\n\n /**\n * @description 数值格式化千分位分隔符\n * @default true\n */\n thousandSeparator?: boolean\n\n /**\n * @description 数值格式化后缀\n * @default ''\n */\n suffix?: string\n /**\n * @description 数值格式化前缀\n * @default ''\n */\n prefix?: string\n\n /**\n * @description 数值格式化小数位, 使用浏览器提供的 Intl.NumberFormat 中的 minimumFractionDigits 和 maximumFractionDigits 进行格式化, 优先级低于 significantDigits\n * @default 2\n * @example\n * - 1234.5678 转换为 1235, fractionDigits:0 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.6, fractionDigits:1 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.57, fractionDigits:2 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1230.568, fractionDigits:3 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.5678, fractionDigits:4 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.56780, fractionDigits:5 (roundingMode:halfCeil)\n */\n fractionDigits?: number\n\n /**\n * @description 数值格式化有效位, 使用浏览器提供的 Intl.NumberFormat 中的 minimumSignificantDigits 和 maximumSignificantDigits 进行格式化, 优先级高于 fractionDigits\n * @default undefined\n * @example\n * - 1234.5678 转换为 1000, significantDigits:1\n * - 1234.5678 转换为 1200, significantDigits:2\n * - 1234.5678 转换为 1230, significantDigits:3\n * - 1234.5678 转换为 1234, significantDigits:4\n * - 1234.5678 转换为 1234.6, significantDigits:5 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.57, significantDigits:6 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.568, significantDigits:7 (roundingMode:halfCeil)\n * - 1234.5678 转换为 1234.5678, significantDigits:8 (roundingMode:halfCeil)\n */\n significantDigits?: number\n\n /**\n * @description 数值格式化舍入优先级, 处理同时设置了 significantDigits 和 fractionDigits 时的舍入优先级, 使用浏览器提供的 Intl.NumberFormat 进行格式化, 规则同 Intl.NumberFormat 中的 roundingPriority\n * @default 'morePrecision'\n * @example\n * - 1234.5678 转换为 1230, significantDigits:3 (roundingPriority:lessPrecision)\n * - 1234.5678 转换为 1234.5678, significantDigits:3 (roundingPriority:morePrecision)\n */\n roundingPriority?: 'morePrecision' | 'lessPrecision'\n\n /**\n * @description 数值格式化舍入模式, 使用浏览器提供的 Intl.NumberFormat 进行格式化, 规则同 Intl.NumberFormat 中的 roundingMode\n * @default 'halfExpand'\n * @example\n */\n roundingMode?:\n | 'floor'\n | 'ceil'\n | 'expand'\n | 'trunc'\n | 'halfCeil'\n | 'halfFloor'\n | 'halfExpand'\n | 'halfTrunc'\n | 'halfEven'\n}\n\nexport const zNumFormat = z\n .object({\n type: z.enum(['number', 'percent', 'permille', 'scientific']).default('number').optional(),\n ratio: z.number().default(1).optional(),\n symbol: z.string().default('').optional(),\n thousandSeparator: z.boolean().default(false).optional(),\n prefix: z.string().default('').optional(),\n suffix: z.string().default('').optional(),\n\n fractionDigits: z.number().default(2).optional(),\n significantDigits: z.number().default(0).optional(),\n roundingPriority: z.enum(['morePrecision', 'lessPrecision']).default('morePrecision').optional(),\n roundingMode: z\n .enum(['floor', 'ceil', 'halfEven', 'expand', 'trunc', 'halfFloor', 'halfCeil', 'halfExpand', 'halfTrunc'])\n .default('halfCeil')\n .optional(),\n })\n .optional()\n","import { z } from 'zod'\nimport type { NumFormat } from './format/numFormat'\nimport { zNumFormat } from './format/numFormat'\n\nexport type Measure = {\n /**\n * @description 指标id, 不能重复\n */\n id: string\n /**\n * @description 指标别名, 允许重复, 未填写时, alias 为 id\n * @default id\n */\n alias?: string\n /**\n * @description 是否自动格式化\n * @default true\n */\n autoFormat?: boolean\n /**\n * @description 指标的数值格式化, 会自动应用于label、tooltip\n */\n format?: NumFormat\n}\nexport type MeasureGroup = {\n /**\n * @description 指标组id, 不能重复\n */\n id: string\n /**\n * @description 指标组别名, 允许重复, 未填写时, alias 为 id\n * @default id\n */\n alias?: string\n /**\n * @description 指标组的子指标或指标组\n */\n children?: (Measure | MeasureGroup)[]\n}\nexport type Measures = Measure[]\nexport type MeasureTree = (Measure | MeasureGroup)[]\n\nexport const zMeasure = z.object({\n id: z.string(),\n alias: z.string().optional(),\n autoFormat: z.boolean().default(true),\n format: zNumFormat.default({}),\n})\n\nexport const zMeasureGroup: z.ZodType<MeasureGroup> = z.object({\n id: z.string(),\n alias: z.string().optional(),\n get children() {\n return z.array(zMeasureGroup.or(zMeasure)).optional()\n },\n})\n\nexport const zMeasures = z.array(zMeasure)\nexport const zMeasureTree = z.array(zMeasureGroup.or(zMeasure))\n","import { z } from 'zod'\n\nexport type FoldInfo = {\n foldMap: Record<string, string | undefined>\n measureId: string\n measureName: string\n measureValue: string\n}\n\nexport type UnfoldInfo = {\n groupName: string\n groupId: string\n colorItems: string[]\n colorIdMap: Record<string, string>\n}\n\nexport const zFoldInfo = z.object({\n foldMap: z.record(z.string(), z.string().or(z.undefined())),\n measureId: z.string(),\n measureName: z.string(),\n measureValue: z.string(),\n})\nexport const zUnfoldInfo = z.object({\n colorItems: z.array(z.string()),\n groupId: z.string(),\n colorIdMap: z.record(z.string(), z.string()),\n groupName: z.string(),\n})\n\nexport const zDatasetReshapeInfo = z.array(\n z.object({\n id: z.string(),\n foldInfo: zFoldInfo,\n unfoldInfo: zUnfoldInfo,\n }),\n)\n\nexport type DatasetReshapeInfo = z.infer<typeof zDatasetReshapeInfo>\n","import { z } from 'zod'\n\nexport const zEncoding = z.array(\n z.object({\n x: z.array(z.string()).optional(),\n y: z.array(z.string()).optional(),\n color: z.array(z.string()).optional(),\n group: z.array(z.string()).optional(),\n angle: z.array(z.string()).optional(),\n radius: z.array(z.string()).optional(),\n tooltip: z.array(z.string()).optional(),\n size: z.array(z.string()).optional(),\n }),\n)\n\nexport type Encoding = Array<{\n x?: string[]\n y?: string[]\n color?: string[]\n group?: string[]\n angle?: string[]\n radius?: string[]\n tooltip?: string[]\n size?: string[]\n}>\n","import { z } from 'zod'\nimport type { Axis } from './axis'\n\nexport type XBandAxis = Omit<Axis, 'min' | 'max' | 'nice' | 'zero' | 'log' | 'logBase'>\nexport type YBandAxis = Omit<Axis, 'min' | 'max' | 'nice' | 'zero' | 'log' | 'logBase'>\n\nexport const zXBandAxis = z.object({\n visible: z.boolean().default(true).optional(),\n\n labelAutoHide: z.boolean().default(true).optional(),\n labelAutoHideGap: z.number().default(0).optional(),\n labelAutoRotate: z.boolean().default(true).optional(),\n labelAutoRotateAngleRange: z.array(z.number()).default([0, -45, -90]).optional(),\n labelAutoLimit: z.boolean().default(true).optional(),\n labelAutoLimitLength: z.number().default(100).optional(),\n label: z\n .object({\n visible: z.boolean().default(true).optional(),\n labelColor: z.string().default('#797B85').optional(),\n labelFontSize: z.number().default(12).optional(),\n labelFontWeight: z.number().default(400).optional(),\n labelAngle: z.number().default(0).optional(),\n })\n .optional(),\n line: z\n .object({\n visible: z.boolean().default(true).optional(),\n lineColor: z.string().default('rgba(54, 65, 89, 0.30)').optional(),\n lineWidth: z.number().default(1).optional(),\n })\n .optional(),\n tick: z\n .object({\n visible: z.boolean().default(true).optional(),\n tickInside: z.boolean().default(false).optional(),\n tickColor: z.string().default('rgba(54, 65, 89, 0.30)').optional(),\n tickSize: z.number().default(4).optional(),\n })\n .optional(),\n title: z\n .object({\n visible: z.boolean().default(false).optional(),\n titleText: z.string().default('').optional(),\n titleColor: z.string().default('#646A73').optional(),\n titleFontSize: z.number().default(12).optional(),\n titleFontWeight: z.number().default(400).optional(),\n })\n .optional(),\n grid: z\n .object({\n visible: z.boolean().default(false).optional(),\n gridColor: z.string().default('rgba(54, 65, 89, 0.15)').optional(),\n gridWidth: z.number().default(0.5).optional(),\n })\n .optional(),\n})\nexport const zYBandAxis = zXBandAxis\n","import { z } from 'zod'\nimport { type Axis } from './axis'\n\nexport type XLinearAxis = Omit<\n Axis,\n | 'labelAutoHide'\n | 'labelAutoHideGap'\n | 'labelAutoRotate'\n | 'labelAutoRotateAngleRange'\n | 'labelAutoLimit'\n | 'labelAutoLimitLength'\n>\nexport type YLinearAxis = Omit<\n Axis,\n | 'labelAutoHide'\n | 'labelAutoHideGap'\n | 'labelAutoRotate'\n | 'labelAutoRotateAngleRange'\n | 'labelAutoLimit'\n | 'labelAutoLimitLength'\n>\n\nexport const zXLinearAxis = z.object({\n visible: z.boolean().default(true).optional(),\n\n min: z.number().optional(),\n max: z.number().optional(),\n nice: z.boolean().default(true).optional(),\n zero: z.boolean().default(true).optional(),\n log: z.boolean().default(false).optional(),\n logBase: z.number().default(10).optional(),\n inverse: z.boolean().default(false).optional(),\n\n label: z\n .object({\n visible: z.boolean().default(true).optional(),\n labelColor: z.string().default('#797B85').optional(),\n labelFontSize: z.number().default(12).optional(),\n labelFontWeight: z.number().default(400).optional(),\n labelAngle: z.number().default(0).optional(),\n })\n .optional(),\n line: z\n .object({\n visible: z.boolean().default(true).optional(),\n lineColor: z.string().default('rgba(54, 65, 89, 0.30)').optional(),\n lineWidth: z.number().default(1).optional(),\n })\n .optional(),\n tick: z\n .object({\n visible: z.boolean().default(true).optional(),\n tickInside: z.boolean().default(false).optional(),\n tickColor: z.string().default('rgba(54, 65, 89, 0.30)').optional(),\n tickSize: z.number().default(4).optional(),\n })\n .optional(),\n title: z\n .object({\n visible: z.boolean().default(false).optional(),\n titleText: z.string().default('').optional(),\n titleColor: z.string().default('#646A73').optional(),\n titleFontSize: z.number().default(12).optional(),\n titleFontWeight: z.number().default(400).optional(),\n })\n .optional(),\n grid: z\n .object({\n visible: z.boolean().default(false).optional(),\n gridColor: z.string().default('rgba(54, 65, 89, 0.15)').optional(),\n gridWidth: z.number().default(0.5).optional(),\n })\n .optional(),\n})\n\nexport const zYLinearAxis = zXLinearAxis\n","import { z } from 'zod'\n\nexport const zCrosshairLine = z.object({\n visible: z.boolean().optional(),\n lineColor: z.string().optional(),\n labelColor: z.string().optional(),\n labelVisible: z.boolean().optional(),\n labelBackgroundColor: z.string().optional(),\n})\n\nexport type CrosshairLine = z.infer<typeof zCrosshairLine>\n\nexport const zCrosshairRect = z.object({\n visible: z.boolean().optional(),\n rectColor: z.string().optional(),\n labelColor: z.string().optional(),\n labelVisible: z.boolean().optional(),\n labelBackgroundColor: z.string().optional(),\n})\n\nexport type CrosshairRect = z.infer<typeof zCrosshairLine>\n","import { z } from 'zod'\n\nexport const zStackCornerRadius = z.number().or(z.array(z.number())).default([3, 3, 0, 0])\n\nexport type StackCornerRadius = z.infer<typeof zStackCornerRadius>\n","import { z } from 'zod'\nexport const zBackgroundColor = z.string().default('transparent').optional()\n\n/**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\nexport type BackgroundColor = string | undefined\n","import { z } from 'zod'\n\nexport const zColor = z.object({\n colorScheme: z.array(z.string()).optional(),\n colorMapping: z.record(z.string(), z.string()).optional(),\n})\n\nexport const zLinearColor = z.object({\n colorScheme: z.array(z.string()).optional(),\n})\n\nexport type Color = {\n /**\n * 颜色配色方案\n * @description 颜色配色方案用于定义图表中不同元素的颜色\n * @example ['#FFCDD2,#F8BBD0,#E1BEE7,#D1C4E9,#C5CAE9,#BBDEFB,#B3E5FC,#B2EBF2,#B2DFDB,#C8E6C9,#DCEDC8,#F0F4C3,#FFF9C4,#FFECB3,#FFE0B2']\n */\n colorScheme?: string[]\n /**\n * 颜色映射\n * @description 颜色映射用于将数据值映射到具体的颜色\n * @example\n * {\n * 'profit': 'red',\n * 'sales': 'blue',\n * }\n */\n colorMapping?: Record<string, string>\n}\n\nexport type LinearColor = {\n /**\n * 线性渐变颜色配色方案\n * @description 线性渐变颜色配色方案用于定义图表中不同元素的颜色\n * @example ['#FFCDD2,#F8BBD0,#E1BEE7,#D1C4E9,#C5CAE9,#BBDEFB,#B3E5FC,#B2EBF2,#B2DFDB,#C8E6C9,#DCEDC8,#F0F4C3,#FFF9C4,#FFECB3,#FFE0B2']\n */\n colorScheme?: string[]\n}\n","import { z } from 'zod'\n\nexport const zLabel = z.object({\n enable: z.boolean().default(true).optional(),\n})\n\nexport type Label = {\n /**\n * 标签功能是否开启\n * @default true\n */\n enable: boolean\n}\n","import { z } from 'zod'\n\nexport type Legend = {\n /**\n * 图例功能是否开启\n * @default true\n * @example enable: true\n */\n enable?: boolean\n /**\n * 图例边框是否开启\n * @default true\n * @example border: true\n */\n border?: boolean\n /**\n * 图例最大列数 或 图例最大行数\n * @default 1\n * @description\n * 如果图例在水平方向上, maxSize控制显示的列数\n * 如果图例在垂直方向上, maxSize控制显示的行数\n * @example maxSize: 2\n */\n maxSize?: number\n /**\n * 图例字体大小\n * @default 12\n * @example labelFontSize: 10\n */\n labelFontSize?: number\n /**\n * 图例字体颜色\n * @default '#fff'\n * @example labelFontColor: '#212121'\n */\n labelFontColor?: string\n /**\n * 图例字体粗细\n * @default 400\n * @example labelFontWeight: 400\n */\n labelFontWeight?: number | string\n /**\n * 图例形状\n * @default 'rectRound'\n * @example shapeType: 'circle'\n */\n shapeType?:\n | 'circle'\n | 'cross'\n | 'diamond'\n | 'square'\n | 'arrow'\n | 'arrow2Left'\n | 'arrow2Right'\n | 'wedge'\n | 'thinTriangle'\n | 'triangle'\n | 'triangleUp'\n | 'triangleDown'\n | 'triangleRight'\n | 'triangleLeft'\n | 'stroke'\n | 'star'\n | 'wye'\n | 'rect'\n | 'arrowLeft'\n | 'arrowRight'\n | 'rectRound'\n | 'roundLine'\n /**\n * 图例位置\n * @default 'top'\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\nexport const zLegend = z.object({\n enable: z.boolean().default(true).optional(),\n border: z.boolean().default(true).optional(),\n maxSize: z.number().default(1).optional(),\n shapeType: z\n .enum([\n 'circle',\n 'cross',\n 'diamond',\n 'square',\n 'arrow',\n 'arrow2Left',\n 'arrow2Right',\n 'wedge',\n 'thinTriangle',\n 'triangle',\n 'triangleUp',\n 'triangleDown',\n 'triangleRight',\n 'triangleLeft',\n 'stroke',\n 'star',\n 'wye',\n 'rect',\n 'arrowLeft',\n 'arrowRight',\n 'rectRound',\n 'roundLine',\n ])\n .default('rectRound')\n .optional(),\n position: z\n .enum([\n 'left',\n 'leftTop',\n 'leftBottom',\n 'lt',\n 'lb',\n 'top',\n 'topLeft',\n 'topRight',\n 'tl',\n 'tr',\n 'right',\n 'rightTop',\n 'rightBottom',\n 'rt',\n 'rb',\n 'bottom',\n 'bottomLeft',\n 'bottomRight',\n 'bl',\n 'br',\n ])\n .default('bottom')\n .optional(),\n labelFontSize: z.number().default(12).optional(),\n labelFontColor: z.string().default('#fff').optional(),\n labelFontWeight: z.number().or(z.string()).default(400).optional(),\n})\n\nexport type ColorLegend = Pick<Legend, 'position' | 'enable'>\nexport const zColorLegend = z.object({\n position: z\n .enum([\n 'left',\n 'leftTop',\n 'leftBottom',\n 'lt',\n 'lb',\n 'top',\n 'topLeft',\n 'topRight',\n 'tl',\n 'tr',\n 'right',\n 'rightTop',\n 'rightBottom',\n 'rt',\n 'rb',\n 'bottom',\n 'bottomLeft',\n 'bottomRight',\n 'bl',\n 'br',\n ])\n .default('bottom')\n .optional(),\n enable: z.boolean().default(true).optional(),\n})\n","import { z } from 'zod'\n\nexport const zTooltip = z.object({\n enable: z.boolean().default(true).optional(),\n})\n\nexport type Tooltip = {\n /**\n * 提示信息功能是否开启\n * @default true\n */\n enable: boolean\n}\n","import { z } from 'zod'\nimport { zXBandAxis, zYBandAxis } from './axes/bandAxis'\nimport { zXLinearAxis, zYLinearAxis } from './axes/linearAxis'\nimport { zCrosshairLine, zCrosshairRect } from './crosshair/crosshair'\nimport { zStackCornerRadius } from './stackCornerRadius/stackCornerRadius'\nimport { zBackgroundColor } from './backgroundColor/backgroundColor'\nimport { zColor } from './color/color'\nimport { zLabel } from './label/label'\nimport { zLegend } from './legend/legend'\nimport { zTooltip } from './tooltip/tooltip'\n\n/**\n * ---\n * zConfig by 图表类型\n */\nexport const zTableConfig = z.object({\n // Border\n borderColor: z.string().optional(),\n\n // Body\n bodyFontSize: z.number().optional(),\n bodyFontColor: z.string().optional(),\n bodyBackgroundColor: z.string().optional(),\n hoverBodyBackgroundColor: z.string().optional(),\n\n // Header\n headerFontSize: z.number().optional(),\n headerFontColor: z.string().optional(),\n headerBackgroundColor: z.string().optional(),\n hoverHeaderBackgroundColor: z.string().optional(),\n\n // Interaction\n selectedBorderColor: z.string().optional(),\n})\nexport const zPivotTableConfig = zTableConfig\n\nexport const zLineConfig = z.object({\n backgroundColor: zBackgroundColor.optional(),\n label: zLabel.optional(),\n color: zColor.optional(),\n tooltip: zTooltip.optional(),\n legend: zLegend.optional(),\n\n xAxis: zXBandAxis.optional(),\n yAxis: zYLinearAxis.optional(),\n crosshairLine: zCrosshairLine.optional(),\n})\nexport const zColumnConfig = z.object({\n backgroundColor: zBackgroundColor.optional(),\n label: zLabel.optional(),\n color: zColor.optional(),\n tooltip: zTooltip.optional(),\n legend: zLegend.optional(),\n\n xAxis: zXBandAxis.optional(),\n yAxis: zYLinearAxis.optional(),\n crosshairRect: zCrosshairRect.optional(),\n stackCornerRadius: zStackCornerRadius.optional(),\n})\nexport const zColumnParallelConfig = zColumnConfig\nexport const zColumnPercentConfig = zColumnConfig\nexport const zBarConfig = z.object({\n backgroundColor: zBackgroundColor.optional(),\n label: zLabel.optional(),\n color: zColor.optional(),\n tooltip: zTooltip.optional(),\n legend: zLegend.optional(),\n\n xAxis: zXLinearAxis.optional(),\n yAxis: zYBandAxis.optional(),\n crosshairRect: zCrosshairRect.optional(),\n stackCornerRadius: zStackCornerRadius.optional(),\n})\nexport const zBarParallelConfig = zBarConfig\nexport const zBarPercentConfig = zBarConfig\nexport const zAreaConfig = z.object({\n backgroundColor: zBackgroundColor.optional(),\n label: zLabel.optional(),\n color: zColor.optional(),\n tooltip: zTooltip.optional(),\n legend: zLegend.optional(),\n\n xAxis: zXBandAxis.optional(),\n yAxis: zYLinearAxis.optional(),\n crosshairLine: zCrosshairLine.optional(),\n})\nexport const zAreaPercentConfig = zAreaConfig\nexport const zAreaRangeConfig = zAreaConfig\nexport const zDualAxisConfig = z.object({\n backgroundColor: zBackgroundColor.optional(),\n label: zLabel.optional(),\n color: zColor.optional(),\n tooltip: zTooltip.optional(),\n legend: zLegend.optional(),\n})\nexport const zScatterConfig = z.object({\n backgroundColor: zBackgroundColor.optional(),\n label: zLabel.optional(),\n color: zColor.optional(),\n tooltip: zTooltip.optional(),\n legend: zLegend.optional(),\n\n xAxis: zXLinearAxis.optional(),\n yAxis: zYLinearAxis.optional(),\n crosshairLine: zCrosshairLine.optional(),\n})\n\n// polar\nexport const zRoseConfig = z.object({\n backgroundColor: zBackgroundColor.optional(),\n label: zLabel.optional(),\n color: zColor.optional(),\n tooltip: zTooltip.optional(),\n legend: zLegend.optional(),\n})\nexport const zRoseParallelConfig = zRoseConfig\nexport const zPieConfig = z.object({\n backgroundColor: zBackgroundColor.optional(),\n label: zLabel.optional(),\n color: zColor.optional(),\n tooltip: zTooltip.optional(),\n legend: zLegend.optional(),\n})\nexport const zDonutConfig = zPieConfig\nexport const zRadarConfig = zPieConfig\n// other\nexport const zFunnelConfig = zPieConfig\nexport const zHeatmapConfig = zPieConfig\n\n/**\n * ---\n * Type config by chart type\n */\nexport type TableConfig = z.infer<typeof zTableConfig>\nexport type PivotTableConfig = z.infer<typeof zPivotTableConfig>\n// cartesian\nexport type LineConfig = z.infer<typeof zLineConfig>\nexport type ColumnConfig = z.infer<typeof zColumnConfig>\nexport type ColumnParallelConfig = z.infer<typeof zColumnParallelConfig>\nexport type ColumnPercentConfig = z.infer<typeof zColumnPercentConfig>\nexport type BarConfig = z.infer<typeof zBarConfig>\nexport type BarParallelConfig = z.infer<typeof zBarParallelConfig>\nexport type BarPercentConfig = z.infer<typeof zBarPercentConfig>\nexport type AreaConfig = z.infer<typeof zAreaConfig>\nexport type AreaPercentConfig = z.infer<typeof zAreaPercentConfig>\nexport type AreaRangeConfig = z.infer<typeof zAreaRangeConfig>\nexport type ScatterConfig = z.infer<typeof zScatterConfig>\nexport type DualAxisConfig = z.infer<typeof zDualAxisConfig>\n// polar\nexport type RoseConfig = z.infer<typeof zRoseConfig>\nexport type RoseParallelConfig = z.infer<typeof zRoseParallelConfig>\nexport type PieConfig = z.infer<typeof zPieConfig>\nexport type DonutConfig = z.infer<typeof zDonutConfig>\nexport type RadarConfig = z.infer<typeof zRadarConfig>\n// other\nexport type FunnelConfig = z.infer<typeof zFunnelConfig>\nexport type HeatmapConfig = z.infer<typeof zHeatmapConfig>\n\n/**\n * config and type\n */\nexport type Config = z.infer<typeof zConfig>\nexport const zConfig = z.object({\n table: zTableConfig.optional(),\n pivotTable: zPivotTableConfig.optional(),\n\n // cartesian\n line: zLineConfig.optional(),\n column: zColumnConfig.optional(),\n columnParallel: zColumnParallelConfig.optional(),\n columnPercent: zColumnPercentConfig.optional(),\n bar: zBarConfig.optional(),\n barParallel: zBarParallelConfig.optional(),\n barPercent: zBarPercentConfig.optional(),\n area: zAreaConfig.optional(),\n areaPercent: zAreaPercentConfig.optional(),\n areaRange: zAreaRangeConfig.optional(),\n dualAxis: zDualAxisConfig.optional(),\n scatter: zScatterConfig.optional(),\n\n // polar\n rose: zRoseConfig.optional(),\n roseParallel: zRoseParallelConfig.optional(),\n pie: zPieConfig.optional(),\n donut: zDonutConfig.optional(),\n radar: zRadarConfig.optional(),\n // other\n funnel: zFunnelConfig.optional(),\n heatmap: zHeatmapConfig.optional(),\n})\n","import { z } from 'zod'\n\nexport type Axis = {\n /**\n * 轴是否可见\n * @default true\n * @example true\n */\n visible?: boolean\n\n /**\n * 轴的最小值\n * @description 优先级高于 nice 与 zero\n * @default undefined\n * @example 100\n */\n min?: number\n\n /**\n * 轴的最大值\n * @description 优先级高于 nice 与 zero\n * @default undefined\n * @example 10000\n */\n max?: number\n\n /**\n * @description 是否使用对数轴, 仅对数值轴生效\n * @default false\n */\n log?: boolean\n\n /**\n * @description 对数轴的底数, 仅对数值轴生效\n * @default 10\n */\n logBase?: number\n\n /**\n * 是否自动调整轴的刻度间隔,使刻度标签更易读\n * @description 当配置了 min 和 max, 该配置项失效, 仅对数值轴生效\n * @default true\n * @example true\n */\n nice?: boolean\n\n /**\n * 轴是否反向展示\n * @description 仅对数值轴生效\n * @default false\n * @example false\n */\n inverse?: boolean\n\n /**\n * 是否在坐标轴上显示 0 值,\n * @description 当配置了 min 和 max, 该配置项失效, 仅对数值轴生效\n * @default true\n * @example true\n */\n zero?: boolean\n\n /**\n * 轴标签, 自动隐藏\n * @description 2个标签若重叠(间隔小于autoHideGap), 则自动隐藏导致重叠的标签. 仅对类目轴生效.\n * @default true\n */\n labelAutoHide?: boolean\n /**\n * 轴标签, 自动隐藏间隔\n * @description 若2个文本标签的间隔小于autoHideGap, 则自动隐藏导致重叠的标签. 仅对类目轴生效.\n * autoHide开启时, 使用autoHide, 设置在autoHideSeparation上\n * autoHide关闭时, 使用sampling采样, 设置在minGap上\n * @default 4\n */\n labelAutoHideGap?: number\n /**\n * 轴标签, 自动旋转\n * @description 当标签宽度超过轴长度时, 自动旋转标签. 仅对类目轴生效.\n * @default true\n */\n labelAutoRotate?: boolean\n /**\n * 轴标签, 自动旋转角度范围\n * @description 当自动旋转开启时, 标签旋转角度范围. 仅对类目轴生效.\n * @default [0, -45, -90]\n */\n labelAutoRotateAngleRange?: number[]\n /**\n * 轴标签, 自动限制长度,\n * @description 当标签宽度超过轴长度时, 超出部分省略号表示, 鼠标悬浮后可见标签, 自动限制标签宽度. 仅对类目轴生效.\n * @default true\n */\n labelAutoLimit?: boolean\n /**\n * 轴标签, 自动限制长度的最大长度\n * @description 当标签文本长度超过最大长度时, 超出部分省略号表示, 鼠标悬浮后可见标签. 仅对类目轴生效.\n * @default 100\n */\n labelAutoLimitLength?: number\n\n /**\n * X轴刻度标签\n * @default true\n */\n label?: {\n /**\n * 标签是否可见\n * @default true\n */\n visible?: boolean\n /**\n * 标签颜色\n * @default '#797B85'\n */\n labelColor?: string\n /**\n * 标签字体大小\n * @default 12\n */\n labelFontSize?: number\n /**\n * 标签字体粗细\n * @default 400\n */\n labelFontWeight?: number\n /**\n * 标签旋转角度\n * @default 0\n */\n labelAngle?: number\n }\n\n /**\n * X轴线\n * @example\n * {\n * visible: true,\n * lineColor: '#ffeecc',\n * lineWidth: 2,\n * }\n */\n line?: {\n /**\n * 轴线是否可见\n * @default true\n */\n visible?: boolean\n /**\n * 轴线颜色\n * @default 'rgba(54, 65, 89, 0.30)'\n */\n lineColor?: string\n /**\n * 轴线宽度\n * @default 1\n */\n lineWidth?: number\n }\n\n /**\n * X轴刻度\n * @default true\n */\n tick?: {\n /**\n * 刻度是否可见\n * @default true\n */\n visible?: boolean\n /**\n * 刻度是否朝内\n * @default false\n */\n tickInside?: boolean\n /**\n * 刻度颜色\n * @default 'rgba(54, 65, 89, 0.30)'\n */\n tickColor?: string\n /**\n * 刻度尺寸\n * @default 4\n */\n tickSize?: number\n }\n\n /**\n * X轴标题\n * @default false\n */\n title?: {\n /**\n * 标题是否可见\n * @default false\n */\n visible?: boolean\n /**\n * 标题文本, 默认跟随字段配置\n * @default ''\n */\n titleText?: string\n /**\n * 标题颜色\n * @default '#646A73'\n */\n titleColor?: string\n /**\n * 标题字体大小\n * @default 12\n */\n titleFontSize?: number\n /**\n * 标题字体粗细\n * @default 400\n */\n titleFontWeight?: number\n }\n\n /**\n * X轴网格线\n * @default false\n */\n grid?: {\n visible?: boolean\n /**\n * 网格线颜色\n * @default 'rgba(54, 65, 89, 0.15)'\n */\n gridColor?: string\n /**\n * 网格线宽度\n * @default 0.5\n */\n gridWidth?: number\n }\n}\n\nexport const zAxis = z.object({\n visible: z.boolean().default(true).optional(),\n\n min: z.number().optional(),\n max: z.number().optional(),\n nice: z.boolean().default(true).optional(),\n zero: z.boolean().default(true).optional(),\n inverse: z.boolean().default(false).optional(),\n log: z.boolean().default(false).optional(),\n logBase: z.number().default(10).optional(),\n\n labelAutoHide: z.boolean().default(true).optional(),\n labelAutoHideGap: z.number().default(4).optional(),\n labelAutoRotate: z.boolean().default(true).optional(),\n labelAutoRotateAngleRange: z.array(z.number()).default([0, -45, -90]).optional(),\n labelAutoLimit: z.boolean().default(true).optional(),\n labelAutoLimitLength: z.number().default(100).optional(),\n label: z\n .object({\n visible: z.boolean().default(true).optional(),\n labelColor: z.string().default('#797B85').optional(),\n labelFontSize: z.number().default(12).optional(),\n labelFontWeight: z.number().default(400).optional(),\n labelAngle: z.number().default(0).optional(),\n })\n .optional(),\n line: z\n .object({\n visible: z.boolean().default(true).optional(),\n lineColor: z.string().default('rgba(54, 65, 89, 0.30)').optional(),\n lineWidth: z.number().default(1).optional(),\n })\n .optional(),\n tick: z\n .object({\n visible: z.boolean().default(true).optional(),\n tickInside: z.boolean().default(false).optional(),\n tickColor: z.string().default('rgba(54, 65, 89, 0.30)').optional(),\n tickSize: z.number().default(4).optional(),\n })\n .optional(),\n title: z\n .object({\n visible: z.boolean().default(false).optional(),\n titleText: z.string().default('').optional(),\n titleColor: z.string().default('#646A73').optional(),\n titleFontSize: z.number().default(12).optional(),\n titleFontWeight: z.number().default(400).optional(),\n })\n .optional(),\n grid: z\n .object({\n visible: z.boolean().default(false).optional(),\n gridColor: z.string().default('rgba(54, 65, 89, 0.15)').optional(),\n gridWidth: z.number().default(0.5).optional(),\n })\n .optional(),\n})\n","import { z } from 'zod'\nimport { zConfig } from '../config'\n\nexport const zCustomThemeConfig = z.object({\n config: zConfig.optional(),\n})\n\nexport const zCustomTheme = z.record(z.string(), zCustomThemeConfig).optional()\n\nexport type CustomTheme = z.infer<typeof zCustomTheme>\nexport type CustomThemeConfig = z.infer<typeof zCustomThemeConfig>\n","import { z } from 'zod'\n\nexport const zTheme = z.string()\n\ntype Light = 'light' & { readonly brand: unique symbol }\ntype Dark = 'dark' & { readonly brand: unique symbol }\n\n/**\n * 主题\n * @default light\n * @description 内置 light、dark 两种主题, 新的主题可以通过registerTheme自定义主题.\n */\nexport type Theme = Light | Dark | string\n","import { z } from 'zod'\nimport type { Datum } from '../properties'\n\nexport type ValueSelector = string | number\n\nexport type PartialDatumSelector = Datum\n\nexport type MeasureSelector = {\n field: string\n operator?: '=' | '==' | '!=' | '>' | '<' | '>=' | '<=' | 'between'\n op?: '=' | '==' | '!=' | '>' | '<' | '>=' | '<=' | 'between'\n value: string | number | Array<string | number>\n}\n\nexport type DimensionSelector = {\n field: string\n operator?: 'in' | 'not in'\n op?: 'in' | 'not in'\n value: string | number | Array<string | number>\n}\n\nexport type Selector = ValueSelector | PartialDatumSelector | MeasureSelector | DimensionSelector\n\nexport type Selectors = Array<Selector>\n\nexport const zSelector = z.union([\n z.string(),\n z.number(),\n z.object({\n field: z.string(),\n operator: z.enum(['=', '==', '!=', '>', '<', '>=', '<=', 'between']).optional(),\n op: z.enum(['=', '==', '!=', '>', '<', '>=', '<=', 'between']).optional(),\n value: z.union([z.string(), z.number(), z.array(z.union([z.string(), z.number()]))]),\n }),\n z.object({\n field: z.string(),\n operator: z.enum(['in', 'not in']).optional(),\n op: z.enum(['in', 'not in']).optional(),\n value: z.union([z.string(), z.number(), z.array(z.union([z.string(), z.number()]))]),\n }),\n])\n\nexport const zSelectors = z.array(zSelector)\n","import { z } from 'zod'\nimport { zSelector, zSelectors, type Selector, type Selectors } from '../../dataSelector'\n\nexport type BarStyle = {\n /**\n * 数据选择器\n * @description\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n * @type {Selector | Selectors}\n * @example 数值选择器\n * selector = \"tool\"\n * selector = [\"tool\", \"book\"]\n * selector = 100\n * selector = [100, 200]\n * @example 局部数据选择器\n * selector = { profit: 100 }\n * selector = [{ profit: 100 }, { profit: 200 }]\n * @example 条件维度选择器\n * selector = {\n * field: 'category',\n * operator: 'in',\n * value: 'tool'\n * }\n * selector = {\n * field: 'category',\n * operator: 'not in',\n * value: 'book'\n * }\n * @example 条件指标选择器\n * selector = {\n * field: 'profit',\n * operator: '>=',\n * value: 100\n * }\n * selector = {\n * field: 'profit',\n * operator: 'between'\n * value: [100, 300]\n * }\n */\n selector?: Selector | Selectors\n\n /**\n * 柱状图颜色\n * @description 柱状图颜色\n * @type {string}\n */\n barColor?: string\n /**\n * 柱状图颜色透明度\n * @description 柱状图颜色透明度\n * @type {number}\n */\n barColorOpacity?: number\n /**\n * 柱状图边框颜色\n * @description 柱状图边框颜色\n * @type {string}\n */\n barBorderColor?: string\n /**\n * 柱状图边框宽度\n * @description 柱状图边框宽度\n * @type {number}\n */\n barBorderWidth?: number\n /**\n * 柱状图边框样式\n * @description 柱状图边框样式\n * @type {number}\n * @example solid\n * @example dashed\n * @example dotted\n */\n barBorderStyle?: 'solid' | 'dashed' | 'dotted'\n /**\n * 柱状图圆角\n * @description 柱状图圆角\n * @type {number | number[]}\n * @example 4\n * @example [0, 0, 10, 10]\n */\n barRadius?: number | number[]\n}\n\nexport const zBarStyle = z.object({\n selector: z.union([zSelector, zSelectors]).optional(),\n barColor: z.string().optional(),\n barColorOpacity: z.number().optional(),\n barBorderColor: z.string().optional(),\n barBorderWidth: z.number().optional(),\n barBorderStyle: z.union([z.literal('solid'), z.literal('dashed'), z.literal('dotted')]).optional(),\n barRadius: z.union([z.number(), z.array(z.number())]).optional(),\n})\n","import { z } from 'zod'\nimport { zSelector, zSelectors, type Selector, type Selectors } from '../../dataSelector'\n\nexport type PointStyle = {\n /**\n * 数据选择器\n * @description\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n * @type {Selector | Selectors}\n * @example 数值选择器\n * selector = \"tool\"\n * selector = [\"tool\", \"book\"]\n * selector = 100\n * selector = [100, 200]\n * @example 局部数据选择器\n * selector = { profit: 100 }\n * selector = [{ profit: 100 }, { profit: 200 }]\n * @example 条件维度选择器\n * selector = {\n * field: 'category',\n * operator: 'in',\n * value: 'tool'\n * }\n * selector = {\n * field: 'category',\n * operator: 'not in',\n * value: 'book'\n * }\n * @example 条件指标选择器\n * selector = {\n * field: 'profit',\n * operator: '>=',\n * value: 100\n * }\n * selector = {\n * field: 'profit',\n * operator: 'between'\n * value: [100, 300]\n * }\n */\n selector?: Selector | Selectors\n\n /**\n * 点大小\n * @description 点大小\n * @type {number}\n */\n pointSize?: number\n /**\n * 柱状图颜色\n * @description 柱状图颜色\n * @type {string}\n */\n pointColor?: string\n /**\n * 柱状图颜色透明度\n * @description 柱状图颜色透明度\n * @type {number}\n */\n pointColorOpacity?: number\n /**\n * 柱状图边框颜色\n * @description 柱状图边框颜色\n * @type {string}\n */\n pointBorderColor?: string\n /**\n * 柱状图边框宽度\n * @description 柱状图边框宽度\n * @type {number}\n */\n pointBorderWidth?: number\n /**\n * 柱状图边框样式\n * @description 柱状图边框样式\n * @type {number}\n * @example solid\n * @example dashed\n * @example dotted\n */\n pointBorderStyle?: 'solid' | 'dashed' | 'dotted'\n}\n\nexport const zPointStyle = z.object({\n selector: z.union([zSelector, zSelectors]).optional(),\n pointSize: z.number().optional(),\n pointColor: z.string().optional(),\n pointColorOpacity: z.number().optional(),\n pointBorderColor: z.string().optional(),\n pointBorderWidth: z.number().optional(),\n pointBorderStyle: z.union([z.enum(['solid', 'dashed', 'dotted'])]).optional(),\n})\n","import { z } from 'zod'\nimport { zSelector, zSelectors, type Selector, type Selectors } from '../../dataSelector'\n\nexport type LineStyle = {\n /**\n * 数据选择器\n * @description\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n * @type {Selector | Selectors}\n * @example 数值选择器\n * selector = \"tool\"\n * selector = [\"tool\", \"book\"]\n * selector = 100\n * selector = [100, 200]\n * @example 局部数据选择器\n * selector = { profit: 100 }\n * selector = [{ profit: 100 }, { profit: 200 }]\n * @example 条件维度选择器\n * selector = {\n * field: 'category',\n * operator: 'in',\n * value: 'tool'\n * }\n * selector = {\n * field: 'category',\n * operator: 'not in',\n * value: 'book'\n * }\n * @example 条件指标选择器\n * selector = {\n * field: 'profit',\n * operator: '>=',\n * value: 100\n * }\n * selector = {\n * field: 'profit',\n * operator: 'between'\n * value: [100, 300]\n * }\n */\n selector?: Selector | Selectors\n\n /**\n * 折线图是否平滑\n * @description 折线图是否平滑\n * @type {boolean}\n */\n lineSmooth?: boolean\n\n /**\n * 柱状图颜色\n * @description 柱状图颜色\n * @type {string}\n */\n lineColor?: string\n /**\n * 柱状图颜色透明度\n * @description 柱状图颜色透明度\n * @type {number}\n */\n lineColorOpacity?: number\n /**\n * 柱状图边框宽度\n * @description 柱状图边框宽度\n * @type {number}\n */\n lineWidth?: number\n /**\n * 柱状图边框样式\n * @description 柱状图边框样式\n * @type {number}\n * @example solid\n * @example dashed\n * @example dotted\n */\n lineStyle?: 'solid' | 'dashed' | 'dotted'\n}\n\nexport const zLineStyle = z.object({\n selector: z.union([zSelector, zSelectors]).optional(),\n lineSmooth: z.boolean().optional(),\n lineColor: z.string().optional(),\n lineColorOpacity: z.number().optional(),\n lineWidth: z.number().optional(),\n lineStyle: z.union([z.enum(['solid', 'dashed', 'dotted'])]).optional(),\n})\n","import { z } from 'zod'\nimport { zSelector, zSelectors, type Selector, type Selectors } from '../../dataSelector'\n\nexport type AreaStyle = {\n /**\n * 数据选择器\n * @description\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n * @type {Selector | Selectors}\n * @example 数值选择器\n * selector = \"tool\"\n * selector = [\"tool\", \"book\"]\n * selector = 100\n * selector = [100, 200]\n * @example 局部数据选择器\n * selector = { profit: 100 }\n * selector = [{ profit: 100 }, { profit: 200 }]\n * @example 条件维度选择器\n * selector = {\n * field: 'category',\n * operator: 'in',\n * value: 'tool'\n * }\n * selector = {\n * field: 'category',\n * operator: 'not in',\n * value: 'book'\n * }\n * @example 条件指标选择器\n * selector = {\n * field: 'profit',\n * operator: '>=',\n * value: 100\n * }\n * selector = {\n * field: 'profit',\n * operator: 'between'\n * value: [100, 300]\n * }\n */\n selector?: Selector | Selectors\n\n /**\n * 面积图元的颜色\n * @description 面积图元的颜色\n * @type {string}\n */\n areaColor?: string\n /**\n * 面积图元的颜色透明度\n * @description 面积图元的颜色透明度\n * @type {number}\n */\n areaColorOpacity?: number\n}\n\nexport const zAreaStyle = z.object({\n selector: z.union([zSelector, zSelectors]).optional(),\n areaColor: z.string().optional(),\n areaColorOpacity: z.number().optional(),\n})\n","import { z } from 'zod'\nimport { zBarStyle } from './barStyle'\nimport { zPointStyle } from './pointStyle'\nimport { zLineStyle } from './lineStyle'\nimport { zAreaStyle } from './areaStyle'\n\nexport const zMarkStyle = z.object({\n barStyle: zBarStyle.or(z.array(zBarStyle)).optional(),\n pointStyle: zPointStyle.or(z.array(zPointStyle)).optional(),\n lineStyle: zLineStyle.or(z.array(zLineStyle)).optional(),\n areaStyle: zAreaStyle.or(z.array(zAreaStyle)).optional(),\n})\n\nexport type MarkStyle = z.infer<typeof zMarkStyle>\n","import { zSelector, zSelectors, type Selector, type Selectors } from '../../dataSelector'\nimport { z } from 'zod'\n\nexport type AnnotationPoint = {\n /**\n * 依赖选择的数据, 进行数据标记.\n */\n selector: Selector | Selectors\n /**\n * 标注的文本\n * @description 标注的文本\n * @default ''\n * @example '标注文本'\n */\n text?: string | string[]\n /**\n * 文本颜色\n * @description 文本颜色\n * @default '#ffffff'\n * @example 'red'\n */\n textColor?: string\n /**\n * 文本字体大小\n * @description 文本字体大小\n * @default 12\n * @example 12\n */\n textFontSize?: number\n /**\n * 文本字体重量\n * @description 文本字体重量\n * @default 400\n * @example 400\n */\n textFontWeight?: number\n\n /**\n * 文本对齐方式\n * @description 文本对齐方式\n * @default 'left'\n * @example 'left'\n */\n textAlign?: 'left' | 'right' | 'center'\n /**\n * 文本垂直对齐方式\n * @description 文本垂直对齐方式\n * @default 'middle'\n * @example 'middle'\n */\n textBaseline?: 'top' | 'middle' | 'bottom'\n\n /**\n * 文本Y方向的, 偏移量\n * @description 文本Y方向的, 偏移量, 支持正负\n * @default 0\n * @example offsetY: 10\n */\n offsetY?: number\n /**\n * 文本X方向的, 偏移量\n * @description 文本X方向的, 偏移量, 支持正负\n * @default 0\n * @example offsetX: -10\n */\n offsetX?: number\n /**\n * 背景可见\n * @description 背景可见\n * @default true\n * @example true\n */\n backgroundVisible?: boolean\n /**\n * 背景颜色\n * @description 背景颜色\n * @default '#212121'\n * @example 'red'\n */\n backgroundColor?: string\n /**\n * 背景边框颜色\n * @description 背景边框颜色\n * @default 'red'\n * @example 'red'\n */\n backgroundBorderColor?: string\n /**\n * 背景边框宽度\n * @description 背景边框宽度\n * @default 1\n * @example 2\n */\n backgroundBorderWidth?: number\n /**\n * 背景边框圆角\n * @description 背景边框圆角\n * @default 4\n * @example 4\n */\n backgroundBorderRadius?: number\n /**\n * 背景内边距\n * @description 背景内边距\n * @default 4\n * @example 4\n */\n backgroundPadding?: number\n}\n\nexport const zAnnotationPoint = z.object({\n selector: z.union([zSelector, zSelectors]),\n text: z.string().or(z.array(z.string())).optional(),\n textColor: z.string().default('#ffffff').optional(),\n textFontSize: z.number().default(12).optional(),\n textFontWeight: z.number().default(400).optional(),\n textAlign: z.enum(['left', 'right', 'center']).default('center').optional(),\n textBaseline: z.enum(['top', 'middle', 'bottom']).default('middle').optional(),\n backgroundVisible: z.boolean().default(true).optional(),\n backgroundColor: z.string().default('#212121').optional(),\n backgroundBorderColor: z.string().optional(),\n backgroundBorderWidth: z.number().default(1).optional(),\n backgroundBorderRadius: z.number().default(4).optional(),\n backgroundPadding: z.number().optional(),\n offsetY: z.number().default(0).optional(),\n offsetX: z.number().default(0).optional(),\n})\n","import { zSelector, zSelectors, type Selector, type Selectors } from '../../dataSelector'\nimport { z } from 'zod'\n\nexport type AnnotationVerticalLine = {\n /**\n * 依赖选择的数据, 进行数据标记.\n */\n selector?: Selector | Selectors\n /**\n * 固定的x值, 用于标注垂直线\n * @description 类目轴在x方向, 则可输入维值, 数值轴在x方向, 则可输入具体的数值\n * @default []\n */\n xValue?: (number | string) | (number | string)[]\n /**\n * 标注的文本\n * @description 标注的文本\n * @default ''\n * @example '标注文本'\n */\n text?: string | string[]\n /**\n * 文本位置\n * @description 标注线的标签位置(标签相对线的相对位置)。\n * @default 'insideEnd'\n * @example 'outsideEnd'\n */\n textPosition?: 'outsideStart' | 'outsideEnd' | 'outsideMiddle' | 'insideStart' | 'insideMiddle' | 'insideEnd'\n /**\n * 文本颜色\n * @description 文本颜色\n * @default '#ffffff'\n * @example 'red'\n */\n textColor?: string\n /**\n * 文本字体大小\n * @description 文本字体大小\n * @default 12\n * @example 12\n */\n textFontSize?: number\n /**\n * 文本字体重量\n * @description 文本字体重量\n * @default 400\n * @example 400\n */\n textFontWeight?: number\n /**\n * 文本对齐方式\n * @description 文本对齐方式\n * @default 'right'\n * @example 'left'\n */\n textAlign?: 'left' | 'right' | 'center'\n /**\n * 文本垂直对齐方式\n * @description 文本垂直对齐方式\n * @default 'top'\n * @example 'middle'\n */\n textBaseline?: 'top' | 'middle' | 'bottom'\n /**\n * 文本Y方向的, 偏移量\n * @description 文本Y方向的, 偏移量, 支持正负\n * @default 0\n * @example offsetY: 10\n */\n offsetY?: number\n /**\n * 文本X方向的, 偏移量\n * @description 文本X方向的, 偏移量, 支持正负\n * @default 0\n * @example offsetX: -10\n */\n offsetX?: number\n /**\n * 线可见\n * @description 线可见\n * @default true\n * @example true\n */\n lineVisible?: boolean\n /**\n * 线颜色\n * @description 线颜色\n * @default 'red'\n * @example 'red'\n */\n lineColor?: string\n /**\n * 线宽度\n * @description 线宽度\n * @default 2\n * @example 2\n */\n lineWidth?: number\n /**\n * 线样式\n * @description 线样式\n * @default 'solid'\n * @example 'solid'\n */\n lineStyle?: 'solid' | 'dashed' | 'dotted'\n /**\n * 背景可见\n * @description 背景可见\n * @default true\n * @example true\n */\n backgroundVisible?: boolean\n /**\n * 背景颜色\n * @description 背景颜色\n * @default '#212121'\n * @example 'red'\n */\n backgroundColor?: string\n /**\n * 背景边框颜色\n * @description 背景边框颜色\n * @default 'red'\n * @example 'red'\n */\n backgroundBorderColor?: string\n /**\n * 背景边框宽度\n * @description 背景边框宽度\n * @default 1\n * @example 2\n */\n backgroundBorderWidth?: number\n /**\n * 背景边框圆角\n * @description 背景边框圆角\n * @default 4\n * @example 4\n */\n backgroundBorderRadius?: number\n /**\n * 背景内边距\n * @description 背景内边距\n * @default 4\n * @example 4\n */\n backgroundPadding?: number\n}\n\nexport const zAnnotationVerticalLine = z.object({\n selector: z.union([zSelector, zSelectors]).optional(),\n xValue: z.union([z.number(), z.string(), z.array(z.union([z.number(), z.string()]))]).optional(),\n text: z.string().or(z.array(z.string())).optional(),\n textPosition: z\n .enum(['outsideStart', 'outsideEnd', 'outsideMiddle', 'insideStart', 'insideMiddle', 'insideEnd'])\n .default('insideEnd')\n .optional(),\n textColor: z.string().default('#ffffff').optional(),\n textFontSize: z.number().default(12).optional(),\n textFontWeight: z.number().default(400).optional(),\n textAlign: z.enum(['left', 'right', 'center']).default('right').optional(),\n textBaseline: z.enum(['top', 'middle', 'bottom']).default('top').optional(),\n lineVisible: z.boolean().optional(),\n lineColor: z.string().optional(),\n lineWidth: z.number().optional(),\n lineStyle: z.union([z.literal('solid'), z.literal('dashed'), z.literal('dotted')]).optional(),\n backgroundVisible: z.boolean().default(true).optional(),\n backgroundColor: z.string().default('#212121').optional(),\n backgroundBorderColor: z.string().optional(),\n backgroundBorderWidth: z.number().default(1).optional(),\n backgroundBorderRadius: z.number().default(4).optional(),\n backgroundPadding: z.number().optional(),\n})\n","import { zSelector, zSelectors, type Selector, type Selectors } from '../../dataSelector'\nimport { z } from 'zod'\n\nexport type AnnotationHorizontalLine = {\n /**\n * 依赖选择的数据, 进行数据标记.\n */\n selector?: Selector | Selectors\n /**\n * 固定的y值, 用于标注水平线\n * @description 类目轴在y方向, 则可输入维值, 数值轴在y方向, 则可输入具体的数值\n * @default []\n */\n yValue?: (number | string) | (number | string)[]\n /**\n * 标注的文本\n * @description 标注的文本\n * @default ''\n * @example '标注文本'\n */\n text?: string | string[]\n /**\n * 文本位置\n * @description 标注线的标签位置(标签相对线的相对位置)。\n * @default 'insideEnd'\n * @example 'outsideEnd'\n */\n textPosition?: 'outsideStart' | 'outsideEnd' | 'outsideMiddle' | 'insideStart' | 'insideMiddle' | 'insideEnd'\n /**\n * 文本颜色\n * @description 文本颜色\n * @default '#ffffff'\n * @example 'red'\n */\n textColor?: string\n /**\n * 文本字体大小\n * @description 文本字体大小\n * @default 12\n * @example 12\n */\n textFontSize?: number\n /**\n * 文本字体重量\n * @description 文本字体重量\n * @default 400\n * @example 400\n */\n textFontWeight?: number\n\n /**\n * 文本对齐方式\n * @description 文本对齐方式\n * @default 'left'\n * @example 'center'\n */\n textAlign?: 'left' | 'right' | 'center'\n /**\n * 文本垂直对齐方式\n * @description 文本垂直对齐方式\n * @default 'bottom'\n * @example 'middle'\n */\n textBaseline?: 'top' | 'middle' | 'bottom'\n /**\n * 文本Y方向的, 偏移量\n * @description 文本Y方向的, 偏移量, 支持正负\n * @default 0\n * @example offsetY: 10\n */\n offsetY?: number\n /**\n * 文本X方向的, 偏移量\n * @description 文本X方向的, 偏移量, 支持正负\n * @default 0\n * @example offsetX: -10\n */\n offsetX?: number\n /**\n * 线可见\n * @description 线可见\n * @default true\n * @example true\n */\n lineVisible?: boolean\n /**\n * 线颜色\n * @description 线颜色\n * @default 'red'\n * @example 'red'\n */\n lineColor?: string\n /**\n * 线宽度\n * @description 线宽度\n * @default 2\n * @example 2\n */\n lineWidth?: number\n /**\n * 线样式\n * @description 线样式\n * @default 'solid'\n * @example 'solid'\n */\n lineStyle?: 'solid' | 'dashed' | 'dotted'\n /**\n * 背景可见\n * @description 背景可见\n * @default true\n * @example true\n */\n backgroundVisible?: boolean\n /**\n * 背景颜色\n * @description 背景颜色\n * @default '#212121'\n * @example 'red'\n */\n backgroundColor?: string\n /**\n * 背景边框颜色\n * @description 背景边框颜色\n * @default 'red'\n * @example 'red'\n */\n backgroundBorderColor?: string\n /**\n * 背景边框宽度\n * @description 背景边框宽度\n * @default 1\n * @example 2\n */\n backgroundBorderWidth?: number\n /**\n * 背景边框圆角\n * @description 背景边框圆角\n * @default 4\n * @example 4\n */\n backgroundBorderRadius?: number\n /**\n * 背景内边距\n * @description 背景内边距\n * @default 4\n * @example 4\n */\n backgroundPadding?: number\n}\n\nexport const zAnnotationHorizontalLine = z.object({\n selector: z.union([zSelector, zSelectors]).optional(),\n yValue: z.union([z.number(), z.string(), z.array(z.union([z.number(), z.string()]))]).optional(),\n text: z.string().or(z.array(z.string())).optional(),\n textPosition: z\n .enum(['outsideStart', 'outsideEnd', 'outsideMiddle', 'insideStart', 'insideMiddle', 'insideEnd'])\n .default('insideMiddle')\n .optional(),\n textColor: z.string().default('#ffffff').optional(),\n textFontSize: z.number().default(12).optional(),\n textFontWeight: z.number().default(400).optional(),\n textAlign: z.enum(['left', 'right', 'center']).default('center').optional(),\n textBaseline: z.enum(['top', 'middle', 'bottom']).default('bottom').optional(),\n lineVisible: z.boolean().optional(),\n lineColor: z.string().optional(),\n lineWidth: z.number().optional(),\n lineStyle: z.union([z.literal('solid'), z.literal('dashed'), z.literal('dotted')]).optional(),\n backgroundVisible: z.boolean().default(true).optional(),\n backgroundColor: z.string().default('#212121').optional(),\n backgroundBorderColor: z.string().optional(),\n backgroundBorderWidth: z.number().default(1).optional(),\n backgroundBorderRadius: z.number().default(4).optional(),\n backgroundPadding: z.number().optional(),\n})\n","import { zSelector, zSelectors, type Selector, type Selectors } from '../../dataSelector'\nimport { z } from 'zod'\n\nexport type AnnotationArea = {\n /**\n * 依赖选择的数据, 进行数据标记.\n */\n selector: Selector | Selectors\n\n /**\n * 标注的文本\n * @description 标注的文本\n * @default ''\n * @example '标注文本'\n */\n text?: string | string[]\n\n /**\n * 文本位置\n * @description 文本位置\n * @default 'top'\n * @example 'top'\n */\n textPosition?: 'top' | 'topRight' | 'topLeft' | 'bottom' | 'bottomLeft' | 'bottomRight' | 'left' | 'right'\n\n /**\n * 文本颜色\n * @description 文本颜色\n * @default '#ffffff'\n * @example 'red'\n */\n textColor?: string\n /**\n * 文本字体大小\n * @description 文本字体大小\n * @default 12\n * @example 12\n */\n textFontSize?: number\n /**\n * 文本字体重量\n * @description 文本字体重量\n * @default 400\n * @example 400\n */\n textFontWeight?: number\n\n /**\n * 文本对齐方式\n * @description 文本对齐方式\n * @default 'left'\n * @example 'left'\n */\n textAlign?: 'left' | 'right' | 'center'\n /**\n * 文本垂直对齐方式\n * @description 文本垂直对齐方式\n * @default 'middle'\n * @example 'middle'\n */\n textBaseline?: 'top' | 'middle' | 'bottom'\n /**\n * 背景可见\n * @description 背景可见\n * @default true\n * @example true\n */\n backgroundVisible?: boolean\n /**\n * 背景颜色\n * @description 背景颜色\n * @default '#212121'\n * @example 'red'\n */\n backgroundColor?: string\n /**\n * 背景边框颜色\n * @description 背景边框颜色\n * @default 'red'\n * @example 'red'\n */\n backgroundBorderColor?: string\n /**\n * 背景边框宽度\n * @description 背景边框宽度\n * @default 1\n * @example 2\n */\n backgroundBorderWidth?: number\n /**\n * 背景边框圆角\n * @description 背景边框圆角\n * @default 4\n * @example 4\n */\n backgroundBorderRadius?: number\n /**\n * 背景内边距\n * @description 背景内边距\n * @default 4\n * @example 4\n */\n backgroundPadding?: number\n\n /**\n * 面积区域颜色\n * @description 面积区域颜色\n * @default 'red'\n * @example 'red'\n */\n areaColor?: string\n /**\n * 面积区域颜色透明度\n * @description 面积区域颜色透明度\n * @default 0.5\n * @example 0.5\n */\n areaColorOpacity?: number\n /**\n * 面积区域边框颜色\n * @description 面积区域边框颜色\n * @default 'red'\n * @example 'red'\n */\n areaBorderColor?: number\n /**\n * 面积区域边框宽度\n * @description 面积区域边框宽度\n * @default 2\n * @example 2\n */\n areaBorderWidth?: number\n /**\n * 面积区域边框圆角\n * @description 面积区域边框圆角\n * @default 4\n * @example 4\n */\n areaBorderRadius?: number\n /**\n * 面积区域的边距\n * @description 面积区域的边距\n * @default 8\n * @example 0\n */\n outerPadding?: number\n}\n\nexport const zAnnotationArea = z.object({\n selector: z.union([zSelector, zSelectors]),\n textPosition: z\n .enum(['top', 'topRight', 'topLeft', 'bottom', 'bottomLeft', 'bottomRight', 'left', 'right'])\n .default('top')\n .optional(),\n text: z.string().or(z.array(z.string())).optional(),\n textColor: z.string().default('#ffffff').optional(),\n textFontSize: z.number().default(12).optional(),\n textFontWeight: z.number().default(400).optional(),\n textAlign: z.enum(['left', 'right', 'center']).default('center').optional(),\n textBaseline: z.enum(['top', 'middle', 'bottom']).default('middle').optional(),\n\n backgroundVisible: z.boolean().default(true).optional(),\n backgroundColor: z.string().default('#212121').optional(),\n backgroundBorderColor: z.string().optional(),\n backgroundBorderWidth: z.number().default(1).optional(),\n backgroundBorderRadius: z.number().default(4).optional(),\n backgroundPadding: z.number().optional(),\n\n areaColor: z.string().default('red').optional(),\n areaColorOpacity: z.number().default(0.5).optional(),\n areaBorderColor: z.number().optional(),\n areaBorderWidth: z.number().default(2).optional(),\n areaBorderRadius: z.number().default(4).optional(),\n\n outerPadding: z.number().optional(),\n})\n","import { z } from 'zod'\nimport { zAnnotationPoint } from './annotationPoint'\nimport { zAnnotationVerticalLine } from './annotationVerticalLine'\nimport { zAnnotationHorizontalLine } from './annotationHorizontalLine'\nimport { zAnnotationArea } from './annotationArea'\n\nexport const zAnnotation = z.object({\n annotationPoint: zAnnotationPoint.or(z.array(zAnnotationPoint)).optional(),\n annotationVerticalLine: zAnnotationVerticalLine.or(z.array(zAnnotationVerticalLine)).optional(),\n annotationHorizontalLine: zAnnotationHorizontalLine.or(z.array(zAnnotationHorizontalLine)).optional(),\n annotationArea: zAnnotationArea.or(z.array(zAnnotationArea)).optional(),\n})\n\nexport type Annotation = z.infer<typeof zAnnotation>\n","import { z } from 'zod'\n\nexport const zSortAxis = z.object({\n order: z.enum(['asc', 'desc']).default('asc'),\n orderBy: z.string().optional(),\n customOrder: z.array(z.any()).optional(),\n})\n\n/**\n * @description 类目轴排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @default {}\n * @example \n * - order:'asc'\n * - orderBy:'date'\n * 或\n * - customOrder:['2019', '2020', '2021']\n */\nexport type SortAxis = {\n /**\n * @description 排序顺序, 可选值为 'asc' 或 'desc'\n * @default 'asc'\n * @enum ['asc', 'desc']\n * @example order:'asc'\n */\n order?: 'asc' | 'desc'\n\n /**\n * @description 排序依赖的字段, 可以是维度id或指标id\n * @default ''\n * @example \n * - orderBy:'date'\n * - orderBy:'profit'\n */\n orderBy?: string\n\n /**\n * @description 自定义排序顺序, 该顺序将直接应用至类目轴\n */\n customOrder?: string[]\n}\n","import { z } from 'zod'\n\nexport const zSortLegend = z.object({\n order: z.enum(['asc', 'desc']).default('asc'),\n orderBy: z.string().optional(),\n customOrder: z.array(z.any()).optional(),\n})\n\n/**\n * @description 图例排序配置, 支持根据维度或指标排序, 以及自定义排序顺序; 排序数组遵循从左到右或从上到下的顺序\n * @default {}\n * @example \n * - order:'asc'\n * - orderBy:'date'\n * 或\n * - customOrder:['2019', '2020', '2021']\n */\nexport type SortLegend = {\n /**\n * @description 排序顺序, 可选值为 'asc' 或 'desc'\n * @default 'asc'\n * @enum ['asc', 'desc']\n * @example order:'asc'\n */\n order?: 'asc' | 'desc'\n /**\n * @description 排序依赖的字段, 可以是维度id或指标id\n * @default ''\n * @example \n * - orderBy:'date'\n * - orderBy:'profit'\n */\n orderBy?: string\n /**\n * @description 自定义排序顺序, 该顺序将直接应用至图例, 升序从左到右或从上到下, 降序从右到左或从下到上\n */\n customOrder?: string[]\n}\n","import z from 'zod'\n\nexport const zAnalysis = z.object({\n orderMapping: z.record(z.string(), z.array(z.string())).optional(),\n})\n","import { z } from 'zod'\n\nexport type Locale = 'zh-CN' | 'en-US'\n\nexport type TranslateRecordType = Record<string, { [local in Locale]: string }>\n\nexport const zLocale = z.enum(['zh-CN', 'en-US']).default('zh-CN')\n","import { z } from 'zod'\nimport { zLocale, type Locale } from '../../i18n'\nimport type { DimensionTree, MeasureTree } from '../../properties'\nimport {\n zBackgroundColor,\n zDataset,\n zDimensions,\n zMeasureTree,\n zTheme,\n type BackgroundColor,\n type Dataset,\n type Theme,\n} from '../../properties'\n\n/**\n * 表格类型定义\n * @description 表格,适用于详细数据展示场景,行列分明,便于查看具体数值\n * 适用场景:\n * - 需要展示详细数据明细\n * - 数据项需要精确比对\n * - 展示多维度数据属性\n * 数据要求:\n * - 至少1个维度字段\n * - 至少1个度量字段\n * - 维度字段会作为表格的列标题\n * 默认开启的功能:\n * - 默认开启排序、筛选、分页功能\n */\nexport interface Table {\n /**\n * 表格\n * @description 标准表格组件,用于展示详细数据\n * @type {'table'}\n * @example 'table'\n */\n chartType: 'table'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, 一个字段对应一列, 一个记录对应一行\n * @type {Array<Record<string|number, any>>}\n * @example [{id: 1, name: \"A\", value: 100}, {id: 2, name: \"B\", value: 200}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 表格的每个维度会对应一列\n * @type {Dimensions}\n * @example [{id: \"name\", alias: \"名称\"}]\n */\n dimensions?: DimensionTree\n\n /**\n * 指标\n * @description 表格的每个指标会对应一行, 并且天生支持指标组合.\n * @type {Measures}\n * @example [{id: \"value\", alias: \"数值\"}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zTable = z.object({\n chartType: z.literal('table'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n theme: zTheme.optional(),\n locale: zLocale.optional(),\n})\n","import { z } from 'zod'\nimport { zLocale, type Locale } from '../../i18n'\nimport type { Measures } from '../../properties'\nimport {\n zBackgroundColor,\n zDataset,\n zDimensions,\n zTheme,\n type BackgroundColor,\n type Dataset,\n type Dimensions,\n type Theme,\n zMeasures,\n} from '../../properties'\n\n/**\n * 透视表类型定义\n * @description 透视表,适用于多维度数据交叉分析场景,可灵活配置行、列维度和指标计算方式\n * 适用场景:\n * - 复杂多维数据统计分析\n * - 数据钻取与聚合展示\n * - 业务报表生成与数据探索\n * 数据要求:\n * - 至少1个行维度 或 1个列维度 或 1个指标\n * - 数据必须已聚合\n * - 数据可被分组\n * 默认开启的功能:\n * - 默认开启行列排序、数据筛选、聚合计算、小计/总计\n */\nexport interface PivotTable {\n /**\n * 透视表\n * @description 透视表,适用于多维度数据交叉分析场景\n * @type {'pivotTable'}\n * @example 'pivotTable'\n */\n chartType: 'pivotTable'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 透视表的数据最终会被转换对应的树形结构, 用户无需手动进行数据处理.\n * @type {Array<Record<string|number, any>>}\n * @example [{region:'华东', product:'A', sales:1000}, {region:'华东', product:'B', sales:1500}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 透视表的行维度和列维度,会自动对数据进行处理为树形结构, 并映射到行和列轴, 可以通过 location : \"rowDimension\" | \"columnDimension\" 来控制一维度的映射位置\n * @type {Dimensions}\n * @example [{id: 'region', alias: '地区', isRow: true}, {id: 'product', alias: '产品', isColumn: true}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 透视表支持多个维度指标\n * @type {Measures}\n * @example [{id: 'sales', alias: '销售额', aggregation: 'sum'}]\n */\n measures?: Measures\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zPivotTable = z.object({\n chartType: z.literal('pivotTable'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasures.optional(),\n backgroundColor: zBackgroundColor.optional(),\n theme: zTheme.optional(),\n locale: zLocale.optional(),\n})\n","import type { Locale } from '../../i18n'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zColor,\n zCrosshairLine,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zLineStyle,\n zMeasureTree,\n zPointStyle,\n zSortAxis,\n zSortLegend,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\nimport type {\n AnnotationArea,\n AnnotationHorizontalLine,\n AnnotationPoint,\n AnnotationVerticalLine,\n BackgroundColor,\n Color,\n Dataset,\n Dimensions,\n Label,\n Legend,\n LineStyle,\n PointStyle,\n Theme,\n Tooltip,\n CrosshairLine,\n XBandAxis,\n YLinearAxis,\n MeasureTree,\n SortAxis,\n SortLegend,\n} from '../../properties'\nimport { z } from 'zod'\n\n/**\n * 折线图类型定义\n * @description 折线图,适用于展示数据随时间或有序类别变化的趋势,通过线段连接数据点形成趋势线\n * 适用场景:\n * - 展示时间序列数据的变化趋势\n * - 比较多个数据系列的趋势对比\n * - 分析数据的增长或下降规律\n * 数据要求:\n * - 至少1个数值字段(度量)\n * - 第一个维度会放至X轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示\n * - 所有指标会自动合并为一个指标\n * 默认开启的功能:\n * - 默认开启图例、坐标轴、数据点标记、提示信息、趋势线\n */\nexport interface Line {\n /**\n * 折线图\n * @description 折线图,适用于展示数据随时间或有序类别变化的趋势\n * @type {'line'}\n * @example 'line'\n */\n chartType: 'line'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 折线图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{month:'1月', value:100}, {month:'2月', value:150}, {month:'3月', value:120}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 折线图的第一个维度被映射到X轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示\n * @type {Dimensions}\n * @example [{id: \"month\", alias: \"月份\"}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 折线图的所有指标会自动合并为一个指标, 映射到Y轴, 存在多个指标时, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {DimensionTree}\n * @example [{id: \"value\", alias: \"数值\"}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * x轴\n * @description 类目轴, x轴配置, 用于定义图表的x轴, 包括x轴的位置, 格式, 样式等.\n */\n xAxis?: XBandAxis\n\n /**\n * y轴\n * @description 数值轴, y轴配置, 用于定义图表的y轴, 包括y轴的位置, 格式, 样式等.\n */\n yAxis?: YLinearAxis\n\n /**\n * 垂直提示线\n * @description 鼠标移动到图表上时, 显示的垂直提示线\n */\n crosshairLine?: CrosshairLine\n\n /**\n * @description X轴排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortAxis: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortAxis: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortAxis?: SortAxis\n /**\n * @description 图例排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortLegend: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortLegend: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortLegend?: SortLegend\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 点图元样式\n * @description 点图元样式配置, 用于定义图表的点图元样式, 包括点图元的颜色, 边框等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n pointStyle?: PointStyle | PointStyle[]\n\n /**\n * 线图元样式\n * @description 线图元样式配置, 用于定义图表的线图元样式, 包括线图元的颜色, 透明度, 曲线等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n lineStyle?: LineStyle | LineStyle[]\n\n /**\n * 标注点\n * @description 标注点配置, 根据选择的数据, 定义图表的标注点, 包括标注点的位置, 格式, 样式等.\n */\n annotationPoint?: AnnotationPoint | AnnotationPoint[]\n\n /**\n * 标注垂直线\n * @description 标注垂直线配置, 根据选择的数据, 定义图表的标注垂直线, 包括标注垂直线的位置, 样式等.\n */\n annotationVerticalLine?: AnnotationVerticalLine | AnnotationVerticalLine[]\n\n /**\n * 标注水平线\n * @description 标注水平线配置, 根据选择的数据, 定义图表的标注水平线, 包括标注水平线的位置, 样式等.\n */\n annotationHorizontalLine?: AnnotationHorizontalLine | AnnotationHorizontalLine[]\n\n /**\n * 标注区域\n * @description 标注区域配置, 根据选择的数据, 定义图表的标注区域, 包括标注区域的位置, 样式等.\n */\n annotationArea?: AnnotationArea | AnnotationArea[]\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zLine = z.object({\n chartType: z.literal('line'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n xAxis: zXBandAxis.optional(),\n yAxis: zYLinearAxis.optional(),\n crosshairLine: zCrosshairLine.optional(),\n sortAxis: zSortAxis.optional(),\n sortLegend: zSortLegend.optional(),\n theme: zTheme.optional(),\n pointStyle: z.array(zPointStyle).or(zPointStyle).optional(),\n lineStyle: z.array(zLineStyle).or(zLineStyle).optional(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).optional(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).optional(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).optional(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).optional(),\n locale: zLocale.optional(),\n})\n","import type { Locale } from '../../i18n'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\nimport type {\n AnnotationArea,\n AnnotationHorizontalLine,\n AnnotationPoint,\n AnnotationVerticalLine,\n BackgroundColor,\n BarStyle,\n Color,\n CrosshairRect,\n Dataset,\n Dimensions,\n Label,\n Legend,\n StackCornerRadius,\n Theme,\n Tooltip,\n XBandAxis,\n YLinearAxis,\n MeasureTree,\n SortAxis,\n SortLegend,\n} from '../../properties'\nimport { z } from 'zod'\n\n/**\n * 柱状图类型定义\n * @description 柱状图,适用于纵向数据对比场景,X轴为类目轴(分类数据),Y轴为数值轴(连续数据),柱子纵向排列\n * 适用场景:\n * - 数据项名称较短时\n * - 需要直观比较不同类别的数值大小\n * - 展示时间序列数据变化趋势\n * 数据要求:\n * - 至少1个数值字段(度量)\n * - 第一个维度会放至X轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示\n * - 所有指标会自动合并为一个指标\n * 默认开启的功能:\n * - 默认开启图例、坐标轴、数据标签、提示信息\n */\nexport interface Column {\n /**\n * 柱状图\n * @description 柱状图,适用于纵向数据对比场景,X轴为类目轴(分类数据),Y轴为数值轴(连续数据),柱子纵向排列\n * @type {'column'}\n * @example 'column'\n */\n chartType: 'column'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 柱状图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{category:'A', value:100}, {category:'B', value:200}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 柱状图的第一个维度被映射到X轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示\n * @type {Dimensions}\n * @example [{id: \"category\", alias: \"类别\"}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 柱状图的所有指标会自动合并为一个指标, 映射到Y轴, 存在多个指标时, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {DimensionTree}\n * @example [{id: \"value\", alias: \"数值\"}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * x轴\n * @description 类目轴, x轴配置, 用于定义图表的x轴, 包括x轴的位置, 格式, 样式等.\n */\n xAxis?: XBandAxis\n\n /**\n * y轴\n * @description 数值轴, y轴配置, 用于定义图表的y轴, 包括y轴的位置, 格式, 样式等.\n */\n yAxis?: YLinearAxis\n\n /**\n * @description X轴排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortAxis: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortAxis: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortAxis?: SortAxis\n /**\n * @description 图例排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortLegend: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortLegend: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortLegend?: SortLegend\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 垂直提示框\n * @description 垂直提示框配置, 用于定义图表的垂直提示框, 包括垂直提示框的颜色、标签样式等.\n */\n crosshairRect?: CrosshairRect\n\n /**\n * 柱状图 堆叠圆角\n * @description 条形图 堆叠圆角\n * @default 8\n */\n stackCornerRadius?: StackCornerRadius\n\n /**\n * 矩形图元样式\n * @description 条形图样式配置, 用于定义图表的条形图样式, 包括条形图的颜色, 边框, 圆角等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n barStyle?: BarStyle | BarStyle[]\n\n /**\n * 标注点\n * @description 标注点配置, 根据选择的数据, 定义图表的标注点, 包括标注点的位置, 格式, 样式等.\n */\n annotationPoint?: AnnotationPoint | AnnotationPoint[]\n\n /**\n * 标注垂直线\n * @description 标注垂直线配置, 根据选择的数据, 定义图表的标注垂直线, 包括标注垂直线的位置, 样式等.\n */\n annotationVerticalLine?: AnnotationVerticalLine | AnnotationVerticalLine[]\n\n /**\n * 标注水平线\n * @description 标注水平线配置, 根据选择的数据, 定义图表的标注水平线, 包括标注水平线的位置, 样式等.\n */\n annotationHorizontalLine?: AnnotationHorizontalLine | AnnotationHorizontalLine[]\n\n /**\n * 标注区域\n * @description 标注区域配置, 根据选择的数据, 定义图表的标注区域, 包括标注区域的位置, 样式等.\n */\n annotationArea?: AnnotationArea | AnnotationArea[]\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zColumn = z.object({\n chartType: z.literal('column'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n xAxis: zXBandAxis.optional(),\n yAxis: zYLinearAxis.optional(),\n crosshairRect: zCrosshairRect.optional(),\n stackCornerRadius: zStackCornerRadius.optional(),\n theme: zTheme.optional(),\n barStyle: z.array(zBarStyle).or(zBarStyle).optional(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).optional(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).optional(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).optional(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).optional(),\n locale: zLocale.optional(),\n})\n","import type { Locale } from '../../i18n'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\nimport type {\n AnnotationArea,\n AnnotationHorizontalLine,\n AnnotationPoint,\n AnnotationVerticalLine,\n BackgroundColor,\n BarStyle,\n Color,\n CrosshairRect,\n Dataset,\n Dimensions,\n Label,\n Legend,\n StackCornerRadius,\n Theme,\n Tooltip,\n XBandAxis,\n YLinearAxis,\n MeasureTree,\n SortLegend,\n SortAxis,\n} from '../../properties'\nimport { z } from 'zod'\n\n/**\n * 并列柱状图类型定义\n * @description 并列柱状图,适用于多指标并行对比场景,多个柱子并列排列展示不同指标值\n * 适用场景:\n * - 同一维度下多指标并行对比\n * - 多维度数据的横向比较\n * - 指标间关联性分析\n * 数据要求:\n * - 至少1个指标字段(度量)\n * - 第一个维度会放至X轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * - 所有指标会自动合并为一个指标\n * 默认开启的功能:\n * - 默认开启图例、坐标轴、数据标签、提示信息、指标排序\n */\nexport interface ColumnParallel {\n /**\n * 并列柱状图\n * @description 并列柱状图,适用于多指标并行对比场景\n * @type {'columnParallel'}\n * @example 'columnParallel'\n */\n chartType: 'columnParallel'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 并列柱状图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{category:'A', value1:100, value2:200}, {category:'B', value1:150, value2:250}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 第一个维度被映射到X轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * @type {Dimensions}\n * @example [{id: 'category', alias: '类别'}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 并列柱状图的所有指标会自动合并为一个指标, 映射到Y轴, 存在多个指标时, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {DimensionTree}\n * @example [{id: 'value1', alias: '指标1'}, {id: 'value2', alias: '指标2'}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * x轴\n * @description 类目轴, x轴配置, 用于定义图表的x轴, 包括x轴的位置, 格式, 样式等.\n */\n xAxis?: XBandAxis\n\n /**\n * y轴\n * @description 数值轴, y轴配置, 用于定义图表的y轴, 包括y轴的位置, 格式, 样式等.\n */\n yAxis?: YLinearAxis\n\n /**\n * 垂直提示框\n * @description 垂直提示框配置, 用于定义图表的垂直提示框, 包括垂直提示框的颜色、标签样式等.\n */\n crosshairRect?: CrosshairRect\n\n /**\n * 柱状图 堆叠圆角\n * @description 条形图 堆叠圆角\n * @default 8\n */\n stackCornerRadius?: StackCornerRadius\n\n /**\n * @description X轴排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortAxis: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortAxis: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortAxis?: SortAxis\n /**\n * @description 图例排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortLegend: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortLegend: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortLegend?: SortLegend\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 矩形图元样式\n * @description 条形图样式配置, 用于定义图表的条形图样式, 包括条形图的颜色, 边框, 圆角等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n barStyle?: BarStyle | BarStyle[]\n\n /**\n * 标注点\n * @description 标注点配置, 根据选择的数据, 定义图表的标注点, 包括标注点的位置, 格式, 样式等.\n */\n annotationPoint?: AnnotationPoint | AnnotationPoint[]\n\n /**\n * 标注垂直线\n * @description 标注垂直线配置, 根据选择的数据, 定义图表的标注垂直线, 包括标注垂直线的位置, 样式等.\n */\n annotationVerticalLine?: AnnotationVerticalLine | AnnotationVerticalLine[]\n\n /**\n * 标注水平线\n * @description 标注水平线配置, 根据选择的数据, 定义图表的标注水平线, 包括标注水平线的位置, 样式等.\n */\n annotationHorizontalLine?: AnnotationHorizontalLine | AnnotationHorizontalLine[]\n\n /**\n * 标注区域\n * @description 标注区域配置, 根据选择的数据, 定义图表的标注区域, 包括标注区域的位置, 样式等.\n */\n annotationArea?: AnnotationArea | AnnotationArea[]\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zColumnParallel = z.object({\n chartType: z.literal('columnParallel'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n xAxis: zXBandAxis.optional(),\n yAxis: zYLinearAxis.optional(),\n crosshairRect: zCrosshairRect.optional(),\n stackCornerRadius: zStackCornerRadius.optional(),\n theme: zTheme.optional(),\n barStyle: z.array(zBarStyle).or(zBarStyle).optional(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).optional(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).optional(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).optional(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).optional(),\n locale: zLocale.optional(),\n})\n","import type { Locale } from '../../i18n'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\nimport type {\n AnnotationArea,\n AnnotationHorizontalLine,\n AnnotationPoint,\n AnnotationVerticalLine,\n BackgroundColor,\n BarStyle,\n Color,\n CrosshairRect,\n Dataset,\n Dimensions,\n Label,\n Legend,\n StackCornerRadius,\n Theme,\n Tooltip,\n XBandAxis,\n YLinearAxis,\n MeasureTree,\n SortAxis,\n SortLegend,\n} from '../../properties'\nimport { z } from 'zod'\n\n/**\n * 百分比柱状图类型定义\n * @description 百分比柱状图,适用于展示各类别占比关系的场景,Y轴以百分比形式展示数据占比\n * 适用场景:\n * - 不同类别数据的占比对比\n * - 多维度数据的构成分析\n * - 时间序列的占比变化趋势\n * 数据要求:\n * - 至少1个指标字段(度量)\n * - 第一个维度会放至X轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * - 所有指标会自动合并为一个指标\n * 默认开启的功能:\n * - 默认开启图例、坐标轴、百分比标签、提示信息、占比计算\n */\nexport interface ColumnPercent {\n /**\n * 百分比柱状图\n * @description 百分比柱状图,以百分比形式展示各类别数据占比关系\n * @type {'columnPercent'}\n * @example 'columnPercent'\n */\n chartType: 'columnPercent'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 百分比柱状图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{category:'A', value:30}, {category:'B', value:70}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 第一个维度被映射到X轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * @type {Dimensions}\n * @example [{id: 'category', alias: '类别'}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 百分比柱状图指标会自动合并为一个指标, 映射到Y轴, 存在多个指标时, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {DimensionTree}\n * @example [{id: 'value', alias: '数值占比', format: 'percent'}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * x轴\n * @description 类目轴, x轴配置, 用于定义图表的x轴, 包括x轴的位置, 格式, 样式等.\n */\n xAxis?: XBandAxis\n\n /**\n * y轴\n * @description 数值轴, y轴配置, 用于定义图表的y轴, 包括y轴的位置, 格式, 样式等.\n */\n yAxis?: YLinearAxis\n\n /**\n * 垂直提示框\n * @description 垂直提示框配置, 用于定义图表的垂直提示框, 包括垂直提示框的颜色、标签样式等.\n */\n crosshairRect?: CrosshairRect\n\n /**\n * 柱状图 堆叠圆角\n * @description 条形图 堆叠圆角\n * @default 8\n */\n stackCornerRadius?: StackCornerRadius\n\n /**\n * @description X轴排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortAxis: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortAxis: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortAxis?: SortAxis\n /**\n * @description 图例排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortLegend: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortLegend: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortLegend?: SortLegend\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 矩形图元样式\n * @description 条形图样式配置, 用于定义图表的条形图样式, 包括条形图的颜色, 边框, 圆角等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n barStyle?: BarStyle | BarStyle[]\n\n /**\n * 标注点\n * @description 标注点配置, 根据选择的数据, 定义图表的标注点, 包括标注点的位置, 格式, 样式等.\n */\n annotationPoint?: AnnotationPoint | AnnotationPoint[]\n\n /**\n * 标注垂直线\n * @description 标注垂直线配置, 根据选择的数据, 定义图表的标注垂直线, 包括标注垂直线的位置, 样式等.\n */\n annotationVerticalLine?: AnnotationVerticalLine | AnnotationVerticalLine[]\n\n /**\n * 标注水平线\n * @description 标注水平线配置, 根据选择的数据, 定义图表的标注水平线, 包括标注水平线的位置, 样式等.\n */\n annotationHorizontalLine?: AnnotationHorizontalLine | AnnotationHorizontalLine[]\n\n /**\n * 标注区域\n * @description 标注区域配置, 根据选择的数据, 定义图表的标注区域, 包括标注区域的位置, 样式等.\n */\n annotationArea?: AnnotationArea | AnnotationArea[]\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zColumnPercent = z.object({\n chartType: z.literal('columnPercent'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n xAxis: zXBandAxis.optional(),\n yAxis: zYLinearAxis.optional(),\n crosshairRect: zCrosshairRect.optional(),\n stackCornerRadius: zStackCornerRadius.optional(),\n theme: zTheme.optional(),\n barStyle: z.array(zBarStyle).or(zBarStyle).optional(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).optional(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).optional(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).optional(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).optional(),\n locale: zLocale.optional(),\n})\n","import { zLocale, type Locale } from '../../i18n'\nimport type { MeasureTree, SortAxis, SortLegend } from '../../properties'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXLinearAxis,\n zYBandAxis,\n} from '../../properties'\nimport {\n type AnnotationArea,\n type AnnotationHorizontalLine,\n type AnnotationPoint,\n type AnnotationVerticalLine,\n type BackgroundColor,\n type BarStyle,\n type Color,\n type CrosshairRect,\n type Dataset,\n type Dimensions,\n type Label,\n type Legend,\n type StackCornerRadius,\n type Theme,\n type Tooltip,\n type XLinearAxis,\n type YBandAxis,\n} from '../../properties'\nimport { z } from 'zod'\n\n/**\n * 条形图类型定义\n * @description 条形图,适用于横向数据对比场景,Y轴为类目轴(分类数据),X轴为数值轴(连续数据),柱子横向排列\n * 适用场景:\n * - 数据项名称较长时\n * - 需要展示数据排名对比\n * - 展示正负双向数据\n * 数据要求:\n * - 至少1个指标字段(度量)\n * - 第一个维度会放至Y轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * - 所有指标会自动合并为一个指标\n * 默认开启的功能:\n * - 默认开启图例、坐标轴、数据标签、提示信息\n */\nexport interface Bar {\n /**\n * 条形图\n * @description 条形图,适用于横向数据对比场景,Y轴为类目轴(分类数据),X轴为数值轴(连续数据),柱子横向排列\n * @type {'bar'}\n * @example 'bar'\n */\n chartType: 'bar'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 条形图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{date:'2020-01-01', value:100}, {date:'2020-01-02', value:200}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 第一个维度被映射到Y轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * @type {Dimensions}\n * @example [{id: \"date\", alias: \"日期\"}, {id: \"value\", alias: \"数值\"}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 条形图指标会自动合并为一个指标, 映射到X轴, 存在多个指标时, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {DimensionTree}\n * @example [{id: \"value\", alias: \"数值\"}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * x轴\n * @description 数值轴, x轴配置, 用于定义图表的x轴, 包括x轴的位置, 格式, 样式等.\n */\n xAxis?: XLinearAxis\n\n /**\n * y轴\n * @description 类目轴, y轴配置, 用于定义图表的y轴, 包括y轴的位置, 格式, 样式等.\n */\n yAxis?: YBandAxis\n\n /**\n * 水平提示框\n * @description 水平提示框配置, 用于定义图表的水平提示框, 包括水平提示框的颜色、标签样式等.\n */\n crosshairRect?: CrosshairRect\n\n /**\n * 条形图 堆叠圆角\n * @description 条形图 堆叠圆角\n * @default 8\n */\n stackCornerRadius?: StackCornerRadius\n\n /**\n * @description Y轴排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortAxis: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortAxis: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortAxis?: SortAxis\n /**\n * @description 图例排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortLegend: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortLegend: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortLegend?: SortLegend\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 矩形图元样式\n * @description 条形图样式配置, 用于定义图表的条形图样式, 包括条形图的颜色, 边框, 圆角等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n barStyle?: BarStyle | BarStyle[]\n\n /**\n * 标注点\n * @description 标注点配置, 根据选择的数据, 定义图表的标注点, 包括标注点的位置, 格式, 样式等.\n */\n annotationPoint?: AnnotationPoint | AnnotationPoint[]\n\n /**\n * 标注垂直线\n * @description 标注垂直线配置, 根据选择的数据, 定义图表的标注垂直线, 包括标注垂直线的位置, 样式等.\n */\n annotationVerticalLine?: AnnotationVerticalLine | AnnotationVerticalLine[]\n\n /**\n * 标注水平线\n * @description 标注水平线配置, 根据选择的数据, 定义图表的标注水平线, 包括标注水平线的位置, 样式等.\n */\n annotationHorizontalLine?: AnnotationHorizontalLine | AnnotationHorizontalLine[]\n\n /**\n * 标注区域\n * @description 标注区域配置, 根据选择的数据, 定义图表的标注区域, 包括标注区域的位置, 样式等.\n */\n annotationArea?: AnnotationArea | AnnotationArea[]\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zBar = z.object({\n chartType: z.literal('bar'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n xAxis: zXLinearAxis.optional(),\n yAxis: zYBandAxis.optional(),\n crosshairRect: zCrosshairRect.optional(),\n stackCornerRadius: zStackCornerRadius.optional(),\n theme: zTheme.optional(),\n barStyle: z.array(zBarStyle).or(zBarStyle).optional(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).optional(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).optional(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).optional(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).optional(),\n locale: zLocale.optional(),\n})\n","import { z } from 'zod'\nimport type { Locale } from '../../i18n'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXLinearAxis,\n zYBandAxis,\n} from '../../properties'\nimport type {\n AnnotationArea,\n AnnotationHorizontalLine,\n AnnotationPoint,\n AnnotationVerticalLine,\n BackgroundColor,\n BarStyle,\n Color,\n CrosshairRect,\n Dataset,\n Dimensions,\n Label,\n Legend,\n StackCornerRadius,\n Theme,\n Tooltip,\n XLinearAxis,\n YBandAxis,\n MeasureTree,\n SortAxis,\n SortLegend,\n} from '../../properties'\n\n/**\n * 并列条形图类型定义\n * @description 并列条形图,适用于多指标横向并行对比场景,多个条形平行排列展示不同指标值\n * 适用场景:\n * - 类别名称较长时的多指标对比\n * - 排名与数值同时展示的横向比较\n * - 多维度数据的并列分析\n * 数据要求:\n * - 至少1个指标字段(度量)\n * - 第一个维度会放至Y轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * - 所有指标会自动合并为一个指标\n * 默认开启的功能:\n * - 默认开启图例、坐标轴、数据标签、提示信息\n */\nexport interface BarParallel {\n /**\n * 并列条形图\n * @description 并列条形图,适用于多指标横向并行对比场景\n * @type {'barParallel'}\n * @example 'barParallel'\n */\n chartType: 'barParallel'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 并列条形图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{category:'A', value1:100, value2:200}, {category:'B', value1:150, value2:250}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 第一个维度被映射到Y轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * @type {Dimensions}\n * @example [{id: 'category', alias: '类别'}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 并列条形图指标会自动合并为一个指标, 映射到X轴, 存在多个指标时, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {DimensionTree}\n * @example [{id: 'value1', alias: '指标1'}, {id: 'value2', alias: '指标2'}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * x轴\n * @description 数值轴, x轴配置, 用于定义图表的x轴, 包括x轴的位置, 格式, 样式等.\n */\n xAxis?: XLinearAxis\n\n /**\n * y轴\n * @description 类目轴, y轴配置, 用于定义图表的y轴, 包括y轴的位置, 格式, 样式等.\n */\n yAxis?: YBandAxis\n\n /**\n * 水平提示框\n * @description 水平提示框配置, 用于定义图表的水平提示框, 包括水平提示框的颜色、标签样式等.\n */\n crosshairRect?: CrosshairRect\n\n /**\n * 条形图 堆叠圆角\n * @description 条形图 堆叠圆角\n * @default 8\n */\n stackCornerRadius?: StackCornerRadius\n\n /**\n * @description Y轴排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortAxis: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortAxis: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortAxis?: SortAxis\n /**\n * @description 图例排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortLegend: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortLegend: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortLegend?: SortLegend\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 矩形图元样式\n * @description 条形图样式配置, 用于定义图表的条形图样式, 包括条形图的颜色, 边框, 圆角等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n barStyle?: BarStyle | BarStyle[]\n\n /**\n * 标注点\n * @description 标注点配置, 根据选择的数据, 定义图表的标注点, 包括标注点的位置, 格式, 样式等.\n */\n annotationPoint?: AnnotationPoint | AnnotationPoint[]\n\n /**\n * 标注垂直线\n * @description 标注垂直线配置, 根据选择的数据, 定义图表的标注垂直线, 包括标注垂直线的位置, 样式等.\n */\n annotationVerticalLine?: AnnotationVerticalLine | AnnotationVerticalLine[]\n\n /**\n * 标注水平线\n * @description 标注水平线配置, 根据选择的数据, 定义图表的标注水平线, 包括标注水平线的位置, 样式等.\n */\n annotationHorizontalLine?: AnnotationHorizontalLine | AnnotationHorizontalLine[]\n\n /**\n * 标注区域\n * @description 标注区域配置, 根据选择的数据, 定义图表的标注区域, 包括标注区域的位置, 样式等.\n */\n annotationArea?: AnnotationArea | AnnotationArea[]\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zBarParallel = z.object({\n chartType: z.literal('barParallel'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n xAxis: zXLinearAxis.optional(),\n yAxis: zYBandAxis.optional(),\n crosshairRect: zCrosshairRect.optional(),\n stackCornerRadius: zStackCornerRadius.optional(),\n theme: zTheme.optional(),\n barStyle: z.array(zBarStyle).or(zBarStyle).optional(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).optional(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).optional(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).optional(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).optional(),\n locale: zLocale.optional(),\n})\n","import { z } from 'zod'\nimport type { Locale } from '../../i18n'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zBarStyle,\n zColor,\n zCrosshairRect,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zStackCornerRadius,\n zTheme,\n zTooltip,\n zXLinearAxis,\n zYBandAxis,\n} from '../../properties'\nimport type {\n AnnotationArea,\n AnnotationHorizontalLine,\n AnnotationPoint,\n AnnotationVerticalLine,\n BackgroundColor,\n BarStyle,\n Color,\n CrosshairRect,\n Dataset,\n Dimensions,\n Label,\n Legend,\n StackCornerRadius,\n Theme,\n Tooltip,\n XLinearAxis,\n YBandAxis,\n MeasureTree,\n SortAxis,\n SortLegend,\n} from '../../properties'\n\n/**\n * 百分比条形图类型定义\n * @description 百分比条形图,适用于横向展示各类别占比关系的场景,X轴以百分比形式展示数据占比\n * 适用场景:\n * - 类别名称较长时的占比对比\n * - 多维度数据的横向构成分析\n * - 排名与占比同时展示的场景\n * 数据要求:\n * - 至少1个维度字段和1个度量字段\n * - 所有类别占比之和为100%\n * - 支持多系列堆叠展示占比关系\n * 默认开启的功能:\n * - 默认开启图例、坐标轴、百分比标签、提示信息、占比计算\n */\nexport interface BarPercent {\n /**\n * 百分比条形图\n * @description 百分比条形图,以横向百分比形式展示各类别数据占比关系\n * @type {'barPercent'}\n * @example 'barPercent'\n */\n chartType: 'barPercent'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 百分比条形图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{category:'A', value:30}, {category:'B', value:70}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 第一个维度会放至Y轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * @type {Dimensions}\n * @example [{id: 'category', alias: '类别'}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 指标会自动合并为一个指标, 映射到X轴, 存在多个指标时, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {DimensionTree}\n * @example [{id: 'value', alias: '数值占比', format: 'percent'}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * x轴\n * @description 数值轴, x轴配置, 用于定义图表的x轴, 包括x轴的位置, 格式, 样式等.\n */\n xAxis?: XLinearAxis\n\n /**\n * y轴\n * @description 类目轴, y轴配置, 用于定义图表的y轴, 包括y轴的位置, 格式, 样式等.\n */\n yAxis?: YBandAxis\n\n /**\n * 水平提示框\n * @description 水平提示框配置, 用于定义图表的水平提示框, 包括水平提示框的颜色、标签样式等.\n */\n crosshairRect?: CrosshairRect\n\n /**\n * 条形图 堆叠圆角\n * @description 条形图 堆叠圆角\n * @default 8\n */\n stackCornerRadius?: StackCornerRadius\n\n /**\n * @description Y轴排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortAxis: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortAxis: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortAxis?: SortAxis\n /**\n * @description 图例排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortLegend: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortLegend: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortLegend?: SortLegend\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 矩形图元样式\n * @description 条形图样式配置, 用于定义图表的条形图样式, 包括条形图的颜色, 边框, 圆角等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n barStyle?: BarStyle | BarStyle[]\n\n /**\n * 标注点\n * @description 标注点配置, 根据选择的数据, 定义图表的标注点, 包括标注点的位置, 格式, 样式等.\n */\n annotationPoint?: AnnotationPoint | AnnotationPoint[]\n\n /**\n * 标注垂直线\n * @description 标注垂直线配置, 根据选择的数据, 定义图表的标注垂直线, 包括标注垂直线的位置, 样式等.\n */\n annotationVerticalLine?: AnnotationVerticalLine | AnnotationVerticalLine[]\n\n /**\n * 标注水平线\n * @description 标注水平线配置, 根据选择的数据, 定义图表的标注水平线, 包括标注水平线的位置, 样式等.\n */\n annotationHorizontalLine?: AnnotationHorizontalLine | AnnotationHorizontalLine[]\n\n /**\n * 标注区域\n * @description 标注区域配置, 根据选择的数据, 定义图表的标注区域, 包括标注区域的位置, 样式等.\n */\n annotationArea?: AnnotationArea | AnnotationArea[]\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zBarPercent = z.object({\n chartType: z.literal('barPercent'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n xAxis: zXLinearAxis.optional(),\n yAxis: zYBandAxis.optional(),\n crosshairRect: zCrosshairRect.optional(),\n stackCornerRadius: zStackCornerRadius.optional(),\n theme: zTheme.optional(),\n barStyle: z.array(zBarStyle).or(zBarStyle).optional(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).optional(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).optional(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).optional(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).optional(),\n locale: zLocale.optional(),\n})\n","import type { Locale } from '../../i18n'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zAreaStyle,\n zBackgroundColor,\n zColor,\n zCrosshairLine,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zLineStyle,\n zMeasureTree,\n zPointStyle,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\nimport type {\n AnnotationArea,\n AnnotationHorizontalLine,\n AnnotationPoint,\n AnnotationVerticalLine,\n AreaStyle,\n BackgroundColor,\n Color,\n Dataset,\n Dimensions,\n Label,\n Legend,\n LineStyle,\n PointStyle,\n Theme,\n Tooltip,\n XBandAxis,\n YLinearAxis,\n CrosshairLine,\n MeasureTree,\n SortAxis,\n SortLegend,\n} from '../../properties'\nimport { z } from 'zod'\n\n/**\n * 面积图类型定义\n * @description 面积图, 适用于展示数据随时间变化的趋势及累积关系, 通过填充区域增强数据对比. X轴为类目轴(分类数据), Y轴为数值轴(连续数据).\n * 适用场景:\n * - 展示单一数据系列的趋势变化\n * - 强调总量随时间的累积效果\n * - 对比多个数据系列的总量差异\n * 数据要求:\n * - 至少1个指标字段(度量)\n * - 第一个维度字段映射到X轴,其余维度字段会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * - 所有指标会自动合并为一个指标\n * 默认开启的功能:\n * - 模块开启堆叠\n * - 默认开启图例、坐标轴、区域填充、数据标签、提示信息\n */\nexport interface Area {\n /**\n * 面积图\n * @description 面积图,展示数据趋势及累积关系的图表类型\n * @type {'area'}\n * @example 'area'\n */\n chartType: 'area'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 面积图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{month:'1月', value:100}, {month:'2月', value:150}, {month:'3月', value:120}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 第一个维度被映射到X轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * @type {Dimensions}\n * @example [{ id: 'month', alias: '月份' }, { id: 'year', alias: '年份' }]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 面积图的指标会自动合并为一个指标, 映射到Y轴, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {DimensionTree}\n * @example [{id: 'value', alias: '数值'}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * x轴\n * @description 类目轴, x轴配置, 用于定义图表的x轴, 包括x轴的位置, 格式, 样式等.\n */\n xAxis?: XBandAxis\n\n /**\n * y轴\n * @description 数值轴, y轴配置, 用于定义图表的y轴, 包括y轴的位置, 格式, 样式等.\n */\n yAxis?: YLinearAxis\n\n /**\n * 垂直提示线\n * @description 鼠标移动到图表上时, 显示的垂直提示线\n */\n crosshairLine?: CrosshairLine\n\n /**\n * @description X轴排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortAxis: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortAxis: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortAxis?: SortAxis\n /**\n * @description 图例排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortLegend: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortLegend: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortLegend?: SortLegend\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 点图元样式\n * @description 点图元样式配置, 用于定义图表的点图元样式, 包括点图元的颜色, 边框等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n pointStyle?: PointStyle | PointStyle[]\n\n /**\n * 线图元样式\n * @description 线图元样式配置, 用于定义图表的线图元样式, 包括线图元的颜色, 透明度, 曲线等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n lineStyle?: LineStyle | LineStyle[]\n\n /**\n * 面积图元样式\n * @description 面积图元样式配置, 用于定义图表的面积图元样式, 包括面积图元的颜色, 透明度, 边框等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n areaStyle?: AreaStyle | AreaStyle[]\n\n /**\n * 标注点\n * @description 标注点配置, 根据选择的数据, 定义图表的标注点, 包括标注点的位置, 格式, 样式等.\n */\n annotationPoint?: AnnotationPoint | AnnotationPoint[]\n\n /**\n * 标注垂直线\n * @description 标注垂直线配置, 根据选择的数据, 定义图表的标注垂直线, 包括标注垂直线的位置, 样式等.\n */\n annotationVerticalLine?: AnnotationVerticalLine | AnnotationVerticalLine[]\n\n /**\n * 标注水平线\n * @description 标注水平线配置, 根据选择的数据, 定义图表的标注水平线, 包括标注水平线的位置, 样式等.\n */\n annotationHorizontalLine?: AnnotationHorizontalLine | AnnotationHorizontalLine[]\n\n /**\n * 标注区域\n * @description 标注区域配置, 根据选择的数据, 定义图表的标注区域, 包括标注区域的位置, 样式等.\n */\n annotationArea?: AnnotationArea | AnnotationArea[]\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zArea = z.object({\n chartType: z.literal('area'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n xAxis: zXBandAxis.optional(),\n yAxis: zYLinearAxis.optional(),\n crosshairLine: zCrosshairLine.optional(),\n theme: zTheme.optional(),\n pointStyle: z.array(zPointStyle).or(zPointStyle).optional(),\n lineStyle: z.array(zLineStyle).or(zLineStyle).optional(),\n areaStyle: z.array(zAreaStyle).or(zAreaStyle).optional(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).optional(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).optional(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).optional(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).optional(),\n locale: zLocale.optional(),\n})\n","import type { Locale } from '../../i18n'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zAreaStyle,\n zBackgroundColor,\n zColor,\n zCrosshairLine,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zLineStyle,\n zMeasureTree,\n zPointStyle,\n zTheme,\n zTooltip,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\nimport type {\n AnnotationArea,\n AnnotationHorizontalLine,\n AnnotationPoint,\n AnnotationVerticalLine,\n AreaStyle,\n BackgroundColor,\n Color,\n Dataset,\n Dimensions,\n Label,\n Legend,\n LineStyle,\n PointStyle,\n Theme,\n Tooltip,\n XBandAxis,\n YLinearAxis,\n CrosshairLine,\n MeasureTree,\n SortAxis,\n SortLegend,\n} from '../../properties'\nimport { z } from 'zod'\n\n/**\n * 百分比面积图类型定义\n * @description 百分比面积图,适用于展示多类别占比随时间变化的趋势,Y轴以百分比形式展示占比关系\n * 适用场景:\n * - 时间序列的构成变化分析\n * - 多类别占比趋势对比\n * - 累积占比与单一类别占比同时展示\n * 数据要求:\n * - 至少1个指标字段(度量)\n * - 第一个维度会放至Y轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * - 所有指标会自动合并为一个指标\n * 默认开启的功能:\n * - 默认开启图例、坐标轴、百分比标签、提示信息、占比计算\n */\nexport interface AreaPercent {\n /**\n * 百分比面积图\n * @description 百分比面积图,以百分比形式展示多类别占比随某个维度的变化\n * @type {'areaPercent'}\n * @example 'areaPercent'\n */\n chartType: 'areaPercent'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 百分比面积图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{month:'1月', category:'A', value:30}, {month:'1月', category:'B', value:70}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 第一个维度被映射到X轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * @type {Dimensions}\n * @example [{ id: 'month', alias: '月份' }, { id: 'year', alias: '年份' }]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 百分比面积图的指标会自动合并为一个指标, 映射到Y轴, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {DimensionTree}\n * @example [{id: 'value', alias: '数值占比', format: 'percent'}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * x轴\n * @description 类目轴, x轴配置, 用于定义图表的x轴, 包括x轴的位置, 格式, 样式等.\n */\n xAxis?: XBandAxis\n\n /**\n * y轴\n * @description 数值轴, y轴配置, 用于定义图表的y轴, 包括y轴的位置, 格式, 样式等.\n */\n yAxis?: YLinearAxis\n\n /**\n * 垂直提示线\n * @description 鼠标移动到图表上时, 显示的垂直提示线\n */\n crosshairLine?: CrosshairLine\n\n /**\n * @description X轴排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortAxis: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortAxis: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortAxis?: SortAxis\n /**\n * @description 图例排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortLegend: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortLegend: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortLegend?: SortLegend\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 点图元样式\n * @description 点图元样式配置, 用于定义图表的点图元样式, 包括点图元的颜色, 边框等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n pointStyle?: PointStyle | PointStyle[]\n\n /**\n * 线图元样式\n * @description 线图元样式配置, 用于定义图表的线图元样式, 包括线图元的颜色, 透明度, 曲线等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n lineStyle?: LineStyle | LineStyle[]\n\n /**\n * 面积图元样式\n * @description 面积图元样式配置, 用于定义图表的面积图元样式, 包括面积图元的颜色, 透明度, 边框等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n areaStyle?: AreaStyle | AreaStyle[]\n\n /**\n * 标注点\n * @description 标注点配置, 根据选择的数据, 定义图表的标注点, 包括标注点的位置, 格式, 样式等.\n */\n annotationPoint?: AnnotationPoint | AnnotationPoint[]\n\n /**\n * 标注垂直线\n * @description 标注垂直线配置, 根据选择的数据, 定义图表的标注垂直线, 包括标注垂直线的位置, 样式等.\n */\n annotationVerticalLine?: AnnotationVerticalLine | AnnotationVerticalLine[]\n\n /**\n * 标注水平线\n * @description 标注水平线配置, 根据选择的数据, 定义图表的标注水平线, 包括标注水平线的位置, 样式等.\n */\n annotationHorizontalLine?: AnnotationHorizontalLine | AnnotationHorizontalLine[]\n\n /**\n * 标注区域\n * @description 标注区域配置, 根据选择的数据, 定义图表的标注区域, 包括标注区域的位置, 样式等.\n */\n annotationArea?: AnnotationArea | AnnotationArea[]\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zAreaPercent = z.object({\n chartType: z.literal('areaPercent'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n xAxis: zXBandAxis.optional(),\n yAxis: zYLinearAxis.optional(),\n crosshairLine: zCrosshairLine.optional(),\n theme: zTheme.optional(),\n pointStyle: z.array(zPointStyle).or(zPointStyle).optional(),\n lineStyle: z.array(zLineStyle).or(zLineStyle).optional(),\n areaStyle: z.array(zAreaStyle).or(zAreaStyle).optional(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).optional(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).optional(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).optional(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).optional(),\n locale: zLocale.optional(),\n})\n","import type { Locale } from '../../i18n'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zAreaStyle,\n zBackgroundColor,\n zCrosshairLine,\n zDataset,\n zDimensions,\n zLabel,\n zLineStyle,\n zMeasureTree,\n zPointStyle,\n zTheme,\n zXBandAxis,\n zYLinearAxis,\n} from '../../properties'\nimport type {\n AnnotationArea,\n AnnotationHorizontalLine,\n AnnotationPoint,\n AnnotationVerticalLine,\n AreaStyle,\n BackgroundColor,\n Dataset,\n Dimensions,\n Label,\n LineStyle,\n PointStyle,\n Theme,\n XBandAxis,\n YLinearAxis,\n CrosshairLine,\n SortAxis,\n MeasureTree,\n} from '../../properties'\nimport { z } from 'zod'\n\n/**\n * 区间面积图类型定义\n * @description 区间面积图与面积图的区别在于, 区间面积图的Y轴数据是一个区间, 而面积图的Y轴数据是一个数值. 区间面积图适用于展示数据的变化范围\n * 适用场景:\n * - 展示单一数据系列的趋势变化\n * - 强调总量随时间的累积效果\n * - 对比多个数据系列的总量差异\n * 数据要求:\n * - 至少1个指标字段(度量)\n * - 第一个维度字段映射到X轴,其余维度字段会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * - 所有指标会自动合并为一个指标\n * 默认开启的功能:\n * - 模块开启堆叠\n * - 默认开启图例、坐标轴、区域填充、数据标签、提示信息\n */\nexport interface AreaRange {\n /**\n * 面积图\n * @description 面积图,展示数据趋势及累积关系的图表类型\n * @type {'area'}\n * @example 'area'\n */\n chartType: 'areaRange'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 面积图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{month:'1月', value:100}, {month:'2月', value:150}, {month:'3月', value:120}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 第一个维度被映射到X轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * @type {Dimensions}\n * @example [{ id: 'month', alias: '月份' }, { id: 'year', alias: '年份' }]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 区间面积图需要2个指标, 第一个指标映射到Y轴的下边界, 第二个指标映射到Y轴的上边界, 第二个之后的指标会被忽略.\n * @type {DimensionTree}\n * @example [{id: 'value', alias: '数值'}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * x轴\n * @description 类目轴, x轴配置, 用于定义图表的x轴, 包括x轴的位置, 格式, 样式等.\n */\n xAxis?: XBandAxis\n\n /**\n * y轴\n * @description 数值轴, y轴配置, 用于定义图表的y轴, 包括y轴的位置, 格式, 样式等.\n */\n yAxis?: YLinearAxis\n\n /**\n * 垂直提示线\n * @description 鼠标移动到图表上时, 显示的垂直提示线\n */\n crosshairLine?: CrosshairLine\n\n /**\n * @description X轴排序配置, 支持根据维度或指标排序, 以及自定义排序顺序\n * @example\n * sortAxis: {\n * orderBy: 'profit',\n * order: 'asc',\n * }\n * sortAxis: {\n * customOrder:['2019', '2020', '2021']\n * }\n */\n sortAxis?: SortAxis\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 点图元样式\n * @description 点图元样式配置, 用于定义图表的点图元样式, 包括点图元的颜色, 边框等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n pointStyle?: PointStyle | PointStyle[]\n\n /**\n * 线图元样式\n * @description 线图元样式配置, 用于定义图表的线图元样式, 包括线图元的颜色, 透明度, 曲线等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n lineStyle?: LineStyle | LineStyle[]\n\n /**\n * 面积图元样式\n * @description 面积图元样式配置, 用于定义图表的面积图元样式, 包括面积图元的颜色, 透明度, 边框等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n areaStyle?: AreaStyle | AreaStyle[]\n\n /**\n * 标注点\n * @description 标注点配置, 根据选择的数据, 定义图表的标注点, 包括标注点的位置, 格式, 样式等.\n */\n annotationPoint?: AnnotationPoint | AnnotationPoint[]\n\n /**\n * 标注垂直线\n * @description 标注垂直线配置, 根据选择的数据, 定义图表的标注垂直线, 包括标注垂直线的位置, 样式等.\n */\n annotationVerticalLine?: AnnotationVerticalLine | AnnotationVerticalLine[]\n\n /**\n * 标注水平线\n * @description 标注水平线配置, 根据选择的数据, 定义图表的标注水平线, 包括标注水平线的位置, 样式等.\n */\n annotationHorizontalLine?: AnnotationHorizontalLine | AnnotationHorizontalLine[]\n\n /**\n * 标注区域\n * @description 标注区域配置, 根据选择的数据, 定义图表的标注区域, 包括标注区域的位置, 样式等.\n */\n annotationArea?: AnnotationArea | AnnotationArea[]\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zAreaRange = z.object({\n chartType: z.literal('areaRange'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n label: zLabel.optional(),\n xAxis: zXBandAxis.optional(),\n yAxis: zYLinearAxis.optional(),\n crosshairLine: zCrosshairLine.optional(),\n theme: zTheme.optional(),\n pointStyle: z.array(zPointStyle).or(zPointStyle).optional(),\n lineStyle: z.array(zLineStyle).or(zLineStyle).optional(),\n areaStyle: z.array(zAreaStyle).or(zAreaStyle).optional(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).optional(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).optional(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).optional(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).optional(),\n locale: zLocale.optional(),\n})\n","import type { Locale } from '../../i18n'\nimport { zLocale } from '../../i18n'\nimport {\n zAnnotationArea,\n zAnnotationHorizontalLine,\n zAnnotationPoint,\n zAnnotationVerticalLine,\n zBackgroundColor,\n zColor,\n zCrosshairLine,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zPointStyle,\n zTheme,\n zTooltip,\n zXLinearAxis,\n zYLinearAxis,\n} from '../../properties'\nimport type {\n AnnotationArea,\n AnnotationHorizontalLine,\n AnnotationPoint,\n AnnotationVerticalLine,\n BackgroundColor,\n Color,\n Dataset,\n Dimensions,\n Label,\n Legend,\n PointStyle,\n Theme,\n Tooltip,\n CrosshairLine,\n YLinearAxis,\n XLinearAxis,\n MeasureTree,\n} from '../../properties'\nimport { z } from 'zod'\n\n/**\n * 散点图类型定义\n * @description 散点图,适用于展示数据的分布情况,通过点的位置表示数据的数值\n * 适用场景:\n * - 分析数据的分布特征, 如数据的中心趋势, 分布范围, 异常值等\n * 数据要求:\n * - 至少2个数值字段(度量)\n * - 第一个指标字段会放至X轴, 其余指标会进行合并, 映射至Y轴\n * - 指标名称和维度名称会合并, 作为图例项展示\n * 默认开启的功能:\n * - 默认开启图例、坐标轴、数据点标记、提示信息、趋势线\n */\nexport interface Scatter {\n /**\n * 散点图\n * @description 散点图,适用于展示数据的分布情况,通过点的位置表示数据的数值\n * @type {'scatter'}\n * @example 'scatter'\n */\n chartType: 'scatter'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 折线图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{month:'1月', value:100}, {month:'2月', value:150}, {month:'3月', value:120}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 散点图的第一个维度被映射到X轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示\n * @type {Dimensions}\n * @example [{id: \"month\", alias: \"月份\"}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 散点图的第一个指标字段会放至X轴, 其余指标会进行合并, 映射至Y轴\n * @type {DimensionTree}\n * @example [{id: \"value\", alias: \"数值\"}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * x轴\n * @description 数值轴, x轴配置, 用于定义图表的x轴, 包括x轴的位置, 格式, 样式等.\n */\n xAxis?: XLinearAxis\n\n /**\n * y轴\n * @description 数值轴, y轴配置, 用于定义图表的y轴, 包括y轴的位置, 格式, 样式等.\n */\n yAxis?: YLinearAxis\n\n /**\n * 垂直提示线\n * @description 鼠标移动到图表上时, 显示的垂直提示线\n */\n crosshairLine?: CrosshairLine\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 点图元样式\n * @description 点图元样式配置, 用于定义图表的点图元样式, 包括点图元的颜色, 边框等.\n * 支持全局样式或条件样式配置\n * 数据筛选器\n * 若配置selector, 提供数值 selector, 局部数据 selector, 条件维度 selector, 条件指标 selector 共四类数据匹配能力\n * 若未配置selector, 则样式全局生效.\n */\n pointStyle?: PointStyle | PointStyle[]\n\n /**\n * 标注点\n * @description 标注点配置, 根据选择的数据, 定义图表的标注点, 包括标注点的位置, 格式, 样式等.\n */\n annotationPoint?: AnnotationPoint | AnnotationPoint[]\n\n /**\n * 标注垂直线\n * @description 标注垂直线配置, 根据选择的数据, 定义图表的标注垂直线, 包括标注垂直线的位置, 样式等.\n */\n annotationVerticalLine?: AnnotationVerticalLine | AnnotationVerticalLine[]\n\n /**\n * 标注水平线\n * @description 标注水平线配置, 根据选择的数据, 定义图表的标注水平线, 包括标注水平线的位置, 样式等.\n */\n annotationHorizontalLine?: AnnotationHorizontalLine | AnnotationHorizontalLine[]\n\n /**\n * 标注区域\n * @description 标注区域配置, 根据选择的数据, 定义图表的标注区域, 包括标注区域的位置, 样式等.\n */\n annotationArea?: AnnotationArea | AnnotationArea[]\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zScatter = z.object({\n chartType: z.literal('scatter'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n xAxis: zXLinearAxis.optional(),\n yAxis: zYLinearAxis.optional(),\n crosshairLine: zCrosshairLine.optional(),\n theme: zTheme.optional(),\n pointStyle: z.array(zPointStyle).or(zPointStyle).optional(),\n annotationPoint: z.array(zAnnotationPoint).or(zAnnotationPoint).optional(),\n annotationVerticalLine: z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).optional(),\n annotationHorizontalLine: z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).optional(),\n annotationArea: z.array(zAnnotationArea).or(zAnnotationArea).optional(),\n locale: zLocale.optional(),\n})\n","import { z } from 'zod'\nimport { zLocale, type Locale } from '../../i18n'\nimport type {\n MeasureTree} from '../../properties';\nimport {\n zBackgroundColor,\n zColor,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zTheme,\n zTooltip,\n type BackgroundColor,\n type Color,\n type Dataset,\n type Dimensions,\n type Label,\n type Legend,\n type Theme,\n type Tooltip,\n} from '../../properties'\n\n/**\n * 堆叠玫瑰图类型定义\n * @description 堆叠玫瑰图,适用于多维度数据对比场景,通过极坐标系下的扇形弧度和半径展示数据大小\n * 适用场景:\n * - 多维度数据的分布对比\n * - 周期性数据的强弱比较\n * - 分类数据的数值与占比同时展示\n * 数据要求:\n * - 至少1个数值字段(度量)\n * - 第一个维度会放至角度轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示\n * - 所有指标会自动合并为一个指标\n * 默认开启的功能:\n * - 默认开启图例、极坐标系、数据标签、提示信息、数值缩放\n */\nexport interface Rose {\n /**\n * 堆叠玫瑰图\n * @description 堆叠玫瑰图,通过极坐标系展示多维度数据对比关系\n * @type {'rose'}\n * @example 'rose'\n */\n chartType: 'rose'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 玫瑰图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{month:'1月', value:100}, {month:'2月', value:150}, {month:'3月', value:120}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 玫瑰图的第一个维度被映射到角度轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * @type {Dimensions}\n * @example [{id: 'category', alias: '类别'}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 玫瑰图的指标会自动合并为一个指标, 映射到半径轴, 存在多个指标时, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {Measures}\n * @example [{id: 'value', alias: '数值'}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zRose = z.object({\n chartType: z.literal('rose'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n theme: zTheme.optional(),\n locale: zLocale.optional(),\n})\n","import { z } from 'zod'\nimport { zLocale, type Locale } from '../../i18n'\nimport type {\n MeasureTree} from '../../properties';\nimport {\n zBackgroundColor,\n zColor,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zTheme,\n zTooltip,\n type BackgroundColor,\n type Color,\n type Dataset,\n type Dimensions,\n type Label,\n type Legend,\n type Theme,\n type Tooltip,\n} from '../../properties'\n\n/**\n * 分组玫瑰图类型定义\n * @description 分组玫瑰图,适用于多维度数据对比场景,通过极坐标系下的扇形弧度和半径展示数据大小\n * 适用场景:\n * - 多维度数据的分布对比\n * - 周期性数据的强弱比较\n * - 分类数据的数值与占比同时展示\n * 数据要求:\n * - 至少1个数值字段(度量)\n * - 第一个维度会放至角度轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示\n * - 所有指标会自动合并为一个指标\n * 默认开启的功能:\n * - 默认开启图例、极坐标系、数据标签、提示信息、数值缩放\n */\nexport interface RoseParallel {\n /**\n * 分组玫瑰图\n * @description 分组玫瑰图,通过极坐标系展示多维度数据对比关系\n * @type {'roseParallel'}\n * @example 'roseParallel'\n */\n chartType: 'roseParallel'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 玫瑰图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{month:'1月', value:100}, {month:'2月', value:150}, {month:'3月', value:120}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 玫瑰图的第一个维度被映射到角度轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * @type {Dimensions}\n * @example [{id: 'category', alias: '类别'}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 玫瑰图的指标会自动合并为一个指标, 映射到半径轴, 存在多个指标时, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {MeasureTree}\n * @example [{id: 'value', alias: '数值'}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zRoseParallel = z.object({\n chartType: z.literal('roseParallel'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n theme: zTheme.optional(),\n locale: zLocale.optional(),\n})\n","import { z } from 'zod'\nimport type { Locale } from '../../i18n'\nimport { zLocale } from '../../i18n'\nimport {\n zBackgroundColor,\n zColor,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zTheme,\n zTooltip,\n} from '../../properties'\nimport type {\n BackgroundColor,\n Color,\n Dataset,\n Dimensions,\n Label,\n Legend,\n MeasureTree,\n Theme,\n Tooltip,\n} from '../../properties'\n\n/**\n * 饼图类型定义\n * @description 饼图,适用于展示单一维度数据的占比关系,通过扇形面积大小表示各类别占比\n * 适用场景:\n * - 展示分类数据的占比分布\n * - 强调数据的整体与部分关系\n * - 类别数量较少(建议不超过6个)的占比分析\n * 数据要求:\n * - 至少1个数值字段(度量)\n * - 所有维度会与指标名称(存在多个指标时)合并成一个维度, 作为图例项展示\n * - 所有指标会自动合并为一个指标\n * 默认开启的功能:\n * - 默认开启图例、数据标签、提示信息、占比计算\n */\nexport interface Pie {\n /**\n * 饼图\n * @description 饼图,展示单一维度数据的占比关系\n * @type {'pie'}\n * @example 'pie'\n */\n chartType: 'pie'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 饼图的数据最终会被转换为1个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{category:'A', value:30}, {category:'B', value:70}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 饼图的所有维度会与指标名称(存在多个指标时)合并成一个维度, 映射到角度, 并作为图例项展示\n * @type {Dimensions}\n * @example [{id: 'category', alias: '类别'}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 饼图的所有指标会自动合并为一个指标, 映射到半径轴, 存在多个指标时, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {DimensionTree}\n * @example [{id: 'value', alias: '数值占比', format: 'percent'}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zPie = z.object({\n chartType: z.literal('pie'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n theme: zTheme.optional(),\n locale: zLocale.optional(),\n})\n","import { z } from 'zod'\nimport { zLocale, type Locale } from '../../i18n'\nimport type {\n BackgroundColor,\n Color,\n Dataset,\n Dimensions,\n Label,\n Legend,\n MeasureTree,\n Theme,\n Tooltip,\n} from '../../properties'\nimport {\n zBackgroundColor,\n zColor,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zTheme,\n zTooltip,\n} from '../../properties'\n/**\n * 环形图类型定义\n * @description 环形图,适用于展示单一维度数据的占比关系,中心留有空白区域可展示汇总信息\n * 适用场景:\n * - 需要同时展示整体数据和各部分占比\n * - 强调数据的整体与部分关系\n * - 中心区域需要展示关键指标或标题\n * 数据要求:\n * - 至少1个指标字段(度量)\n * - 所有维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * - 所有指标会自动合并为一个指标\n * 默认开启的功能:\n * - 默认开启图例、数据标签、提示信息、占比计算、中心文本\n */\nexport interface Donut {\n /**\n * 环形图\n * @description 环形图,中心留有空白区域的饼图变体\n * @type {'donut'}\n * @example 'donut'\n */\n chartType: 'donut'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 环形图的数据最终会被转换为1个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{category:'A', value:30}, {category:'B', value:70}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 环形图的所有维度会与指标名称(存在多个指标时)合并成1个维度, 映射到饼图的角度, 并作为图例项展示.\n * @type {Dimensions}\n * @example [{id: 'category', alias: '类别'}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 环形图的所有指标会自动合并为一个指标, 映射到饼图的半径, 存在多个指标时, 指标名称会与其余维度合并, 并作为图例项展示.\n * @type {DimensionTree}\n * @example [{id: 'value', alias: '数值占比', format: 'percent'}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zDonut = z.object({\n chartType: z.literal('donut'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n theme: zTheme.optional(),\n locale: zLocale.optional(),\n})\n","import { z } from 'zod'\nimport { zLocale, type Locale } from '../../i18n'\nimport type {\n MeasureTree} from '../../properties';\nimport {\n zBackgroundColor,\n zColor,\n zDataset,\n zDimensions,\n zLabel,\n zLegend,\n zMeasureTree,\n zTheme,\n zTooltip,\n type BackgroundColor,\n type Color,\n type Dataset,\n type Dimensions,\n type Label,\n type Legend,\n type Theme,\n type Tooltip,\n} from '../../properties'\n\n/**\n * 雷达图类型定义\n * @description 雷达图,适用于多维度数据的对比分析,通过多轴坐标系展示各维度的数值分布\n * 适用场景:\n * - 多维度数据的综合表现对比\n * - 多个对象在多个指标上的性能评估\n * - 分类数据的多维度特征展示\n * 数据要求:\n * - 至少1个数值字段(度量)\n * - 第一个维度作为雷达图的各个维度轴,其他维度作为不同的系列进行对比\n * - 支持多个指标分别作为不同的系列展示\n * 默认开启的功能:\n * - 默认开启图例、雷达坐标系、数据标签、提示信息、数值缩放\n */\nexport interface Radar {\n /**\n * 雷达图\n * @description 雷达图,通过多轴坐标系展示多维度数据对比关系\n * @type {'radar'}\n * @example 'radar'\n */\n chartType: 'radar'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 玫瑰图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{month:'1月', value:100}, {month:'2月', value:150}, {month:'3月', value:120}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 雷达图的第一个维度被映射到角度轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * @type {Dimensions}\n * @example [{id: 'category', alias: '类别'}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 雷达图的指标会自动合并为一个指标, 映射到半径轴, 存在多个指标时, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {MeasureTree}\n * @example [{id: 'value', alias: '数值'}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: Color\n\n /**\n * 标签\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * 图例\n * @description 图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: Legend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zRadar = z.object({\n chartType: z.literal('radar'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zColor.optional(),\n label: zLabel.optional(),\n legend: zLegend.optional(),\n tooltip: zTooltip.optional(),\n theme: zTheme.optional(),\n locale: zLocale.optional(),\n})\n","import { z } from 'zod'\nimport type { Locale } from '../../i18n'\nimport { zLocale } from '../../i18n'\nimport {\n zBackgroundColor,\n zColorLegend,\n zDataset,\n zDimensions,\n zLabel,\n zLinearColor,\n zMeasureTree,\n zTheme,\n zTooltip,\n} from '../../properties'\nimport type {\n BackgroundColor,\n ColorLegend,\n Dataset,\n Dimensions,\n Label,\n LinearColor,\n MeasureTree,\n Theme,\n Tooltip,\n} from '../../properties'\n\n/**\n * 漏斗图\n * @description 漏斗图,用于展示单一维度数据的占比关系\n * 适用场景:\n * 漏斗图适用场景:\n * - 适合用来分析具有多个连续、规范化步骤的流程,并清晰地展示在每个环节的数据流失或转化情况\n * 数据要求:\n * - 至少1个数值字段(指标)\n * - 所有维度会与指标名称(存在多个指标时)合并成一个维度, 作为图例项展示\n * - 所有指标会自动合并为一个指标\n * 默认开启的功能:\n * - 默认开启图例、数据标签、提示信息、占比计算\n */\nexport interface Funnel {\n /**\n * 漏斗图\n * @description 漏斗图,展示单一维度数据的占比关系\n * @type {'funnel'}\n * @example 'funnel'\n */\n chartType: 'funnel'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 饼图的数据最终会被转换为1个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{category:'A', value:30}, {category:'B', value:70}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 漏斗图的所有维度会与指标名称(存在多个指标时)合并成一个维度,并作为图例项展示\n * @type {Dimensions}\n * @example [{id: 'category', alias: '类别'}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 漏斗图的所有指标会自动合并为一个指标, 存在多个指标时, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {DimensionTree}\n * @example [{id: 'value', alias: '数值占比', format: 'percent'}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * @description 线性渐变颜色配置, 用于定义图表的颜色方案\n */\n color?: LinearColor\n\n /**\n * @description 标签配置, 用于定义图表的数据标签, 包括数据标签的位置, 格式, 样式等.\n */\n label?: Label\n\n /**\n * @description 颜色图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: ColorLegend\n\n /**\n * 提示信息\n * @description 提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zFunnel = z.object({\n chartType: z.literal('funnel'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zLinearColor.optional(),\n label: zLabel.optional(),\n legend: zColorLegend.optional(),\n tooltip: zTooltip.optional(),\n theme: zTheme.optional(),\n locale: zLocale.optional(),\n})\n","import { z } from 'zod'\nimport { zLocale, type Locale } from '../../i18n'\nimport type {\n ColorLegend,\n LinearColor,\n MeasureTree} from '../../properties';\nimport {\n zBackgroundColor,\n zColorLegend,\n zDataset,\n zDimensions,\n zLabel,\n zLinearColor,\n zMeasureTree,\n zTheme,\n zTooltip,\n type BackgroundColor,\n type Dataset,\n type Dimensions,\n type Label,\n type Theme,\n type Tooltip,\n} from '../../properties'\n\n/**\n * 热力图类型定义\n * @description 热力图,通过二维矩阵的颜色深浅展示数据的分布和强弱关系\n * 适用场景:\n * - 大规模二维数据的密度和强度展示\n * - 分类与数值的关联分析\n * - 时间序列与类别的交叉对比\n * 数据要求:\n * - 至少2个维度字段,用于确定热力图的行和列\n * - 至少1个数值字段(度量),用于映射颜色深浅\n * - 支持多个指标时,通常选择一个指标进行颜色映射\n * 默认开启的功能:\n * - 默认开启图例、坐标轴、数据标签、提示信息、数值缩放\n */\nexport interface Heatmap {\n /**\n * 热力图\n * @description 热力图,通过二维矩阵的颜色深浅展示数据的分布和强弱关系\n * @type {'heatmap'}\n * @example 'heatmap'\n */\n chartType: 'heatmap'\n /**\n * 数据集\n * @description 符合TidyData规范的且已经聚合的数据集,用于定义图表的数据来源和结构, 用户输入的数据集并不需要进行任何处理, VSeed带有强大的数据重塑功能, 会自行进行数据重塑, 热力图的数据最终会被转换为2个维度, 1个指标.\n * @type {Array<Record<string|number, any>>}\n * @example [{month:'1月', value:100}, {month:'2月', value:150}, {month:'3月', value:120}]\n */\n dataset: Dataset\n\n /**\n * 维度\n * @description 热力图的第一个维度被映射到角度轴, 其余维度会与指标名称(存在多个指标时)合并, 作为图例项展示.\n * @type {Dimensions}\n * @example [{id: 'category', alias: '类别'}]\n */\n dimensions?: Dimensions\n\n /**\n * 指标\n * @description 热力图的指标会自动合并为一个指标, 映射到半径轴, 存在多个指标时, 指标名称会与其余维度合并, 作为图例项展示.\n * @type {MeasureTree}\n * @example [{id: 'value', alias: '数值'}]\n */\n measures?: MeasureTree\n\n /**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\n backgroundColor?: BackgroundColor\n\n /**\n * 颜色\n * @description 颜色配置, 用于定义图表的颜色方案, 包括颜色列表, 颜色映射, 颜色渐变等.\n */\n color?: LinearColor\n\n /**\n * @description 热力图标签配置, 用于定义图表的数据标签, 自动开启标签反色, 确保标签可读性.\n */\n label?: Label\n\n /**\n * 图例\n * @description 热力图的颜色图例配置, 用于定义图表的图例, 包括图例的位置, 格式, 样式等.\n */\n legend?: ColorLegend\n\n /**\n * 提示信息\n * @description 热力图的提示信息配置, 用于定义图表的提示信息, 包括提示信息的位置, 格式, 样式等.\n */\n tooltip?: Tooltip\n\n /**\n * 图表的主题, 主题是优先级较低的功能配置, 包含所有图表类型共用的通用配置, 与单类图表类型共用的图表配置\n * @default light 默认为亮色主题\n * @description 内置light与dark两种主题, 用户可以通过Builder自定义主题\n * @example 'dark'\n * @example 'light'\n * @example 'customThemeName'\n */\n theme?: Theme\n\n /**\n * 语言\n * @description 图表语言配置, 支持'zh-CN'与'en-US'两种语言, 另外可以调用 intl.setLocale('zh-CN') 方法设置语言\n * @default 'zh-CN'\n */\n locale?: Locale\n}\n\nexport const zHeatmap = z.object({\n chartType: z.literal('heatmap'),\n dataset: zDataset.optional(),\n dimensions: zDimensions.optional(),\n measures: zMeasureTree.optional(),\n backgroundColor: zBackgroundColor.optional(),\n color: zLinearColor.optional(),\n label: zLabel.optional(),\n legend: zColorLegend.optional(),\n tooltip: zTooltip.optional(),\n theme: zTheme.optional(),\n locale: zLocale.optional(),\n})\n","import { z } from 'zod'\n\nimport { zBar, type Bar } from './chartType/bar'\nimport { zBarParallel, type BarParallel } from './chartType/barParallel'\nimport { zColumn, type Column } from './chartType/column'\nimport { zColumnParallel, type ColumnParallel } from './chartType/columnParallel'\nimport { zColumnPercent, type ColumnPercent } from './chartType/columnPercent'\nimport { zLine, type Line } from './chartType/line'\nimport type { Table } from './chartType/table'\nimport { zRose, type Rose } from './chartType/rose'\nimport { zBarPercent, type BarPercent } from './chartType/barPercent'\nimport type { PivotTable } from './chartType/pivotTable'\nimport { zPie, type Pie } from './chartType/pie'\nimport { zDonut, type Donut } from './chartType/donut'\nimport type { DualAxis } from './chartType/dualAxis'\nimport { zArea, type Area } from './chartType/area'\nimport { zAreaPercent, type AreaPercent } from './chartType/areaPercent'\nimport type { AreaRange, Heatmap, Radar } from './chartType'\nimport {\n zAreaRange,\n zFunnel,\n zHeatmap,\n zPivotTable,\n zRadar,\n zRoseParallel,\n zScatter,\n zTable,\n type Funnel,\n type RoseParallel,\n type Scatter,\n} from './chartType'\n\nexport type VSeed =\n | Table\n | PivotTable\n // cartesian\n | Line\n | Column\n | ColumnParallel\n | ColumnPercent\n | Bar\n | BarParallel\n | BarPercent\n | Area\n | AreaPercent\n | AreaRange\n | Scatter\n | DualAxis\n\n // polar\n | Rose\n | RoseParallel\n | Pie\n | Donut\n | Radar\n\n // other\n | Funnel\n | Heatmap\n\nexport const zVSeed = z.discriminatedUnion('chartType', [\n zTable,\n zPivotTable,\n // cartesian\n zLine,\n zColumn,\n zColumnParallel,\n zColumnPercent,\n zBar,\n zBarParallel,\n zBarPercent,\n zArea,\n zAreaPercent,\n zAreaRange,\n zScatter,\n // zDualAxis,\n // polar\n zPie,\n zDonut,\n zRose,\n zRoseParallel,\n zRadar,\n // other\n zFunnel,\n zHeatmap,\n])\n","import { z } from 'zod'\nimport { zChartType } from './properties/chartType'\nimport { zDataset } from './properties/dataset'\nimport { zDimensionTree } from './properties/dimensions'\nimport { zMeasureTree } from './properties/measures'\nimport { zEncoding } from './properties/encoding/encoding'\nimport { zDatasetReshapeInfo } from './properties/datasetReshapeInfo/datasetReshapeInfo'\nimport { zTheme, zCustomThemeConfig } from './properties/theme'\nimport { zConfig } from './properties/config'\nimport { zAnalysis, zAnnotation, zMarkStyle } from './properties'\nimport { zLocale } from './i18n'\n\nexport const zAdvancedVSeed = z.object({\n chartType: zChartType,\n dataset: zDataset,\n datasetReshapeInfo: zDatasetReshapeInfo,\n dimensions: zDimensionTree,\n measures: zMeasureTree,\n encoding: zEncoding,\n config: zConfig,\n analysis: zAnalysis,\n theme: zTheme,\n markStyle: zMarkStyle,\n customTheme: zCustomThemeConfig,\n annotation: zAnnotation,\n locale: zLocale,\n})\n\nexport type AdvancedVSeed = z.infer<typeof zAdvancedVSeed>\n"],"names":["__webpack_require__","module","getter","definition","key","Object","obj","prop","Symbol","initAdvancedVSeed","advancedVSeed","context","vseed","chartType","locale","execPipeline","pipeline","initialValue","result","prev","cur","isTable","isPivotTable","isVTable","isVChart","isPivotChart","measures","dimensions","hasRowOrColumnDimension","dimension","hasMeasureGroup","measure","Intl","translateMap","value","segments","values","text","segment","index","translatedText","isNullish","console","intl","i18n","createNumFormatter","format","type","ratio","symbol","thousandSeparator","prefix","suffix","fractionDigits","significantDigits","roundingMode","roundingPriority","numFormatterOptions","isNumber","numFormatter","num","Number","typeSymbol","numStr","parts","autoNumFormatter","String","createFormatter","autoFormatter","preorderTraverse","tree","callback","stack","node","stop","children","i","child","findMeasureById","id","findFirstMeasure","findAllMeasures","findDimensionById","findFirstDimension","findAllDimensions","autoMeasures","dataset","Error","autoMeasureGroup","top100dataset","sample","item","undefined","newMeasures","currentGroup","createEmptyMeasureGroup","measureGroups","autoDimensions","dim","autoMeasuresBy2M1Group","auto2M1Group","allMeasures","groups","singleMeasures","group","FoldMeasureName","FoldMeasureValue","FoldMeasureId","UnfoldDimensionGroup","UnfoldDimensionGroupId","Separator","ORIGINAL_DATA","unfoldDimensions","unfoldStartIndex","unfoldGroupName","unfoldGroupId","foldMeasureId","dimensionsSeparator","dimensionsToBeUnfolded","unfoldInfo","colorItems","colorMap","datum","colorName","generateDimGroupName","colorId","unique","dimensionsToBeGrouped","foldMeasures","measureId","measureName","measureValue","foldInfo","Array","ids","d","j","omit","alias","emptyReshapeResult","dataReshapeFor2D1M","options","foldMeasureName","foldMeasureValue","unfoldDimensionGroup","unfoldDimensionGroupId","foldedDataset","finalDataset","onlyOneMeasure","onlyOneDimension","dims","dataReshapeFor1D1M","dataReshapeFor1D2M","dataReshapeFor1D","unfoldZeroDimensions","dataReshapeFor2D1M0Name","reshapeTo2D1M","newDatasets","reshapeTo2D1M0Name","reshapeTo1D1M","reshapeTo1D2M","reshapeTo1D","pivotReshapeTo2D1M","commonDimensions","datasetReshapeInfo","measureGroup","groupId","newSubDataset","reshapeInfo","pivotReshapeTo2D1M0Name","pivotReshapeTo1D1M","pivotReshapeTo1D2M","pivotReshapeTo1D","encodingXY","xDimension","isZeroDimension","encoding","x","y","color","encodingYX","yDimension","encodingYY","firstMeasure","encodingXYY","m1","m2","encodingRose","angleDimension","is1D1M","radius","angle","encodingPie","encodingAR","encodingFunnel","size","lineConfig","config","pick","columnConfig","pieConfig","areaConfig","areaPercentConfig","scatterConfig","barConfig","barParallelConfig","barPercentConfig","columnParallelConfig","columnPercentConfig","donutConfig","roseConfig","roseParallelConfig","funnelConfig","heatmapConfig","radarConfig","theme","customTheme","chartConfigTheme","chartConfig","mergedConfig","mergeDeep","clone","chartCustomTheme","pivotAdapter","pivotPipeline","usePivotChart","markStyle","annotation","sortXBandAxis","sortAxis","xField","axisOrderResult","calcOrder","sortYBandAxis","yField","sortLegend","groupField","colorIdMap","nameMap","pre","orderRes","itemNameOrId","order","orderBy","res","sort","a","b","aValue","bValue","lineAdvancedPipeline","barAdvancedPipeline","barParallelAdvancedPipeline","barPercentAdvancedPipeline","columnAdvancedPipeline","columnParallelAdvancedPipeline","columnPercentAdvancedPipeline","areaAdvancedPipeline","areaPercentAdvancedPipeline","areaRangeAdvancedPipeline","pieAdvancedPipeline","donutAdvancedPipeline","roseAdvancedPipeline","roseParallelAdvancedPipeline","funnelAdvancedPipeline","scatterAdvancedPipeline","encodingMatrix","heatmapAdvancedPipeline","radarAdvancedPipeline","autoPivotDimensions","newDimensions","autoPivotMeasures","records","pivotTableAdvancedPipeline","tableAdvancedPipeline","datasetYX","spec","analysis","orderMapping","fields","datasetXY","datasetPivot","progressive","initColumn","initBar","initBarParallel","initArea","initAreaRange","initAreaRangeLine1","initAreaRangeLine2","initLine","initColumnParallel","initPie","showStroke","initDonut","initRose","hasNegativeValue","initRoseParallel","initScatter","initRadar","initFunnel","initPivot","xBand","visible","label","tick","title","grid","line","labelAutoHide","labelAutoHideGap","labelAutoLimit","labelAutoLimitLength","labelAutoRotate","labelAutoRotateAngleRange","sampling","bandAxis","ANNOTATION_Z_INDEX","LINEAR_AXIS_INNER_OFFSET_TOP","xLinear","zero","nice","inverse","max","min","log","logBase","linearAxis","yBand","yLinear","radiusAxis","is0D","is1M1D","showAxis","angleAxis","radarAngleAxis","radarRadiusAxis","percent","stackInverse","stackCornerRadius","backgroundColor","baseConfig","tooltip","enable","groupName","autoFormat","isEmpty","formatter","formatValue","labelColorInversion","discreteLegend","legend","position","labelFontColor","labelFontSize","labelFontWeight","maxSize","border","shapeType","orient","legendPosition","items","pivotDiscreteLegend","colorScheme","legends","colorLegend","colorMapping","mappingList","idMap","_","v","linearColor","pivotIndicators","chartPipeline","indicators","newEncoding","newDatasetReshapeInfo","newContext","chartSpec","pivotIndicatorsAsRow","pivotIndicatorsAsCol","pivotGridStyle","transparent","hoverBackgroundColor","pivotColumnDimensions","columnDimensions","columns","pivotRowDimensions","rowDimensions","rows","selector","vchartDatum","vchartKeys","k","selectors","isValueSelector","isMeasureSelector","op","selectorValueArr","isDimensionSelector","isPartialDatumSelector","barStyle","barStyles","customMap","style","barBorderColor","barBorderStyle","barBorderWidth","barColor","barColorOpacity","barRadius","lineDash","pointStyle","pointStyles","pointBorderColor","pointBorderStyle","pointBorderWidth","pointColor","pointColorOpacity","pointSize","pointStateDimensionHover","point","pointStateHover","field","lineStyle","lineStyles","lineGroups","groupBy","lineColor","lineColorOpacity","lineSmooth","lineWidth","dashSegment","dashGap","curveType","lineData","areaStyle","areaStyles","areaColor","areaColorOpacity","isSubset","sub","annotationPoint","annotationPointList","markPoint","selectorPoint","textColor","textFontSize","textFontWeight","textAlign","textBaseline","backgroundBorderColor","backgroundBorderRadius","backgroundBorderWidth","backgroundPadding","backgroundVisible","offsetX","offsetY","selectedData","data","targetDatum","annotationVerticalLine","annotationVerticalLineList","positionMap","markLine","xValue","textPosition","lineVisible","generateOneMarkLine","isArray","isString","xValueArr","specMarkLine","newMarkLine","annotationHorizontalLine","yValue","yValueArr","annotationArea","annotationAreaList","markArea","outerPadding","areaBorderColor","areaBorderRadius","areaBorderWidth","positionData","xyList","yAxisHelper","xAxisHelper","yScale","minX","Math","maxX","minY","maxY","xScale","annotationAreaBand","depth","xBandWidth","yBandWidth","verticalCrosshairLine","labelColor","labelVisible","labelBackgroundColor","crosshair","verticalCrosshairRect","rectColor","horizontalCrosshairRect","horizontalCrosshairLine","series","args","pivotLine","lineSpecPipeline","column","pivotColumn","columnSpecPipeline","columnParallel","pivotColumnParallel","columnParallelSpecPipeline","columnPercent","pivotColumnPercent","columnPercentSpecPipeline","bar","pivotBar","barSpecPipeline","barParallel","pivotBarParallel","barParallelSpecPipeline","barPercent","pivotBarPercent","barPercentSpecPipeline","area","pivotArea","areaSpecPipeline","areaPercent","pivotAreaPercent","areaPercentSpecPipeline","areaRange","pivotAreaRange","areaRangeSpecPipeline","scatter","pivotScatter","scatterSpecPipeline","pie","pivotPie","pieSpecPipeline","donut","pivotDonut","donutSpecPipeline","rose","pivotRose","roseSpecPipeline","roseParallel","pivotRoseParallel","roseParallelSpecPipeline","radar","pivotRadar","radarSpecPipeline","funnel","pivotFunnel","funnelSpecPipeline","initHeatmap","heatmap","pivotHeatmap","heatmapSpecPipeline","initTable","initPivotTable","measureTreeToColumns","eachNode","treeTreeToColumns","dimensionTreeToColumns","groupNode","props","pivotColumns","pivotRows","bodyStyle","themConfig","borderColor","fontColor","fontSize","hoverCellBgColor","hoverInlineColor","headerStyle","rowHeaderStyle","cornerHeaderStyle","frameStyle","selectionStyle","tableSpecPipeline","pivotTableSpecPipeline","buildAdvanced","builder","start","performance","Date","e","end","buildSpec","build","getColorItems","getColorIdMap","Builder","advanced","customPipe","themeKey","registerColumn","registerBar","registerLine","registerArea","registerAreaPercent","registerAreaRange","registerBarPercent","registerColumnPercent","registerColumnParallel","registerBarParallel","registerPie","registerDonut","registerRose","registerRoseParallel","registerFunnel","registerScatter","registerTable","registerPivotTable","registerHeatmap","registerRadar","lightTheme","barBandAxis","crosshairLine","crosshairRect","tableConfig","darkTheme","registerCustomTheme","themeConfig","registerLightTheme","registerDarkTheme","registerAll","updateAdvanced","advancedPipe","updateSpec","specPipe","zChartType","z","zDatum","zDataset","zDimension","zDimensionGroup","zDimensions","zDimensionTree","zNumFormat","zMeasure","zMeasureGroup","zMeasures","zMeasureTree","zFoldInfo","zUnfoldInfo","zDatasetReshapeInfo","zEncoding","zXBandAxis","zYBandAxis","zXLinearAxis","zYLinearAxis","zCrosshairLine","zCrosshairRect","zStackCornerRadius","zBackgroundColor","zColor","zLinearColor","zLabel","zLegend","zColorLegend","zTooltip","zTableConfig","zPivotTableConfig","zLineConfig","zColumnConfig","zColumnParallelConfig","zColumnPercentConfig","zBarConfig","zBarParallelConfig","zBarPercentConfig","zAreaConfig","zAreaPercentConfig","zAreaRangeConfig","zDualAxisConfig","zScatterConfig","zRoseConfig","zRoseParallelConfig","zPieConfig","zDonutConfig","zRadarConfig","zFunnelConfig","zHeatmapConfig","zConfig","zAxis","zCustomThemeConfig","zCustomTheme","zTheme","zSelector","zSelectors","zBarStyle","zPointStyle","zLineStyle","zAreaStyle","zMarkStyle","zAnnotationPoint","zAnnotationVerticalLine","zAnnotationHorizontalLine","zAnnotationArea","zAnnotation","zSortAxis","zSortLegend","zAnalysis","zLocale","zTable","zPivotTable","zLine","zColumn","zColumnParallel","zColumnPercent","zBar","zBarParallel","zBarPercent","zArea","zAreaPercent","zAreaRange","zScatter","zRose","zRoseParallel","zPie","zDonut","zRadar","zFunnel","zHeatmap","zVSeed","zAdvancedVSeed"],"mappings":"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A8H,aAAa;QAACnE;KAAc,EAAE;QAACM;KAAmB;IAClDW;IACAuD;IACAO;IACA3B;IACAO;IACAW;IACAC;CACD;ACZM,MAAM8B,uBAAyC;IACpDxP;IACA4E;IACAY;IACA8H,aAAa;QAACjE;KAAmB,EAAE;QAACW;KAAwB;IAC5DI;IACAuD;IACAO;IACAlC;IACAc;IACAW;IACAC;CACD;ACZM,MAAM+B,8BAAgD;IAC3DzP;IACA4E;IACAY;IACA8H,aAAa;QAACjE;KAAmB,EAAE;QAACW;KAAwB;IAC5DI;IACAuD;IACAO;IACAjC;IACAa;IACAW;IACAC;CACD;ACbM,MAAMgC,4BAA8C;IACzD1P;IACA0F;IACAF;IACA8H,aAAa;QAAC9D;KAAY,EAAE;QAACW;KAAiB;IAC9CY;IACA4C;IACA3B;IACAc;IACAW;IACAC;CACD;ACbM,MAAMiC,sBAAwC;IACnD3P;IACA4E;IACAY;IACA8H,aAAa;QAAChE;KAAc,EAAE;QAACW;KAAmB;IAClDsB;IACAQ;IACAe;IACAY;CACD;ACTM,MAAMkC,wBAA0C;IACrD5P;IACA4E;IACAY;IACA8H,aAAa;QAAChE;KAAc,EAAE;QAACW;KAAmB;IAClDsB;IACAiB;IACAM;IACAY;CACD;ACRM,MAAMmC,uBAAyC;IACpD7P;IACA4E;IACAY;IACA8H,aAAa;QAACnE;KAAc,EAAE;QAACM;KAAmB;IAClDyB;IACAuB;IACAK;IACAW;IACAC;CACD;ACVM,MAAMoC,+BAAiD;IAC5D9P;IACA4E;IACAY;IACA8H,aAAa;QAACnE;KAAc,EAAE;QAACM;KAAmB;IAClDyB;IACAwB;IACAI;IACAW;IACAC;CACD;ACXM,MAAMqC,yBAA2C;IACtD/P;IACA4E;IACAY;IACA8H,aAAa;QAAChE;KAAc,EAAE;QAACW;KAAmB;IAClDwB;IACAkB;IACAG;IACAY;CACD;ACRM,MAAMsC,0BAA4C;IACvDhQ;IACA4E;IACAY;IACA8H,aAAa;QAAC/D;KAAc,EAAE;QAACW;KAAmB;IAClDW;IACAqB;IACAY;IACAW;IACAC;CACD;ACtBM,MAAMuC,iBAA+B,CAAChQ;IA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CF;IACF;IAEA,OAAOle;AACT;AC1CO,MAAM0e,SAAS,CAAC,GAAGC;IACxB,MAAM3e,SAAS;QACb,MAAM;QACN,SAAS;QACT,QAAQ;YACN;gBACE,MAAM;YACR;SACD;IACH;IAEA,OAAO,CAAC+V,GAAGtW;QACTO,OAAO,MAAM,GAAG2e,KAAK,GAAG,CAAC,CAAC7e,WACjBD,aAAwCC,UAAUL,SAAS,CAAC;QAGrE,OAAOO;IACT;AACF;ACSA,MAAMkS,YAAqB;IACzBlB;IACA/G;IACAiK;IACA5D;IACAE;IACAoB;IACA2B;IACAzB;IACAsC;IACA6J;IACArJ;IACA8D;IACAQ;IACAI;IACAkB;IACAmB;IACAa;IACAG;CACD;AAED,MAAMiC,YAA0B;IAC9BjN;IACAgF;IACAF;IACAlG;IACA2F,gBAAgB;QACdlF;QACA/G;QACAiK;QACA5D;QACAE;QACAoB;QACA2B;QACAzB;QACAsC;QACA6J;QACAvF;QACAQ;QACAI;QACAkB;QACAmB;QACAa;QACAG;KACD;IACD1F;IACAH;IACAtB;CACD;AAEM,MAAMqJ,mBAAiC;IAAChS,0BAAaqF,WAAM0M;CAAW;AClD7E,MAAME,SAAuB;IAC3BrO;IACAwD;IACAD;IACA/J;IACAiK;IACA5D;IACAE;IACAoB;IACA2B;IACAzB;IACAsC;IACAkK;IACA1J;IACAmD;IACAyC;IACAmB;IACAa;IACAqB;CACD;AAED,MAAMkB,cAA4B;IAChCpN;IACAgF;IACAF;IACAlG;IACA2F,gBAAgB;QACdzF;QACAwD;QACAD;QACA/J;QACAiK;QACA5D;QACAE;QACAoB;QACA2B;QACAzB;QACAsC;QACAkK;QACAvG;QACAyC;QACAmB;QACAa;QACAqB;KACD;IACD5G;IACAH;IACAtB;CACD;AAEM,MAAMwJ,qBAAqB;IAACnS,0BAAaiS,QAAQC;CAAa;ACnDrE,MAAME,iBAA+B;IACnChO;IACAgD;IACAhK;IACAiK;IACA5D;IACAE;IACAoB;IACA2B;IACAzB;IACAsC;IACAQ;IACA0J;IACAvG;IACAyC;IACAmB;IACAa;IACAqB;CACD;AAED,MAAMqB,sBAAoC;IACxCvN;IACAgF;IACAF;IACAlG;IACA2F,gBAAgB;QACdjF;QACAgD;QACAhK;QACAiK;QACA5D;QACAE;QACAoB;QACA2B;QACAzB;QACAsC;QACAkK;QACAvG;QACAyC;QACAmB;QACAa;QACAqB;KACD;IACD5G;IACAH;IACAtB;CACD;AAEM,MAAM2J,6BAA2C;IAACtS,0BAAaoS,gBAAgBC;CAAqB;AC9C3G,MAAME,gBAA8B;IAClC3O;IACAwD;IACAD;IACA/J;IACAiK;IACAH;IACAzD;IACAE;IACAoB;IACA2B;IACAzB;IACAsC;IACAkK;IACA1J;IACAmD;IACAyC;IACAmB;IACAa;IACAqB;CACD;AAED,MAAMwB,qBAAmC;IACvC1N;IACAgF;IACAF;IACAlG;IACA2F,gBAAgB;QACdzF;QACAwD;QACAD;QACA/J;QACA8J;QACAG;QACA5D;QACAE;QACAoB;QACA2B;QACAzB;QACAsC;QACAkK;QACAvG;QACAyC;QACAmB;QACAa;QACAqB;KACD;IACD5G;IACAH;IACAtB;CACD;AAEM,MAAM8J,4BAA0C;IAACzS,0BAAauS,eAAeC;CAAoB;ACtDxG,MAAME,MAAoB;IACxB7O;IACAuD;IACAhK;IACAiK;IACAjE;IACAO;IACAqC;IACAS;IACAxB;IACAsC;IACAoK;IACA5J;IACAmD;IACAyC;IACAmB;IACAa;IACAqB;CACD;AAED,MAAM2B,WAAyB;IAC7B7N;IACAgF;IACAD;IACAnG;IACA2F,gBAAgB;QACdxF;QACAuD;QACAhK;QACAiK;QACAjE;QACAO;QACAqC;QACAS;QACAxB;QACAA;QACAsC;QACAoK;QACAzG;QACAyC;QACAmB;QACAa;QACAqB;KACD;IACD5G;IACAH;IACAtB;CACD;AAEM,MAAMiK,kBAAgC;IAAC5S,0BAAa0S,KAAKC;CAAU;ACjD1E,MAAME,cAA4B;IAChC/O;IACAsD;IACAhK;IACAiK;IACAjE;IACAO;IACAqC;IACAS;IACAxB;IACAsC;IACAoK;IACA5J;IACAmD;IACAyC;IACAmB;IACAa;IACAqB;CACD;AAED,MAAM8B,mBAAiC;IACrChO;IACAgF;IACAD;IACAnG;IACA2F,gBAAgB;QACdvF;QACAsD;QACAhK;QACAiK;QACAjE;QACA4C;QACAS;QACAxB;QACAsC;QACAoK;QACAzG;QACAyC;QACAmB;QACAa;QACAqB;KACD;IACD5G;IACAH;IACAtB;CACD;AAEM,MAAMoK,0BAAwC;IAAC/S,0BAAa6S,aAAaC;CAAkB;AC9ClG,MAAME,aAA2B;IAC/BnP;IACAuD;IACAhK;IACAiK;IACAH;IACA9D;IACAO;IACAqC;IACAS;IACAxB;IACAsC;IACAoK;IACA5J;IACAmD;IACAyC;IACAmB;IACAa;IACAqB;CACD;AAED,MAAMiC,kBAAgC;IACpCnO;IACAgF;IACAD;IACAnG;IACA2F,gBAAgB;QACdxF;QACAuD;QACAhK;QACAiK;QACAH;QACA9D;QACAqD;QACAT;QACAf;QACAsC;QACAoK;QACAzG;QACAyC;QACAmB;QACAa;QACAqB;KACD;IACD5G;IACAH;IACAtB;CACD;AAEM,MAAMuK,yBAAuC;IAAClT,0BAAagT,YAAYC;CAAiB;AC/C/F,MAAME,YAAqB;IACzBpP;IACAoD;IACA/J;IACAiK;IACA5D;IACAE;IACAoB;IACA2B;IACAzB;IACAsC;IACA6J;IACArJ;IACA8D;IACAQ;IACAI;IACAY;IACAM;IACAmB;IACAa;IACAG;CACD;AAED,MAAMsD,YAA0B;IAC9BtO;IACAgF;IACAF;IACAlG;IACA2F,gBAAgB;QACdtF;QACA3G;QACAiK;QACAF;QACA1D;QACAE;QACAoB;QACA2B;QACAzB;QACAsC;QACA6J;QACAvF;QACAQ;QACAI;QACAY;QACAM;QACAmB;QACAa;QACAG;KACD;IACD1F;IACAH;IACAtB;CACD;AAEM,MAAM0K,mBAAmB;IAACrT,0BAAamT,WAAMC;CAAW;ACtD/D,MAAME,cAA4B;IAChCvP;IACAoD;IACA/J;IACAiK;IACAH;IACAzD;IACAE;IACAoB;IACA2B;IACAzB;IACAsC;IACA6J;IACArJ;IACA8D;IACAY;IACAY;IACAM;IACAmB;IACAa;IACAG;CACD;AAED,MAAMyD,mBAAiC;IACrCzO;IAEAgF;IACAF;IACAlG;IACA2F,gBAAgB;QACdtF;QACAoD;QACA/J;QACAiK;QACAH;QACAzD;QACAE;QACAoB;QACA2B;QACAzB;QACAsC;QACA6J;QACAvF;QACAY;QACAY;QACAM;QACAmB;QACAa;QACAG;KACD;IACD1F;IACAH;IACAtB;CACD;AAEM,MAAM6K,0BAA0B;IAACxT,0BAAasT,aAAaC;CAAkB;AC1DpF,MAAME,YAA0B;IAC9B5B,OACE;QAAC7N;QAAeqJ;KAAU,EAC1B;QAACpJ;QAAoBwI;QAAWZ;QAAYQ;KAAyB,EACrE;QAACnI;QAAoBuI;QAAWZ;QAAYQ;KAAyB;IAEvE5I;IACAE;IAEA0D;IACAtC;IACA2B;IACAzB;IACAmM;IACAzD;IACAmB;IACAa;IACAG;CACD;AAED,MAAM4D,iBAA+B;IACnC5O;IACAgF;IACAF;IACAlG;IACA2F,gBAAgB;QACdwI,OACE;YAAC7N;YAAeqJ;SAAU,EAC1B;YAACpJ;YAAoBwI;YAAWZ;YAAYQ;SAAyB,EACrE;YAACnI;YAAoBuI;YAAWZ;YAAYQ;SAAyB;QAEvEhF;QACA5D;QACAE;QACAoB;QACA2B;QACAzB;QACAmM;QACAzD;QACAmB;QACAa;QACAG;KACD;IACD1F;IACAH;CACD;AAEM,MAAM0J,wBAAwB;IAAC3T,0BAAayT,WAAWC;CAAgB;AC9C9E,MAAME,UAAwB;IAC5BjP;IACAvH;IACAiK;IACA5D;IACAE;IACAqC;IACAU;IACAzB;IACAsC;IACA6J;IACAQ;IACA7J;IACA8D;IACAU;IACAoB;IACAmB;IACAa;IACAG;CACD;AAED,MAAM+D,eAA6B;IACjC/O;IACAgF;IACAF;IACAlG;IACA2F,gBAAgB;QACd1E;QACAvH;QACAiK;QACA5D;QACAE;QACAqC;QACAU;QACAzB;QACAsC;QACA6J;QACAQ;QACA/F;QACAU;QACAoB;QACAmB;QACAa;QACAG;KACD;IACD1F;IACAH;IACAtB;CACD;AAEM,MAAMmL,sBAAoC;IAAC9T,0BAAa4T,SAASC;CAAc;ACxDtF,MAAME,MAAoB;IACxB1P;IACAjH;IACAiK;IACA5D;IACAE;IACAsB;IACAsC;IACAQ;IACA4F;IACAmB;IACAa;IACAG;CACD;AAED,MAAMkE,WAAyB;IAC7BlP;IACAgF;IACAF;IACAlG;IACA2F,gBAAgB;QACdhF;QACAjH;QACAiK;QACA5D;QACAE;QACAsB;QACAsC;QACAoG;QACAmB;QACAa;QACAG;KACD;IACD1F;IACAH;IACAtB;CACD;AAEM,MAAMsL,kBAAgC;IAACjU,0BAAa+T,KAAKC;CAAU;ACtC1E,MAAME,QAAsB;IAC1B3P;IACAnH;IACAiK;IACA5D;IACAE;IACAsB;IACAsC;IACAQ;IACA4F;IACAmB;IACAa;IACAG;CACD;AAED,MAAMqE,aAA2B;IAC/BrP;IACAgF;IACAF;IACAlG;IACA2F,gBAAgB;QACd9E;QACAnH;QACAiK;QACA5D;QACAE;QACAsB;QACAsC;QACAoG;QACAmB;QACAa;QACAG;KACD;IACD1F;IACAH;IACAtB;CACD;AAEM,MAAMyL,oBAAkC;IAACpU,0BAAakU,OAAOC;CAAY;ACrChF,MAAME,OAAqB;IACzB7P;IACA4C;IACAD;IACA/J;IACAiK;IACA5D;IACAE;IACAgD;IACAI;IACA9B;IACAsC;IACAkK;IACA1J;CACD;AAED,MAAMuM,YAA0B;IAC9BxP;IACAgF;IACAF;IACAlG;IACA2F,gBAAgB;QACd7E;QACA4C;QACAD;QACA/J;QACAiK;QACA5D;QACAE;QACAgD;QACAI;QACA9B;QACAsC;QACAkK;KACD;IACDrH;IACAH;IACAtB;CACD;AAEM,MAAM4L,mBAAmB;IAACvU,0BAAaqU,MAAMC;CAAW;ACrC/D,MAAME,eAA6B;IACjC9P;IACA0C;IACAhK;IACAiK;IACA5D;IACAE;IACAgD;IACAI;IACA9B;IACAsC;IACAQ;IACA0J;IACA9D;IACAmB;IACAa;IACAqB;CACD;AAED,MAAMyD,oBAAkC;IACtC3P;IACAgF;IACAF;IACAlG;IACA2F,gBAAgB;QACd3E;QACA0C;QACAhK;QACAiK;QACA5D;QACAE;QACAgD;QACAI;QACA9B;QACAsC;QACAkK;QA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"}