@visactor/vchart 2.0.11-alpha.8 → 2.0.12-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/build/es5/index.js +1 -1
  2. package/build/index.es.js +25 -16
  3. package/build/index.js +25 -16
  4. package/build/index.min.js +2 -2
  5. package/build/tsconfig.tsbuildinfo +1 -1
  6. package/cjs/chart/index.js +1 -1
  7. package/cjs/chart/stack.js +1 -1
  8. package/cjs/chart/util.js +1 -1
  9. package/cjs/constant/attribute.js +1 -2
  10. package/cjs/constant/correlation.js +2 -1
  11. package/cjs/constant/waterfall.js +1 -2
  12. package/cjs/core/factory.js +2 -1
  13. package/cjs/core/index.d.ts +1 -1
  14. package/cjs/core/index.js +1 -1
  15. package/cjs/core/index.js.map +1 -1
  16. package/cjs/core/vchart.js +1 -1
  17. package/cjs/data/initialize.js +1 -1
  18. package/cjs/data/register.js +1 -1
  19. package/cjs/data/transforms/box-plot.d.ts +1 -0
  20. package/cjs/data/transforms/box-plot.js +3 -2
  21. package/cjs/data/transforms/box-plot.js.map +1 -1
  22. package/cjs/mark/box-plot.js +17 -1
  23. package/cjs/mark/box-plot.js.map +1 -1
  24. package/cjs/series/box-plot/box-plot.d.ts +4 -3
  25. package/cjs/series/box-plot/box-plot.js +14 -13
  26. package/cjs/series/box-plot/box-plot.js.map +1 -1
  27. package/cjs/typings/visual.d.ts +15 -6
  28. package/cjs/typings/visual.js.map +1 -1
  29. package/esm/chart/index.js +1 -1
  30. package/esm/chart/stack.js +1 -1
  31. package/esm/chart/util.js +1 -1
  32. package/esm/constant/attribute.js +1 -2
  33. package/esm/constant/correlation.js +2 -1
  34. package/esm/constant/waterfall.js +1 -2
  35. package/esm/core/factory.js +2 -1
  36. package/esm/core/index.d.ts +1 -1
  37. package/esm/core/index.js +1 -1
  38. package/esm/core/index.js.map +1 -1
  39. package/esm/core/vchart.js +1 -1
  40. package/esm/data/initialize.js +1 -1
  41. package/esm/data/register.js +1 -1
  42. package/esm/data/transforms/box-plot.d.ts +1 -0
  43. package/esm/data/transforms/box-plot.js +3 -3
  44. package/esm/data/transforms/box-plot.js.map +1 -1
  45. package/esm/mark/box-plot.js +17 -1
  46. package/esm/mark/box-plot.js.map +1 -1
  47. package/esm/series/box-plot/box-plot.d.ts +4 -3
  48. package/esm/series/box-plot/box-plot.js +14 -13
  49. package/esm/series/box-plot/box-plot.js.map +1 -1
  50. package/esm/typings/visual.d.ts +15 -6
  51. package/esm/typings/visual.js.map +1 -1
  52. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/series/box-plot/box-plot.ts"],"names":[],"mappings":"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","file":"box-plot.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport { AttributeLevel } from '../../constant/attribute';\nimport { DEFAULT_DATA_INDEX } from '../../constant/data';\nimport { PREFIX } from '../../constant/base';\nimport type { IModelEvaluateOption, IModelInitOption } from '../../model/interface';\nimport type { BoxPlotShaftShape, IOutlierMarkSpec, Datum, DirectionType } from '../../typings';\nimport { Direction } from '../../typings/space';\nimport { valueInScaleRange } from '../../util/scale';\nimport { CartesianSeries } from '../cartesian/cartesian';\nimport type { SeriesMarkMap } from '../interface';\nimport { SeriesMarkNameEnum, SeriesTypeEnum } from '../interface/type';\nimport type { IBoxPlotSeriesSpec } from './interface';\nimport { STATE_VALUE_ENUM } from '../../compile/mark/interface';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport { DataView } from '@visactor/vdataset';\nimport { foldOutlierData } from '../../data/transforms/box-plot';\nimport { BOX_PLOT_OUTLIER_VALUE_FIELD } from '../../constant/box-plot';\nimport { BoxPlotSeriesTooltipHelper } from './tooltip-helper';\nimport { addVChartProperty } from '../../data/transforms/add-property';\nimport { addDataKey, initKeyMap } from '../../data/transforms/data-key';\nimport { animationConfig, userAnimationConfig } from '../../animation/utils';\nimport { registerScaleInOutAnimation } from '../../animation/config';\nimport type { IMarkAnimateSpec } from '../../animation/spec';\nimport { registerBoxPlotMark } from '../../mark/box-plot';\nimport { registerSymbolMark } from '../../mark/symbol';\nimport { boxPlotSeriesMark } from './constant';\nimport { Factory } from '../../core/factory';\nimport type { IBoxPlotMark, IGlyphMark, IMark, ISymbolMark, ITextMark } from '../../mark/interface';\nimport { merge, isNumber, isValid, isNil, array, last } from '@visactor/vutils';\nimport { getGroupAnimationParams } from '../util/utils';\nimport { registerCartesianLinearAxis, registerCartesianBandAxis } from '../../component/axis/cartesian';\nimport type { ICompilableData } from '../../compile/data';\nimport { CompilableData } from '../../compile/data';\nimport { registeBoxPlotScaleAnimation } from './animation';\nimport { boxPlot } from '../../theme/builtin/common/series/box-plot';\nimport { getActualNumValue } from '../../util/space';\nimport { isContinuous } from '@visactor/vscale';\nimport { BoxPlotSeriesSpecTransformer } from './box-plot-transformer';\n\nconst DEFAULT_STROKE_WIDTH = 2;\nconst DEFAULT_SHAFT_FILL_OPACITY = 0.5;\nconst DEFAULT_SHAFT_SHAPE = 'line';\nexport const DEFAULT_FILL_COLOR = '#FFF';\nexport const DEFAULT_STROKE_COLOR = '#000';\n\nconst DEFAULT_OUTLIER_SIZE = 10;\n\nexport class BoxPlotSeries<T extends IBoxPlotSeriesSpec = IBoxPlotSeriesSpec> extends CartesianSeries<T> {\n static readonly type: string = SeriesTypeEnum.boxPlot;\n type = SeriesTypeEnum.boxPlot;\n\n static readonly builtInTheme = { boxPlot };\n static readonly mark: SeriesMarkMap = boxPlotSeriesMark;\n\n static readonly transformerConstructor = BoxPlotSeriesSpecTransformer as any;\n readonly transformerConstructor = BoxPlotSeriesSpecTransformer;\n\n protected _bandPosition = 0;\n protected _minField: string;\n getMinField() {\n return this._minField;\n }\n protected _maxField: string;\n getMaxField() {\n return this._maxField;\n }\n protected _q1Field: string;\n getQ1Field() {\n return this._q1Field;\n }\n protected _medianField: string;\n getMedianField() {\n return this._medianField;\n }\n protected _q3Field: string;\n getQ3Field() {\n return this._q3Field;\n }\n protected _outliersField: string;\n getOutliersField() {\n return this._outliersField;\n }\n protected _lineWidth: number;\n protected _boxWidth: number;\n protected _shaftShape: BoxPlotShaftShape;\n getShaftShape() {\n return this._shaftShape;\n }\n protected _shaftWidth: number;\n protected _boxFillColor: string;\n getBoxFillColor() {\n return this._boxFillColor;\n }\n protected _strokeColor: string;\n getStrokeColor() {\n return this._strokeColor;\n }\n protected _shaftFillOpacity: number;\n protected _outliersStyle: IOutlierMarkSpec;\n getOutliersStyle() {\n return this._outliersStyle;\n }\n protected _outlierDataView: ICompilableData;\n\n private _autoBoxWidth: number;\n\n /**\n * @override\n */\n setAttrFromSpec() {\n super.setAttrFromSpec();\n const boxPlotStyle: any = this._spec.boxPlot?.style ?? {};\n this._minField = this._spec.minField;\n this._maxField = this._spec.maxField;\n this._q1Field = this._spec.q1Field;\n this._medianField = this._spec.medianField;\n this._q3Field = this._spec.q3Field;\n this._outliersField = this._spec.outliersField;\n this._lineWidth = boxPlotStyle.lineWidth ?? DEFAULT_STROKE_WIDTH;\n this._boxWidth = boxPlotStyle.boxWidth;\n this._shaftShape = boxPlotStyle.shaftShape ?? DEFAULT_SHAFT_SHAPE;\n this._shaftWidth = boxPlotStyle.shaftWidth;\n this._boxFillColor = boxPlotStyle.boxFill;\n this._strokeColor = boxPlotStyle.stroke;\n\n this._shaftFillOpacity =\n this._shaftShape === 'bar' ? boxPlotStyle.shaftFillOpacity ?? DEFAULT_SHAFT_FILL_OPACITY : undefined;\n\n this._outliersStyle = (this._spec.outliersStyle ?? this._spec.outlier?.style) as IOutlierMarkSpec;\n }\n\n private _boxPlotMark?: IBoxPlotMark;\n private _outlierMark?: ISymbolMark;\n\n initMark(): void {\n this._boxPlotMark = this._createMark(BoxPlotSeries.mark.boxPlot, {\n groupKey: this._seriesField,\n isSeriesMark: true\n }) as IBoxPlotMark;\n if (this._outliersField) {\n this._outlierMark = this._createMark(BoxPlotSeries.mark.outlier, {\n key: DEFAULT_DATA_INDEX,\n groupKey: this._seriesField,\n dataView: this._outlierDataView.getDataView(),\n dataProductId: this._outlierDataView.getProductId()\n }) as ISymbolMark;\n }\n }\n\n initMarkStyle(): void {\n const boxPlotMark = this._boxPlotMark;\n if (boxPlotMark) {\n const commonBoxplotStyles = {\n lineWidth: this._lineWidth,\n fill: this._boxFillColor ?? (this._shaftShape !== 'line' ? this.getColorAttribute() : DEFAULT_FILL_COLOR),\n minMaxFillOpacity: this._shaftFillOpacity,\n stroke: this._strokeColor ?? (this._shaftShape !== 'line' ? DEFAULT_STROKE_COLOR : this.getColorAttribute())\n };\n\n (boxPlotMark as IGlyphMark).setGlyphConfig({\n direction: this._direction,\n shaftShape: this._shaftShape\n });\n\n const boxPlotMarkStyles =\n this._direction === Direction.horizontal\n ? {\n y: (datum: Datum) => this._getPosition(this.direction, datum),\n boxHeight: () => getActualNumValue(this._boxWidth ?? '100%', this._getMarkWidth()),\n ruleHeight: () => getActualNumValue(this._shaftWidth ?? '100%', this._getMarkWidth()),\n q1q3Height: () => getActualNumValue(this._boxWidth ?? '100%', this._getMarkWidth()),\n minMaxHeight: () => getActualNumValue(this._shaftWidth ?? '100%', this._getMarkWidth())\n }\n : {\n x: (datum: Datum) => this._getPosition(this.direction, datum),\n boxWidth: () => getActualNumValue(this._boxWidth ?? '100%', this._getMarkWidth()),\n ruleWidth: () => getActualNumValue(this._shaftWidth ?? '100%', this._getMarkWidth()),\n q1q3Width: () => getActualNumValue(this._boxWidth ?? '100%', this._getMarkWidth()),\n minMaxWidth: () => getActualNumValue(this._shaftWidth ?? '100%', this._getMarkWidth())\n };\n\n this.setMarkStyle(boxPlotMark, commonBoxplotStyles, STATE_VALUE_ENUM.STATE_NORMAL, AttributeLevel.Series);\n this.setMarkStyle(boxPlotMark, boxPlotMarkStyles, STATE_VALUE_ENUM.STATE_NORMAL, AttributeLevel.Built_In);\n }\n\n const outlierMark = this._outlierMark;\n if (outlierMark) {\n this.setMarkStyle(\n outlierMark,\n {\n fill: this._outliersStyle?.fill ?? this.getColorAttribute(),\n size: isNumber(this._outliersStyle?.size) ? this._outliersStyle.size : DEFAULT_OUTLIER_SIZE\n },\n STATE_VALUE_ENUM.STATE_NORMAL,\n AttributeLevel.Series\n );\n }\n }\n\n initBoxPlotMarkStyle(): void {\n const boxPlotMark = this._boxPlotMark;\n const axisHelper = this._direction === Direction.horizontal ? this._xAxisHelper : this._yAxisHelper;\n if (boxPlotMark && axisHelper) {\n const { dataToPosition } = axisHelper;\n const scale = axisHelper?.getScale?.(0);\n this.setMarkStyle(\n boxPlotMark,\n {\n min: (datum: Datum) =>\n valueInScaleRange(\n dataToPosition(this.getDatumPositionValues(datum, this._minField), {\n bandPosition: this._bandPosition\n }),\n scale\n ),\n q1: (datum: Datum) =>\n valueInScaleRange(\n dataToPosition(this.getDatumPositionValues(datum, this._q1Field), {\n bandPosition: this._bandPosition\n }),\n scale\n ),\n median: (datum: Datum) =>\n valueInScaleRange(\n dataToPosition(this.getDatumPositionValues(datum, this._medianField), {\n bandPosition: this._bandPosition\n }),\n scale\n ),\n q3: (datum: Datum) =>\n valueInScaleRange(\n dataToPosition(this.getDatumPositionValues(datum, this._q3Field), {\n bandPosition: this._bandPosition\n }),\n scale\n ),\n max: (datum: Datum) =>\n valueInScaleRange(\n dataToPosition(this.getDatumPositionValues(datum, this._maxField), {\n bandPosition: this._bandPosition\n }),\n scale\n )\n },\n STATE_VALUE_ENUM.STATE_NORMAL,\n AttributeLevel.Series\n );\n }\n const outlierMark = this._outlierMark;\n if (outlierMark && axisHelper) {\n const { dataToPosition } = axisHelper;\n const scale = axisHelper?.getScale?.(0);\n const outlierMarkPositionChannel =\n this._direction === Direction.horizontal\n ? {\n y: (datum: Datum) => this._getPosition(this.direction, datum),\n x: (datum: Datum) =>\n valueInScaleRange(\n dataToPosition(this.getDatumPositionValues(datum, BOX_PLOT_OUTLIER_VALUE_FIELD), {\n bandPosition: this._bandPosition\n }),\n scale\n )\n }\n : {\n x: (datum: Datum) => this._getPosition(this.direction, datum),\n y: (datum: Datum) =>\n valueInScaleRange(\n dataToPosition(this.getDatumPositionValues(datum, BOX_PLOT_OUTLIER_VALUE_FIELD), {\n bandPosition: this._bandPosition\n }),\n scale\n )\n };\n this.setMarkStyle(outlierMark, outlierMarkPositionChannel, STATE_VALUE_ENUM.STATE_NORMAL, AttributeLevel.Series);\n }\n }\n\n initLabelMarkStyle(textMark: ITextMark) {\n if (!textMark) {\n return;\n }\n this.setMarkStyle(textMark, {\n fill: this.getColorAttribute(),\n text: (datum: Datum) => {\n return datum[this.getMedianField()];\n },\n z: this._fieldZ ? this.dataToPositionZ.bind(this) : null\n });\n }\n\n initData(): void {\n super.initData();\n if (!this._data) {\n return;\n }\n\n registerDataSetInstanceTransform(this._dataSet, 'foldOutlierData', foldOutlierData);\n registerDataSetInstanceTransform(this._dataSet, 'addVChartProperty', addVChartProperty);\n\n const outlierDataView = new DataView(this._dataSet, { name: `${this.type}_outlier_${this.id}_data` });\n outlierDataView.parse([this.getViewData()], {\n type: 'dataview'\n });\n outlierDataView.name = `${PREFIX}_series_${this.id}_outlierData`;\n outlierDataView.transform({\n type: 'foldOutlierData',\n options: {\n dimensionField: this._direction === Direction.horizontal ? this._fieldY : this._fieldX,\n outliersField: this._outliersField\n }\n });\n\n outlierDataView.transform(\n {\n type: 'addVChartProperty',\n options: {\n beforeCall: initKeyMap.bind(this),\n call: addDataKey\n }\n },\n false\n );\n\n this._outlierDataView = new CompilableData(this._option, outlierDataView);\n }\n\n compileData() {\n super.compileData();\n this._outlierDataView?.compile();\n }\n\n init(option: IModelInitOption): void {\n super.init(option);\n //init在axis初始化之后才被执行,此时axisHelper不为空\n this.initBoxPlotMarkStyle();\n }\n\n private _getMarkWidth() {\n if (this._autoBoxWidth) {\n return this._autoBoxWidth;\n }\n //获取自适应的图元宽度\n const bandAxisHelper = this._direction === Direction.horizontal ? this._yAxisHelper : this._xAxisHelper;\n const depthFromSpec = this._groups ? this._groups.fields.length : 1;\n const bandWidth = bandAxisHelper.getBandwidth?.(depthFromSpec - 1);\n\n let width = bandWidth;\n if (isValid(this._spec.boxWidth)) {\n width = getActualNumValue(this._spec.boxWidth, bandWidth);\n }\n if (isValid(this._spec.boxMinWidth)) {\n width = Math.max(width, getActualNumValue(this._spec.boxMinWidth, bandWidth));\n }\n if (isValid(this._spec.boxMaxWidth)) {\n width = Math.min(width, getActualNumValue(this._spec.boxMaxWidth, bandWidth));\n }\n\n this._autoBoxWidth = width;\n\n return this._autoBoxWidth;\n }\n\n protected _getPosition(direction: DirectionType, datum: Datum) {\n let axisHelper;\n let sizeAttribute;\n let dataToPosition;\n if (direction === Direction.horizontal) {\n axisHelper = this.getYAxisHelper();\n sizeAttribute = 'boxHeight';\n dataToPosition = this.dataToPositionY.bind(this);\n } else {\n axisHelper = this.getXAxisHelper();\n sizeAttribute = 'boxWidth';\n dataToPosition = this.dataToPositionX.bind(this);\n }\n const scale = axisHelper.getScale(0);\n\n const depthFromSpec = this._groups ? this._groups.fields.length : 1;\n const depth = depthFromSpec;\n\n const bandWidth = axisHelper.getBandwidth?.(depth - 1);\n const size = this._boxPlotMark.getAttribute(sizeAttribute, datum) as number;\n\n if (depth > 1 && isValid(this._spec.boxGapInGroup)) {\n // 自里向外计算,沿着第一层分组的中心点进行位置调整\n const groupFields = this._groups.fields;\n const boxGapInGroup = array(this._spec.boxGapInGroup);\n let totalWidth: number = 0;\n let offSet: number = 0;\n\n for (let index = groupFields.length - 1; index >= 1; index--) {\n const groupField = groupFields[index];\n // const groupValues = this.getViewDataStatistics()?.latestData?.[groupField]?.values ?? [];\n const groupValues = axisHelper.getScale(index)?.domain() ?? [];\n const groupCount = groupValues.length;\n const gap = getActualNumValue(boxGapInGroup[index - 1] ?? last(boxGapInGroup), bandWidth);\n const i = groupValues.indexOf(datum[groupField]);\n if (index === groupFields.length - 1) {\n totalWidth += groupCount * size + (groupCount - 1) * gap;\n offSet += i * (size + gap);\n } else {\n offSet += i * (totalWidth + gap);\n totalWidth += totalWidth + (groupCount - 1) * gap;\n }\n }\n\n const center = scale.scale(datum[groupFields[0]]) + axisHelper.getBandwidth(0) / 2;\n return center - totalWidth / 2 + offSet + size / 2;\n }\n\n const continuous = isContinuous(scale.type || 'band');\n const pos = dataToPosition(datum);\n\n return pos + bandWidth * 0.5 + (continuous ? -bandWidth / 2 : 0);\n }\n\n onLayoutEnd() {\n super.onLayoutEnd();\n //每次布局结束,清除自适应宽度缓存\n this._autoBoxWidth = null;\n }\n\n private _initAnimationSpec(config: any = {}) {\n //将spec中的animation的type替换为箱型图的type\n const newConfig = merge({}, config);\n ['appear', 'enter', 'update', 'exit', 'disappear'].forEach(state => {\n if (newConfig[state] && newConfig[state].type === 'scaleIn') {\n newConfig[state].type = this._shaftShape === 'bar' ? 'barBoxplotScaleIn' : 'boxplotScaleIn';\n } else if (newConfig[state] && newConfig[state].type === 'scaleOut') {\n newConfig[state].type = this._shaftShape === 'bar' ? 'barBoxplotScaleOut' : 'boxplotScaleOut';\n }\n });\n return newConfig;\n }\n\n initAnimation() {\n const animationParams = getGroupAnimationParams(this);\n\n if (this._boxPlotMark) {\n const newDefaultConfig = this._initAnimationSpec(Factory.getAnimationInKey('scaleInOut')?.());\n const newConfig = this._initAnimationSpec(\n userAnimationConfig(SeriesMarkNameEnum.boxPlot, this._spec, this._markAttributeContext)\n );\n this._boxPlotMark.setAnimationConfig(animationConfig(newDefaultConfig, newConfig, animationParams));\n }\n\n if (this._outlierMark) {\n const outlierMarkUserAnimation = {\n appear: (this._spec.animationAppear as IMarkAnimateSpec<string>)?.symbol,\n disappear: (this._spec.animationDisappear as IMarkAnimateSpec<string>)?.symbol,\n enter: (this._spec.animationEnter as IMarkAnimateSpec<string>)?.symbol,\n exit: (this._spec.animationExit as IMarkAnimateSpec<string>)?.symbol,\n update: (this._spec.animationUpdate as IMarkAnimateSpec<string>)?.symbol\n };\n this._outlierMark.setAnimationConfig(\n animationConfig(Factory.getAnimationInKey('scaleInOut')?.(), outlierMarkUserAnimation, animationParams)\n );\n }\n }\n\n protected initTooltip() {\n this._tooltipHelper = new BoxPlotSeriesTooltipHelper(this);\n this._boxPlotMark && this._tooltipHelper.activeTriggerSet.mark.add(this._boxPlotMark);\n this._outlierMark && this._tooltipHelper.activeTriggerSet.mark.add(this._outlierMark);\n }\n\n getStatisticFields() {\n const fields = super.getStatisticFields();\n const outliersField = fields.find(f => f.key === this._outliersField);\n if (outliersField) {\n outliersField.operations = ['array-min', 'array-max'];\n }\n return fields;\n }\n\n onEvaluateEnd(ctx: IModelEvaluateOption): void {\n //初次编译时,会传入空数据;待所有计算完成后,需要重新执行updateData更新数据\n super.onEvaluateEnd(ctx);\n this._outlierDataView.updateData();\n }\n\n getDefaultShapeType(): string {\n return 'square';\n }\n\n getActiveMarks(): IMark[] {\n return [this._boxPlotMark];\n }\n}\n\nexport const registerBoxplotSeries = () => {\n registerBoxPlotMark();\n registerSymbolMark();\n registerScaleInOutAnimation();\n registerCartesianBandAxis();\n registerCartesianLinearAxis();\n registeBoxPlotScaleAnimation();\n Factory.registerSeries(BoxPlotSeries.type, BoxPlotSeries);\n};\n"]}
1
+ {"version":3,"sources":["../src/series/box-plot/box-plot.ts"],"names":[],"mappings":"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","file":"box-plot.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport { AttributeLevel } from '../../constant/attribute';\nimport { DEFAULT_DATA_INDEX } from '../../constant/data';\nimport { PREFIX } from '../../constant/base';\nimport type { IModelEvaluateOption, IModelInitOption } from '../../model/interface';\nimport type { BoxPlotShaftShape, IOutlierMarkSpec, Datum, DirectionType } from '../../typings';\nimport { Direction } from '../../typings/space';\nimport { valueInScaleRange } from '../../util/scale';\nimport { CartesianSeries } from '../cartesian/cartesian';\nimport type { SeriesMarkMap } from '../interface';\nimport { SeriesMarkNameEnum, SeriesTypeEnum } from '../interface/type';\nimport type { IBoxPlotSeriesSpec } from './interface';\nimport { STATE_VALUE_ENUM } from '../../compile/mark/interface';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport { DataView } from '@visactor/vdataset';\nimport { foldOutlierData } from '../../data/transforms/box-plot';\nimport { BOX_PLOT_OUTLIER_VALUE_FIELD } from '../../constant/box-plot';\nimport { BoxPlotSeriesTooltipHelper } from './tooltip-helper';\nimport { addVChartProperty } from '../../data/transforms/add-property';\nimport { addDataKey, initKeyMap } from '../../data/transforms/data-key';\nimport { animationConfig, userAnimationConfig } from '../../animation/utils';\nimport { registerScaleInOutAnimation } from '../../animation/config';\nimport type { IMarkAnimateSpec } from '../../animation/spec';\nimport { registerBoxPlotMark } from '../../mark/box-plot';\nimport { registerSymbolMark } from '../../mark/symbol';\nimport { boxPlotSeriesMark } from './constant';\nimport { Factory } from '../../core/factory';\nimport type { IBoxPlotMark, IGlyphMark, IMark, ISymbolMark, ITextMark } from '../../mark/interface';\nimport { merge, isNumber, isValid, isNil, array, last } from '@visactor/vutils';\nimport { getGroupAnimationParams } from '../util/utils';\nimport { registerCartesianLinearAxis, registerCartesianBandAxis } from '../../component/axis/cartesian';\nimport type { ICompilableData } from '../../compile/data';\nimport { CompilableData } from '../../compile/data';\nimport { registeBoxPlotScaleAnimation } from './animation';\nimport { boxPlot } from '../../theme/builtin/common/series/box-plot';\nimport { getActualNumValue } from '../../util/space';\nimport { isContinuous } from '@visactor/vscale';\nimport { BoxPlotSeriesSpecTransformer } from './box-plot-transformer';\n\nconst DEFAULT_STROKE_WIDTH = 2;\nconst DEFAULT_SHAFT_FILL_OPACITY = 0.5;\nconst DEFAULT_SHAFT_SHAPE = 'line';\nexport const DEFAULT_FILL_COLOR = '#FFF';\nexport const DEFAULT_STROKE_COLOR = '#000';\n\nconst DEFAULT_OUTLIER_SIZE = 10;\n\nexport class BoxPlotSeries<T extends IBoxPlotSeriesSpec = IBoxPlotSeriesSpec> extends CartesianSeries<T> {\n static readonly type: string = SeriesTypeEnum.boxPlot;\n type = SeriesTypeEnum.boxPlot;\n\n static readonly builtInTheme = { boxPlot };\n static readonly mark: SeriesMarkMap = boxPlotSeriesMark;\n\n static readonly transformerConstructor = BoxPlotSeriesSpecTransformer as any;\n readonly transformerConstructor = BoxPlotSeriesSpecTransformer;\n\n protected _bandPosition = 0;\n protected _minField: string;\n getMinField() {\n return this._minField;\n }\n protected _maxField: string;\n getMaxField() {\n return this._maxField;\n }\n protected _q1Field: string;\n getQ1Field() {\n return this._q1Field;\n }\n protected _medianField: string;\n getMedianField() {\n return this._medianField;\n }\n protected _q3Field: string;\n getQ3Field() {\n return this._q3Field;\n }\n protected _outliersField: string;\n getOutliersField() {\n return this._outliersField;\n }\n protected _lineWidth: number;\n protected _boxWidth: number;\n protected _shaftShape: BoxPlotShaftShape;\n getShaftShape() {\n return this._shaftShape;\n }\n protected _shaftWidth: number;\n protected _boxFillColor: string;\n getBoxFillColor() {\n return this._boxFillColor;\n }\n protected _strokeColor: string;\n getStrokeColor() {\n return this._strokeColor;\n }\n protected _shaftFillOpacity: number;\n protected _outliersStyle: IOutlierMarkSpec;\n getOutliersStyle() {\n return this._outliersStyle;\n }\n protected _outlierData: ICompilableData;\n\n private _autoBoxWidth: number;\n\n /**\n * @override\n */\n setAttrFromSpec() {\n super.setAttrFromSpec();\n const boxPlotStyle: any = this._spec.boxPlot?.style ?? {};\n this._minField = this._spec.minField;\n this._maxField = this._spec.maxField;\n this._q1Field = this._spec.q1Field;\n this._medianField = this._spec.medianField;\n this._q3Field = this._spec.q3Field;\n this._outliersField = this._spec.outliersField;\n this._lineWidth = boxPlotStyle.lineWidth ?? DEFAULT_STROKE_WIDTH;\n this._boxWidth = boxPlotStyle.boxWidth;\n this._shaftShape = boxPlotStyle.shaftShape ?? DEFAULT_SHAFT_SHAPE;\n this._shaftWidth = boxPlotStyle.shaftWidth;\n this._boxFillColor = boxPlotStyle.boxFill;\n this._strokeColor = boxPlotStyle.stroke;\n\n this._shaftFillOpacity =\n this._shaftShape === 'bar' ? boxPlotStyle.shaftFillOpacity ?? DEFAULT_SHAFT_FILL_OPACITY : undefined;\n\n this._outliersStyle = (this._spec.outliersStyle ?? this._spec.outlier?.style) as IOutlierMarkSpec;\n }\n\n private _boxPlotMark?: IBoxPlotMark;\n private _outlierMark?: ISymbolMark;\n\n initMark(): void {\n this._boxPlotMark = this._createMark(BoxPlotSeries.mark.boxPlot, {\n groupKey: this._seriesField,\n isSeriesMark: true\n }) as IBoxPlotMark;\n if (this._outliersField) {\n this._outlierMark = this._createMark(BoxPlotSeries.mark.outlier, {\n key: DEFAULT_DATA_INDEX,\n groupKey: this._seriesField\n }) as ISymbolMark;\n\n this._outlierMark.setData(this._outlierData);\n }\n }\n\n initMarkStyle(): void {\n const boxPlotMark = this._boxPlotMark;\n if (boxPlotMark) {\n const commonBoxplotStyles = {\n lineWidth: this._lineWidth,\n fill: this._boxFillColor ?? (this._shaftShape !== 'line' ? this.getColorAttribute() : DEFAULT_FILL_COLOR),\n minMaxFillOpacity: this._shaftFillOpacity,\n stroke: this._strokeColor ?? (this._shaftShape !== 'line' ? DEFAULT_STROKE_COLOR : this.getColorAttribute())\n };\n\n (boxPlotMark as IGlyphMark).setGlyphConfig({\n direction: this._direction,\n shaftShape: this._shaftShape\n });\n\n const boxPlotMarkStyles =\n this._direction === Direction.horizontal\n ? {\n y: (datum: Datum) => this._getPosition(this.direction, datum),\n boxHeight: () => getActualNumValue(this._boxWidth ?? '100%', this._getMarkWidth()),\n ruleHeight: () => getActualNumValue(this._shaftWidth ?? '100%', this._getMarkWidth()),\n q1q3Height: () => getActualNumValue(this._boxWidth ?? '100%', this._getMarkWidth()),\n minMaxHeight: () => getActualNumValue(this._shaftWidth ?? '100%', this._getMarkWidth())\n }\n : {\n x: (datum: Datum) => this._getPosition(this.direction, datum),\n boxWidth: () => getActualNumValue(this._boxWidth ?? '100%', this._getMarkWidth()),\n ruleWidth: () => getActualNumValue(this._shaftWidth ?? '100%', this._getMarkWidth()),\n q1q3Width: () => getActualNumValue(this._boxWidth ?? '100%', this._getMarkWidth()),\n minMaxWidth: () => getActualNumValue(this._shaftWidth ?? '100%', this._getMarkWidth())\n };\n\n this.setMarkStyle(boxPlotMark, commonBoxplotStyles, STATE_VALUE_ENUM.STATE_NORMAL, AttributeLevel.Series);\n this.setMarkStyle(boxPlotMark, boxPlotMarkStyles, STATE_VALUE_ENUM.STATE_NORMAL, AttributeLevel.Built_In);\n }\n\n const outlierMark = this._outlierMark;\n if (outlierMark) {\n this.setMarkStyle(\n outlierMark,\n {\n fill: this._outliersStyle?.fill ?? this._boxFillColor ?? this.getColorAttribute(),\n stroke: this.getColorAttribute(),\n size: isNumber(this._outliersStyle?.size) ? this._outliersStyle.size : DEFAULT_OUTLIER_SIZE\n },\n STATE_VALUE_ENUM.STATE_NORMAL,\n AttributeLevel.Series\n );\n }\n }\n\n initBoxPlotMarkStyle(): void {\n const boxPlotMark = this._boxPlotMark;\n const axisHelper = this._direction === Direction.horizontal ? this._xAxisHelper : this._yAxisHelper;\n if (boxPlotMark && axisHelper) {\n const { dataToPosition } = axisHelper;\n const scale = axisHelper?.getScale?.(0);\n this.setMarkStyle(\n boxPlotMark,\n {\n min: (datum: Datum) =>\n valueInScaleRange(\n dataToPosition(this.getDatumPositionValues(datum, this._minField), {\n bandPosition: this._bandPosition\n }),\n scale\n ),\n q1: (datum: Datum) =>\n valueInScaleRange(\n dataToPosition(this.getDatumPositionValues(datum, this._q1Field), {\n bandPosition: this._bandPosition\n }),\n scale\n ),\n median: (datum: Datum) =>\n valueInScaleRange(\n dataToPosition(this.getDatumPositionValues(datum, this._medianField), {\n bandPosition: this._bandPosition\n }),\n scale\n ),\n q3: (datum: Datum) =>\n valueInScaleRange(\n dataToPosition(this.getDatumPositionValues(datum, this._q3Field), {\n bandPosition: this._bandPosition\n }),\n scale\n ),\n max: (datum: Datum) =>\n valueInScaleRange(\n dataToPosition(this.getDatumPositionValues(datum, this._maxField), {\n bandPosition: this._bandPosition\n }),\n scale\n )\n },\n STATE_VALUE_ENUM.STATE_NORMAL,\n AttributeLevel.Series\n );\n }\n const outlierMark = this._outlierMark;\n if (outlierMark && axisHelper) {\n const { dataToPosition } = axisHelper;\n const scale = axisHelper?.getScale?.(0);\n const outlierMarkPositionChannel =\n this._direction === Direction.horizontal\n ? {\n y: (datum: Datum) => this._getPosition(this.direction, datum),\n x: (datum: Datum) =>\n valueInScaleRange(\n dataToPosition(this.getDatumPositionValues(datum, BOX_PLOT_OUTLIER_VALUE_FIELD), {\n bandPosition: this._bandPosition\n }),\n scale\n )\n }\n : {\n x: (datum: Datum) => this._getPosition(this.direction, datum),\n y: (datum: Datum) =>\n valueInScaleRange(\n dataToPosition(this.getDatumPositionValues(datum, BOX_PLOT_OUTLIER_VALUE_FIELD), {\n bandPosition: this._bandPosition\n }),\n scale\n )\n };\n this.setMarkStyle(outlierMark, outlierMarkPositionChannel, STATE_VALUE_ENUM.STATE_NORMAL, AttributeLevel.Series);\n }\n }\n\n initLabelMarkStyle(textMark: ITextMark) {\n if (!textMark) {\n return;\n }\n this.setMarkStyle(textMark, {\n fill: this.getColorAttribute(),\n text: (datum: Datum) => {\n return datum[this.getMedianField()];\n },\n z: this._fieldZ ? this.dataToPositionZ.bind(this) : null\n });\n }\n\n initData(): void {\n super.initData();\n if (!this._data) {\n return;\n }\n\n registerDataSetInstanceTransform(this._dataSet, 'foldOutlierData', foldOutlierData);\n registerDataSetInstanceTransform(this._dataSet, 'addVChartProperty', addVChartProperty);\n\n const outlierDataView = new DataView(this._dataSet, { name: `${this.type}_outlier_${this.id}_data` });\n outlierDataView.parse([this.getViewData()], {\n type: 'dataview'\n });\n outlierDataView.name = `${PREFIX}_series_${this.id}_outlierData`;\n outlierDataView.transform({\n type: 'foldOutlierData',\n options: {\n dimensionField: this._direction === Direction.horizontal ? this._fieldY : this._fieldX,\n outliersField: this._outliersField,\n seriesField: this._seriesField\n }\n });\n\n outlierDataView.transform(\n {\n type: 'addVChartProperty',\n options: {\n beforeCall: initKeyMap.bind(this),\n call: addDataKey\n }\n },\n false\n );\n\n this._outlierData = new CompilableData(this._option, outlierDataView);\n }\n\n compileData() {\n super.compileData();\n this._outlierData?.compile();\n }\n\n viewDataUpdate(d: DataView): void {\n super.viewDataUpdate(d);\n this._outlierData?.updateData();\n }\n\n init(option: IModelInitOption): void {\n super.init(option);\n //init在axis初始化之后才被执行,此时axisHelper不为空\n this.initBoxPlotMarkStyle();\n }\n\n private _getMarkWidth() {\n if (this._autoBoxWidth) {\n return this._autoBoxWidth;\n }\n //获取自适应的图元宽度\n const bandAxisHelper = this._direction === Direction.horizontal ? this._yAxisHelper : this._xAxisHelper;\n const depthFromSpec = this._groups ? this._groups.fields.length : 1;\n const bandWidth = bandAxisHelper.getBandwidth?.(depthFromSpec - 1);\n\n let width = bandWidth;\n if (isValid(this._spec.boxWidth)) {\n width = getActualNumValue(this._spec.boxWidth, bandWidth);\n }\n if (isValid(this._spec.boxMinWidth)) {\n width = Math.max(width, getActualNumValue(this._spec.boxMinWidth, bandWidth));\n }\n if (isValid(this._spec.boxMaxWidth)) {\n width = Math.min(width, getActualNumValue(this._spec.boxMaxWidth, bandWidth));\n }\n\n this._autoBoxWidth = width;\n\n return this._autoBoxWidth;\n }\n\n protected _getPosition(direction: DirectionType, datum: Datum) {\n let axisHelper;\n let sizeAttribute;\n let dataToPosition;\n if (direction === Direction.horizontal) {\n axisHelper = this.getYAxisHelper();\n sizeAttribute = 'boxHeight';\n dataToPosition = this.dataToPositionY.bind(this);\n } else {\n axisHelper = this.getXAxisHelper();\n sizeAttribute = 'boxWidth';\n dataToPosition = this.dataToPositionX.bind(this);\n }\n const scale = axisHelper.getScale(0);\n\n const depthFromSpec = this._groups ? this._groups.fields.length : 1;\n const depth = depthFromSpec;\n\n const bandWidth = axisHelper.getBandwidth?.(depth - 1);\n const size = this._boxPlotMark.getAttribute(sizeAttribute, datum) as number;\n\n if (depth > 1 && isValid(this._spec.boxGapInGroup)) {\n // 自里向外计算,沿着第一层分组的中心点进行位置调整\n const groupFields = this._groups.fields;\n const boxGapInGroup = array(this._spec.boxGapInGroup);\n let totalWidth: number = 0;\n let offSet: number = 0;\n\n for (let index = groupFields.length - 1; index >= 1; index--) {\n const groupField = groupFields[index];\n // const groupValues = this.getViewDataStatistics()?.latestData?.[groupField]?.values ?? [];\n const groupValues = axisHelper.getScale(index)?.domain() ?? [];\n const groupCount = groupValues.length;\n const gap = getActualNumValue(boxGapInGroup[index - 1] ?? last(boxGapInGroup), bandWidth);\n const i = groupValues.indexOf(datum[groupField]);\n if (index === groupFields.length - 1) {\n totalWidth += groupCount * size + (groupCount - 1) * gap;\n offSet += i * (size + gap);\n } else {\n offSet += i * (totalWidth + gap);\n totalWidth += totalWidth + (groupCount - 1) * gap;\n }\n }\n\n const center = scale.scale(datum[groupFields[0]]) + axisHelper.getBandwidth(0) / 2;\n return center - totalWidth / 2 + offSet + size / 2;\n }\n\n const continuous = isContinuous(scale.type || 'band');\n const pos = dataToPosition(datum);\n\n return pos + bandWidth * 0.5 + (continuous ? -bandWidth / 2 : 0);\n }\n\n onLayoutEnd() {\n super.onLayoutEnd();\n //每次布局结束,清除自适应宽度缓存\n this._autoBoxWidth = null;\n }\n\n private _initAnimationSpec(config: any = {}) {\n //将spec中的animation的type替换为箱型图的type\n const newConfig = merge({}, config);\n ['appear', 'enter', 'update', 'exit', 'disappear'].forEach(state => {\n if (newConfig[state] && newConfig[state].type === 'scaleIn') {\n newConfig[state].type = this._shaftShape === 'bar' ? 'barBoxplotScaleIn' : 'boxplotScaleIn';\n } else if (newConfig[state] && newConfig[state].type === 'scaleOut') {\n newConfig[state].type = this._shaftShape === 'bar' ? 'barBoxplotScaleOut' : 'boxplotScaleOut';\n }\n });\n return newConfig;\n }\n\n initAnimation() {\n const animationParams = getGroupAnimationParams(this);\n\n if (this._boxPlotMark) {\n const newDefaultConfig = this._initAnimationSpec(Factory.getAnimationInKey('scaleInOut')?.());\n const newConfig = this._initAnimationSpec(\n userAnimationConfig(SeriesMarkNameEnum.boxPlot, this._spec, this._markAttributeContext)\n );\n this._boxPlotMark.setAnimationConfig(animationConfig(newDefaultConfig, newConfig, animationParams));\n }\n\n if (this._outlierMark) {\n const outlierMarkUserAnimation = {\n appear: (this._spec.animationAppear as IMarkAnimateSpec<string>)?.symbol,\n disappear: (this._spec.animationDisappear as IMarkAnimateSpec<string>)?.symbol,\n enter: (this._spec.animationEnter as IMarkAnimateSpec<string>)?.symbol,\n exit: (this._spec.animationExit as IMarkAnimateSpec<string>)?.symbol,\n update: (this._spec.animationUpdate as IMarkAnimateSpec<string>)?.symbol\n };\n this._outlierMark.setAnimationConfig(\n animationConfig(Factory.getAnimationInKey('scaleInOut')?.(), outlierMarkUserAnimation, animationParams)\n );\n }\n }\n\n protected initTooltip() {\n this._tooltipHelper = new BoxPlotSeriesTooltipHelper(this);\n this._boxPlotMark && this._tooltipHelper.activeTriggerSet.mark.add(this._boxPlotMark);\n this._outlierMark && this._tooltipHelper.activeTriggerSet.mark.add(this._outlierMark);\n }\n\n getStatisticFields() {\n const fields = super.getStatisticFields();\n const outliersField = fields.find(f => f.key === this._outliersField);\n if (outliersField) {\n outliersField.operations = ['array-min', 'array-max'];\n }\n return fields;\n }\n\n getDefaultShapeType(): string {\n return 'square';\n }\n\n getActiveMarks(): IMark[] {\n return [this._boxPlotMark];\n }\n}\n\nexport const registerBoxplotSeries = () => {\n registerBoxPlotMark();\n registerSymbolMark();\n registerScaleInOutAnimation();\n registerCartesianBandAxis();\n registerCartesianLinearAxis();\n registeBoxPlotScaleAnimation();\n Factory.registerSeries(BoxPlotSeries.type, BoxPlotSeries);\n};\n"]}
@@ -158,17 +158,26 @@ export interface IRectMarkSpec extends IFillMarkSpec {
158
158
  y1?: number;
159
159
  }
160
160
  export interface IBoxPlotMarkSpec extends ICommonSpec {
161
- lineWidth?: number;
162
- boxWidth?: number | string;
163
- shaftWidth?: number | string;
164
- shaftShape?: BoxPlotShaftShape;
165
- boxFill?: string;
166
- shaftFillOpacity?: number;
167
161
  min?: (datum: Datum) => number;
168
162
  q1?: (datum: Datum) => number;
169
163
  median?: (datum: Datum) => number;
170
164
  q3?: (datum: Datum) => number;
171
165
  max?: (datum: Datum) => number;
166
+ shaftShape?: BoxPlotShaftShape;
167
+ boxWidth?: number | string;
168
+ boxHeight?: number | string;
169
+ shaftWidth?: number | string;
170
+ ruleWidth?: number | string;
171
+ ruleHeight?: number | string;
172
+ minMaxWidth?: number | string;
173
+ minMaxHeight?: number | string;
174
+ q1q3Width?: number | string;
175
+ q1q3Height?: number | string;
176
+ lineWidth?: number;
177
+ minMaxFillOpacity?: number;
178
+ boxStroke?: string;
179
+ medianStroke?: string;
180
+ boxCornerRadius?: number;
172
181
  }
173
182
  export interface IRippleMarkSpec extends ICommonSpec {
174
183
  ripple?: number;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/typings/visual.ts"],"names":[],"mappings":"","file":"visual.js","sourcesContent":["import type { PopTipAttributes } from '@visactor/vrender-components';\nimport type { DataView } from '@visactor/vdataset';\nimport type { Cursor } from './cursor';\nimport type { InterpolateType } from './interpolate';\nimport type { ScaleType } from './scale';\nimport type { ShapeType } from './shape';\nimport type { IPoint } from './coordinate';\nimport type { IModelMarkAttributeContext } from '../compile/mark/interface';\nimport type { Datum } from './common';\nimport type { IPadding } from '@visactor/vutils';\nimport type { IColorKey } from '../theme/color-scheme/interface';\nimport type { ITokenKey } from '../theme/token/interface';\nimport type {\n IRepeatType,\n TextAlignType,\n TextBaselineType,\n IRichTextAttribute,\n IGraphicStyle,\n IColor\n} from '@visactor/vrender-core';\n\n// 基础的visual 对应 scale 的属性\nexport interface IVisualSpecBase<D, T> {\n /**\n * type of scale\n */\n type: ScaleType;\n /**\n * will set to scale.domain, it means input of scale\n */\n domain: D[];\n /**\n * will set to scale.range, it means output of scale\n */\n range: T[];\n /**\n * will set to scale.specified if scale support, as a key-value pair matching capability\n * @since 1.1.0\n */\n specified?: { [key: string]: unknown };\n /**\n * enable clamp in linear scale\n * If clamp is enabled, the return value of the scale is always within the scale’s range.\n * @since 1.13.6\n * @default false\n */\n clamp?: boolean;\n}\n// 用来给用户进行mark.style上的映射配置。所以要配置数据维度\nexport interface IVisualSpecStyle<D, T> extends IVisualSpecBase<D, T> {\n /**\n * 指定映射对应的数据字段\n */\n field?: string;\n}\n\nexport type IDataDomainSpec = {\n /**\n * 数据的id\n */\n dataId: string;\n /**\n * 数据字段\n */\n fields: string[];\n};\n\n// 用来提供给用户进行 scale 配置 所以名字是必选的 对用户配置\nexport interface IVisualSpecScale<D, T> extends Omit<IVisualSpecBase<D, T>, 'domain'> {\n /**\n * scale 的id\n */\n id: string;\n /**\n * 定义域范围\n */\n domain:\n | IVisualSpecBase<D, T>['domain']\n // 使用数据的字段值,如果 scale 是连续的,就取区间,如果是离散的就使用 values 。\n // 不考虑图表内的交互等数据筛选,这里只用原始数据的统计信息\n | IDataDomainSpec[];\n}\n// 对用户配置\nexport type IVisual<D = any, R = any> = IVisualSpecStyle<D, R> | IVisualScale;\n\nexport interface IVisualScale {\n /**\n * 对应 IVisualSpecScale 的用户配置 scale-id\n */\n scale: string;\n /**\n * 指定参与映射的数据字段\n */\n field?: string;\n /**\n * 当用户指定 field 后,用该属性来控制值域。\n * @default 'none'\n */\n changeDomain?: 'none' | 'replace' | 'expand';\n}\n\nexport type FunctionType<T> = (datum: Datum, context: IModelMarkAttributeContext, source?: DataView) => T;\nexport type ValueType<T> = T;\nexport type VisualType<T> = ValueType<T> | FunctionType<T> | IVisual<unknown, T>;\n\nexport type TextureType =\n | 'circle'\n | 'dimond'\n | 'rect'\n | 'vertical-line'\n | 'horizontal-line'\n | 'bias-lr'\n | 'bias-rl'\n | 'grid';\n\n/**\n * style格式转换\n */\nexport type ConvertToMarkStyleSpec<T extends Record<string, any>> = {\n [key in keyof T]: VisualType<T[key]>;\n};\n\n/**\n * border\n */\nexport interface IBorder {\n /**\n * 边框离图形边缘的距离\n */\n distance: number | string;\n /**\n * 边框的颜色\n */\n stroke?: string | IGradient;\n /**\n * 边框的透明度\n */\n strokeOpacity?: number;\n /**\n * 边框线的宽度\n */\n lineWidth?: number;\n /**\n * 给边框配置虚线模式。它使用一组值来指定描述模式的线和间隙的交替长度\n */\n lineDash?: number[];\n /**\n * 设置边框的虚线偏移量\n */\n lineDashOffset?: number;\n}\n\nexport interface ICommonSpec {\n /**\n * 图形是否可见\n */\n visible?: boolean;\n /**\n * 图形的x坐标\n */\n x?: number;\n /**\n * 图形的y坐标\n */\n y?: number;\n /**\n * 图形的z坐标,仅适用于3D图表\n */\n z?: number;\n /**\n * 图形的描边颜色。\n * 支持使用 'rgb(255,255,255)','rgba(255,255,255,1)','#fff' 等方式设置为纯色,也支持设置为渐变色描边\n * @todo 隔离主题和 spec 配置\n * IColorKey 类型只适用于主题\n */\n stroke?: string | IGradient | false | (number | boolean)[] | IColorKey | null;\n /**\n * 描边透明度\n */\n strokeOpacity?: number;\n /**\n * 图形的透明度,既影响描边也影响填充\n */\n opacity?: number;\n /**\n * 图形的描边宽度\n */\n lineWidth?: number;\n /**\n * 给描边配置虚线模式。它使用一组值来指定描述模式的线和间隙的交替长度\n */\n lineDash?: number[];\n /**\n * 设置虚线偏移量的属性\n */\n lineDashOffset?: number;\n /**\n * 设置图形的鼠标样式\n */\n cursor?: Cursor;\n /**\n * 设置图形的层级,主意这个是相对层级,图形引擎绘制的时候,会对相同group下的所有图形根据zIndex进行排序,然后从小到大进行渲染\n */\n zIndex?: number;\n /**\n * 图形的旋转角度\n */\n angle?: number;\n /**\n * 基于AABB的锚点位置,用于简单的定位某些path的位置\n */\n anchor?: [number, number];\n\n /**\n * x方向的缩放比例,默认为1,即不进行缩放\n */\n scaleX?: number;\n /**\n * y方向的缩放比例,默认为1,即不进行缩放\n */\n scaleY?: number;\n /**\n * 图形缩放中心\n * @since 1.4.0\n * 可以配置固定坐标,例如 [100, 100];或者百分比坐标,例如 ['50%', '50%'],代表以图元中心为缩放中心\n * */\n scaleCenter?: [number | string, number | string];\n\n // 3d旋转的属性\n /**\n * x方向的旋转角度\n */\n alpha?: number;\n /**\n * y方向的旋转角度\n */\n beta?: number;\n /**\n * 3d的锚点位置\n */\n anchor3d?: [number, number];\n\n /**\n * 选择模式,精确模式,粗糙模式(包围盒模式),自定义模式\n */\n pickMode?: 'accurate' | 'imprecise' | 'custom';\n /**\n * bounds的计算模式\n */\n boundsMode?: 'accurate' | 'imprecise';\n\n /**\n * 用于扩展描边的拾取范围,为 0 就是默认线宽,正数就加宽,负数就减宽\n * @default 0\n * @since 1.7.3\n */\n pickStrokeBuffer?: number;\n\n // 以下是纹理相关的属性\n /**\n * 纹理的类型\n */\n texture?: TextureType | string;\n /**\n * 纹理的颜色\n */\n textureColor?: string;\n /**\n * 纹理单元的大小\n */\n textureSize?: number; // 纹理大小\n /**\n * 纹理之间空隙的大小\n */\n texturePadding?: number;\n\n /**\n * 外边框,外描边,描边位于图形外侧\n */\n outerBorder?: IBorder;\n /**\n * 内边框,内描边,描边位于图形内侧\n */\n innerBorder?: IBorder;\n /**\n * html 浮层,会将配置的html相关内容,绝对定位到图元的位置\n * @experimental\n * @since 1.10.0\n */\n html?: IMarkHtmlSpec;\n\n [key: string]: any;\n}\n\nexport interface IFillMarkSpec extends ICommonSpec {\n /**\n * 图形的填充颜色\n * @todo 隔离主题和 spec 配置\n * IColorKey 类型只适用于主题\n */\n fill?: VisualType<string> | IGradient | false | IColorKey;\n /**\n * 填充的透明度\n */\n fillOpacity?: number;\n\n /**\n * 图形的背景色,支持纯色、image元素、canvas元素\n */\n background?: IColor | HTMLImageElement | HTMLCanvasElement | null;\n}\n\nexport type IMarkHtmlSpec = Partial<IGraphicStyle['html']>;\n\nexport interface ISymbolMarkSpec extends IFillMarkSpec {\n /**\n * x方向的偏移量\n */\n dx?: number;\n /**\n * y方向的偏移量\n */\n dy?: number;\n /**\n * 大小,相当于外接圆的半径\n */\n size?: number | number[];\n /** 对外声明使用shape,vrender图形属性对应的是shape */\n shape?: ShapeType | string;\n /**\n * 标记的类型\n * FIXME: vrender Symbol接收的图形属性,暂时都申明一下\n * */\n symbolType?: ShapeType | string;\n /**\n * x方向的缩放比例,默认为1,即不进行缩放\n */\n scaleX?: number;\n /**\n * y方向的缩放比例,默认为1,即不进行缩放\n */\n scaleY?: number;\n}\n\n// lineMark 和 areaMark 共同配置\nexport interface ILineLikeMarkSpec extends IFillMarkSpec {\n /**\n * 取消的差值类型,默认为线性插值,也就是普通的折线\n */\n curveType?: InterpolateType;\n /**\n * 设置点是否有效,也就是是否合法\n */\n defined?: boolean;\n}\n\nexport interface IAreaMarkSpec extends ILineLikeMarkSpec {\n /**\n * 面积的x1值\n */\n x1?: number;\n /**\n * 面积的y1值\n */\n y1?: number;\n /**\n * 面积图元的方向,\n * horizontal - 水平方向\n * vertical - 垂直方向\n */\n orient?: 'horizontal' | 'vertical';\n}\n\nexport interface ILineMarkSpec extends ILineLikeMarkSpec {\n /**\n * 指定如何绘制每一条线段末端的属性。有 3 个可能的值,分别是:'butt', 'round' and 'square'。默认值是 butt。\n */\n lineCap?: LineStrokeCap;\n /**\n * 用来设置 2 个长度不为 0 的相连部分(线段、圆弧、曲线)如何连接在一起的属性(长度为 0 的变形部分,其指定的末端和控制点在同一位置,会被忽略)。此属性有 3 个值: 'round', 'bevel' and 'miter'。默认值是 'miter'\n */\n lineJoin?: LineStrokeJoin;\n /**\n * 设置斜接面限制比例的属性。当获取属性值时,会返回当前的值(默认值是 10.0 )。当给属性赋值时,0、负数、 Infinity 和 NaN 都会被忽略;除此之外都会被赋予一个新值。\n */\n miterLimit?: number;\n /**\n * stroke 的有界缓冲区\n */\n strokeBoundsBuffer?: number;\n}\n\nexport interface IRuleMarkSpec extends ILineMarkSpec {\n /**\n * 终点x坐标\n */\n x1?: number;\n /**\n * 终点y坐标\n */\n y1?: number;\n}\n\nexport interface ITextMarkSpec extends IFillMarkSpec {\n /**\n * 文字内容\n */\n text?: string | number | string[] | number[];\n /**\n * x 方向偏移\n */\n dx?: number;\n /**\n * y 方向偏移\n */\n dy?: number;\n /**\n * 字号\n */\n fontSize?: number | ITokenKey;\n /**\n * 文字水平方向的对齐方式\n */\n textAlign?: TextAlign;\n /**\n * 文字竖直方向的对齐方式\n */\n textBaseline?: TextBaseLine;\n /**\n * 字体\n */\n fontFamily?: string;\n /**\n * 字重\n */\n fontWeight?: FontWeight;\n /**\n * 字体样式,是否为斜体等\n */\n fontStyle?: FontStyle;\n /**\n * 文字的最大长度\n */\n maxLineWidth?: number;\n /**\n * 文字超出 maxLineWidth 后的省略符\n */\n ellipsis?: string;\n /**\n * 文本省略的位置,默认尾部省略\n * 1. 'start' 文字首部省略\n * 2. 'middle' 文本中间省略\n * 3. 'end' 文本尾部省略\n * @default 'end'\n * @since 1.7.3\n */\n suffixPosition?: 'start' | 'end' | 'middle';\n /**\n * 下划线\n */\n underline?: boolean;\n /**\n * 下划线的虚线样式\n */\n underlineDash?: number[];\n /**\n * 下划线的虚线偏移量\n */\n underlineOffset?: number;\n /**\n * 中划线\n */\n lineThrough?: boolean;\n /**\n * 行高(1.3.1 版本新增字符串类型表示比例值,如\"150%\")\n * @since 1.3.1\n */\n lineHeight?: number | string | ITokenKey;\n /**\n * poptip 相关配置\n */\n poptip?: PopTipAttributes;\n /**\n * 文本的排布方向,如果需要文本纵向排布,可以配置为 'vertical'\n * @default 'horizontal'\n */\n direction?: 'horizontal' | 'vertical';\n /*\n * 单词断行\n */\n wordBreak?: 'break-word' | 'break-all' | 'keep-all';\n /**\n * 高度限制控制显示内容及省略号\n */\n heightLimit?: number;\n /**\n * 按照行数限制显示内容及省略号\n */\n lineClamp?: number;\n /**\n * 设置如何处理空白字符\n */\n whiteSpace?: 'normal' | 'no-wrap';\n}\n\nexport type IRichTextMarkSpec = IRichTextAttribute &\n IFillMarkSpec & { type: 'rich'; text: IRichTextAttribute['textConfig'] };\n\nexport type IComposedTextMarkSpec = ITextMarkSpec | IRichTextMarkSpec;\n\nexport type IPositionedTextMarkSpec = Omit<ITextMarkSpec, 'align' | 'textAlign' | 'baseline' | 'textBaseline'>;\n\nexport interface IRectMarkSpec extends IFillMarkSpec {\n /**\n * 圆角配置。\n * 1. 如果传入数值,则统一为四个角设置圆角\n * 2. 如果传入数组,则分别为 [上左, 上右, 下右, 下左]\n */\n cornerRadius?: number | number[];\n /**\n * 宽度\n */\n width?: number;\n /**\n * 高度\n */\n height?: number;\n /**\n * x方向终点坐标\n */\n x1?: number;\n /**\n * y方向终点坐标\n */\n\n y1?: number;\n}\n\nexport interface IBoxPlotMarkSpec extends ICommonSpec {\n /**\n * box描边宽度\n */\n lineWidth?: number;\n /**\n * box宽度\n */\n boxWidth?: number | string;\n /**\n * 最大最小值宽度\n */\n shaftWidth?: number | string;\n /**\n * 中轴线类型\n */\n shaftShape?: BoxPlotShaftShape;\n /**\n * 盒子填充颜色,为空则不填充\n */\n boxFill?: string;\n // /**\n // * 描边颜色\n // */\n // stroke?: string;\n /**\n * 中轴线透明度,仅当shaftType=bar时生效\n */\n shaftFillOpacity?: number;\n /**\n * 最小值\n */\n min?: (datum: Datum) => number;\n /**\n * 25%分位数\n */\n q1?: (datum: Datum) => number;\n /**\n * 中位数\n */\n median?: (datum: Datum) => number;\n /**\n * 75%分位数\n */\n q3?: (datum: Datum) => number;\n /**\n * 最大值\n */\n max?: (datum: Datum) => number;\n}\n\nexport interface IRippleMarkSpec extends ICommonSpec {\n /**\n * 波纹密度ripple\n * ripple 取值范为[0,1]\n */\n ripple?: number;\n /**\n * 水波纹最大半径\n */\n size?: number;\n}\n\nexport interface ILiquidMarkSpec extends ICommonSpec {\n /**\n * 波浪的变化状态,范围为 [0, 1]\n */\n wave?: number;\n}\n\nexport interface ILiquidOutlineSpec extends ISymbolMarkSpec {\n /**\n * 描边的宽度\n */\n lineWidth: number;\n}\n\nexport interface IOutlierMarkSpec {\n /**\n * 异常点填充颜色\n */\n fill?: string;\n /**\n * 异常点大小\n */\n size?: number;\n}\n\nexport interface IPathMarkSpec extends IFillMarkSpec {\n path?: string;\n // TODO: 该属性后续可能会删除,未定\n /**\n * 平滑缩放,不然会发生跳变,在地图交互场景需要配置为true;常规path缩放不需要\n */\n smoothScale?: boolean;\n}\n\nexport interface ILinkPathMarkSpec extends IFillMarkSpec {\n /**\n * 连边起点的x坐标\n */\n x0?: number;\n /**\n * 连边起点的y坐标\n */\n y0?: number;\n /**\n * 连边终点的x坐标\n */\n x1?: number;\n /**\n * 连边终点的y坐标\n */\n y1?: number;\n /**\n * 连边的厚度,也可以理解为宽度\n */\n thickness?: number;\n /**\n * 连边的曲度,决定了连边的弯曲程度,取值范围为0-1,\n * 0表示不弯曲,也就是直线\n * 1表示最大的弯曲度,\n * 默认值为0.5\n */\n curvature?: number;\n /** round all the coordinates */\n round?: boolean;\n /** the ratio of normal style path */\n ratio?: number;\n /**\n * 对齐方式\n */\n align?: 'start' | 'end' | 'center';\n /**\n * 连边的类型\n *\n */\n pathType?: 'line' | 'smooth' | 'polyline';\n /**\n * 是否展示终点的箭头\n */\n endArrow?: boolean;\n /**\n * 是否展示起点的箭头\n */\n startArrow?: boolean;\n /**\n * 背景线的样式,主要用于部分高亮的场景\n */\n backgroundStyle?: any;\n /**\n * 连边的方向\n */\n direction?: 'horizontal' | 'vertical' | 'LR' | 'RL' | 'TB' | 'BL' | 'radial';\n}\n\n/**\n * arc图元的视觉通道配置\n */\nexport interface IArcMarkSpec extends IFillMarkSpec {\n /**\n * 圆弧的开始角度\n */\n startAngle?: number;\n /**\n * 圆弧的结束角度\n */\n endAngle?: number;\n /**\n * 间隙角度;间隔角度会转换为一个在两个相邻的弧之间的确定的线性距离,定义为 padRadius * | padAngle |\n * 这个距离在弧的开始和结束处都是相等的;\n * 间隔角度通常只应用于环形扇区(即当内半径大于 0)\n */\n padAngle?: number;\n\n /**\n * 外径,既外半径\n */\n outerRadius?: number;\n /**\n * 内径,既内半径\n */\n innerRadius?: number;\n /**\n * 圆角\n */\n cornerRadius?: number;\n /**\n * 内边距\n */\n innerPadding?: number;\n /**\n * 外边距\n */\n outerPadding?: number;\n /**\n * arc的中心点偏移距离,一般是通过在交互状态下设置这个属性来实现将扇区移出中心的一个效果\n */\n centerOffset?: number;\n /**\n * arc 的 roundCap 属性,即圆角是否伸出 startAngle 和 endAngle 之外\n */\n cap?: boolean | [boolean, boolean];\n /**\n * arc 在 roundCap 打开且应用环形渐变时是否对 cap 部分生效\n */\n autoCapConical?: boolean;\n}\n\nexport interface ICellMarkSpec extends ISymbolMarkSpec {\n /**\n * 内边距\n */\n padding?: number | number[] | IPadding;\n}\n\nexport interface IGroupMarkSpec extends IFillMarkSpec {\n /**\n * 是否开启裁剪\n */\n clip?: boolean;\n /**\n * 宽度\n */\n width?: number;\n /**\n * 高度\n */\n height?: number;\n /**\n * 圆角配置。\n * 1. 如果传入数值,则统一为四个角设置圆角\n * 2. 如果传入数组,则分别为 [上左, 上右, 下右, 下左]\n */\n cornerRadius?: number | number[];\n}\n\nexport interface IPolygonMarkSpec extends ICommonSpec, IFillMarkSpec {\n /**\n * 顶点坐标\n */\n points?: IPoint[];\n /**\n * 圆角配置,支持数组配置,数组的顺序同组成 polygon 的顺序对应\n */\n cornerRadius?: number | number[];\n /**\n * x方向的缩放比例,默认为1,即不进行缩放\n */\n scaleX?: number;\n /**\n * y方向的缩放比例,默认为1,即不进行缩放\n */\n scaleY?: number;\n}\n\n/**\n * ImageFill\n */\nexport type RepeatType = 'no-repeat' | 'repeat-x' | 'repeat-y' | 'repeat';\nexport type RepeatXYType = 'no-repeat' | 'repeat' | 'stretch';\nexport type ImageOriginType = 'top' | 'bottom';\n\n/**\n * gradient\n */\nexport type GradientPropValue<T> = ValueType<T> | FunctionType<T>;\nexport type GradientStop = {\n /**\n * 渐变色的偏移量,0-1的值\n */\n offset: GradientPropValue<number>;\n /**\n * 渐变色的颜色\n */\n color?: GradientPropValue<string>;\n /**\n * 渐变色的透明度\n */\n opacity?: number;\n};\nexport interface IGradientLinear {\n /**\n * 渐变色的起点x坐标,0-1的值,相对于图形包围盒x方向取值的比例值\n */\n x0?: GradientPropValue<number>;\n /**\n * 渐变色的起点y坐标,0-1的值,相对于图形包围盒y方向取值的比例值\n */\n y0?: GradientPropValue<number>;\n /**\n * 渐变色的终点x坐标,0-1的值,相对于图形包围盒x方向取值的比例值\n */\n x1?: GradientPropValue<number>;\n /**\n * 渐变色的终点y坐标,0-1的值,相对于图形包围盒y方向取值的比例值\n */\n y1?: GradientPropValue<number>;\n /**\n * 渐变色的颜色\n */\n stops: GradientStop[];\n /**\n * 渐变色的类型设置为 'linear',即线形渐变\n */\n gradient: 'linear';\n}\n\nexport interface IGradientRadial {\n /**\n * 径向渐变的起点的半径\n */\n r0?: GradientPropValue<number>;\n /**\n * 径向渐变的起点的x坐标\n */\n x0?: GradientPropValue<number>;\n /**\n * 径向渐变的起点的y坐标\n */\n y0?: GradientPropValue<number>;\n /**\n * 径向渐变的终点的x坐标\n */\n x1?: GradientPropValue<number>;\n /**\n * 径向渐变的终点的y坐标\n */\n y1?: GradientPropValue<number>;\n /**\n * 径向渐变的终点的半径\n */\n r1?: GradientPropValue<number>;\n /**\n * 渐变色的颜色\n */\n stops: GradientStop[];\n /**\n * 渐变色的类型设置为 'radial',即径向渐变\n */\n gradient: 'radial';\n}\n\nexport interface IGradientConical {\n /**\n * 锥形渐变的中心点x坐标\n */\n x?: GradientPropValue<number>;\n /**\n * 锥形渐变的中心点y坐标\n */\n y?: GradientPropValue<number>;\n /**\n * 锥形渐变的开始角度\n */\n startAngle?: GradientPropValue<number>;\n /**\n * 锥形渐变的结束角度\n */\n endAngle?: GradientPropValue<number>;\n /**\n * 锥形渐变的颜色\n */\n stops: GradientStop[];\n /**\n * 渐变色的类型设置为 'conical',即锥形渐变\n */\n gradient: 'conical';\n}\n\nexport type GradientType = 'linear' | 'radial' | 'conical';\nexport type IGradient = IGradientLinear | IGradientRadial | IGradientConical;\n\nexport type LineStrokeCap = 'butt' | 'round' | 'square';\nexport type LineStrokeJoin = 'arcs' | 'bevel' | 'miter' | 'miter-clip' | 'round';\n\nexport type BoxPlotShaftShape = 'line' | 'bar' | 'filled-line';\n/**\n * threshold\n */\nexport interface IThresholdStyle extends IVisualSpecStyle<number, string> {\n domain: number[];\n field: string;\n range: string[];\n type: 'threshold';\n}\n\n// FIXME: For some tool methods that need to use common configuration types\nexport interface IUnknownMarkSpec extends ICommonSpec {\n [key: string]: unknown;\n}\n\nexport interface IImageMarkSpec extends IFillMarkSpec {\n /**\n * 圆角配置。\n * 1. 如果传入数值,则统一为四个角设置圆角\n * 2. 如果传入数组,则分别为 [上左, 上右, 下右, 下左]\n */\n cornerRadius?: number | number[];\n /**\n * 图片的宽度\n */\n width?: number;\n /**\n * 图片的高度\n */\n height?: number;\n /**\n * 当图片的宽度小于 width 时,图片的重复方式\n */\n repeatX?: IRepeatType;\n /**\n * 当图片的高度小于 height 时,图片的重复方式\n */\n repeatY?: IRepeatType;\n /**\n * 设置图片的内容,支持三种类型:\n * 1. string类型,可以是图片资源的路径或者是svg 标签字符串\n * 2. image 元素\n * 3. canvas 元素\n */\n image?: string | HTMLImageElement | HTMLCanvasElement;\n}\n\n/**\n * text\n */\nexport type TextAlign = TextAlignType;\nexport type TextBaseLine = TextBaselineType;\nexport type FontStyle = 'normal' | 'italic' | 'oblique' | string;\nexport type FontWeight = 'normal' | 'bold' | 'lighter' | 'bolder' | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;\n"]}
1
+ {"version":3,"sources":["../src/typings/visual.ts"],"names":[],"mappings":"","file":"visual.js","sourcesContent":["import type { PopTipAttributes } from '@visactor/vrender-components';\nimport type { DataView } from '@visactor/vdataset';\nimport type { Cursor } from './cursor';\nimport type { InterpolateType } from './interpolate';\nimport type { ScaleType } from './scale';\nimport type { ShapeType } from './shape';\nimport type { IPoint } from './coordinate';\nimport type { IModelMarkAttributeContext } from '../compile/mark/interface';\nimport type { Datum } from './common';\nimport type { IPadding } from '@visactor/vutils';\nimport type { IColorKey } from '../theme/color-scheme/interface';\nimport type { ITokenKey } from '../theme/token/interface';\nimport type {\n IRepeatType,\n TextAlignType,\n TextBaselineType,\n IRichTextAttribute,\n IGraphicStyle,\n IColor\n} from '@visactor/vrender-core';\n\n// 基础的visual 对应 scale 的属性\nexport interface IVisualSpecBase<D, T> {\n /**\n * type of scale\n */\n type: ScaleType;\n /**\n * will set to scale.domain, it means input of scale\n */\n domain: D[];\n /**\n * will set to scale.range, it means output of scale\n */\n range: T[];\n /**\n * will set to scale.specified if scale support, as a key-value pair matching capability\n * @since 1.1.0\n */\n specified?: { [key: string]: unknown };\n /**\n * enable clamp in linear scale\n * If clamp is enabled, the return value of the scale is always within the scale’s range.\n * @since 1.13.6\n * @default false\n */\n clamp?: boolean;\n}\n// 用来给用户进行mark.style上的映射配置。所以要配置数据维度\nexport interface IVisualSpecStyle<D, T> extends IVisualSpecBase<D, T> {\n /**\n * 指定映射对应的数据字段\n */\n field?: string;\n}\n\nexport type IDataDomainSpec = {\n /**\n * 数据的id\n */\n dataId: string;\n /**\n * 数据字段\n */\n fields: string[];\n};\n\n// 用来提供给用户进行 scale 配置 所以名字是必选的 对用户配置\nexport interface IVisualSpecScale<D, T> extends Omit<IVisualSpecBase<D, T>, 'domain'> {\n /**\n * scale 的id\n */\n id: string;\n /**\n * 定义域范围\n */\n domain:\n | IVisualSpecBase<D, T>['domain']\n // 使用数据的字段值,如果 scale 是连续的,就取区间,如果是离散的就使用 values 。\n // 不考虑图表内的交互等数据筛选,这里只用原始数据的统计信息\n | IDataDomainSpec[];\n}\n// 对用户配置\nexport type IVisual<D = any, R = any> = IVisualSpecStyle<D, R> | IVisualScale;\n\nexport interface IVisualScale {\n /**\n * 对应 IVisualSpecScale 的用户配置 scale-id\n */\n scale: string;\n /**\n * 指定参与映射的数据字段\n */\n field?: string;\n /**\n * 当用户指定 field 后,用该属性来控制值域。\n * @default 'none'\n */\n changeDomain?: 'none' | 'replace' | 'expand';\n}\n\nexport type FunctionType<T> = (datum: Datum, context: IModelMarkAttributeContext, source?: DataView) => T;\nexport type ValueType<T> = T;\nexport type VisualType<T> = ValueType<T> | FunctionType<T> | IVisual<unknown, T>;\n\nexport type TextureType =\n | 'circle'\n | 'dimond'\n | 'rect'\n | 'vertical-line'\n | 'horizontal-line'\n | 'bias-lr'\n | 'bias-rl'\n | 'grid';\n\n/**\n * style格式转换\n */\nexport type ConvertToMarkStyleSpec<T extends Record<string, any>> = {\n [key in keyof T]: VisualType<T[key]>;\n};\n\n/**\n * border\n */\nexport interface IBorder {\n /**\n * 边框离图形边缘的距离\n */\n distance: number | string;\n /**\n * 边框的颜色\n */\n stroke?: string | IGradient;\n /**\n * 边框的透明度\n */\n strokeOpacity?: number;\n /**\n * 边框线的宽度\n */\n lineWidth?: number;\n /**\n * 给边框配置虚线模式。它使用一组值来指定描述模式的线和间隙的交替长度\n */\n lineDash?: number[];\n /**\n * 设置边框的虚线偏移量\n */\n lineDashOffset?: number;\n}\n\nexport interface ICommonSpec {\n /**\n * 图形是否可见\n */\n visible?: boolean;\n /**\n * 图形的x坐标\n */\n x?: number;\n /**\n * 图形的y坐标\n */\n y?: number;\n /**\n * 图形的z坐标,仅适用于3D图表\n */\n z?: number;\n /**\n * 图形的描边颜色。\n * 支持使用 'rgb(255,255,255)','rgba(255,255,255,1)','#fff' 等方式设置为纯色,也支持设置为渐变色描边\n * @todo 隔离主题和 spec 配置\n * IColorKey 类型只适用于主题\n */\n stroke?: string | IGradient | false | (number | boolean)[] | IColorKey | null;\n /**\n * 描边透明度\n */\n strokeOpacity?: number;\n /**\n * 图形的透明度,既影响描边也影响填充\n */\n opacity?: number;\n /**\n * 图形的描边宽度\n */\n lineWidth?: number;\n /**\n * 给描边配置虚线模式。它使用一组值来指定描述模式的线和间隙的交替长度\n */\n lineDash?: number[];\n /**\n * 设置虚线偏移量的属性\n */\n lineDashOffset?: number;\n /**\n * 设置图形的鼠标样式\n */\n cursor?: Cursor;\n /**\n * 设置图形的层级,主意这个是相对层级,图形引擎绘制的时候,会对相同group下的所有图形根据zIndex进行排序,然后从小到大进行渲染\n */\n zIndex?: number;\n /**\n * 图形的旋转角度\n */\n angle?: number;\n /**\n * 基于AABB的锚点位置,用于简单的定位某些path的位置\n */\n anchor?: [number, number];\n\n /**\n * x方向的缩放比例,默认为1,即不进行缩放\n */\n scaleX?: number;\n /**\n * y方向的缩放比例,默认为1,即不进行缩放\n */\n scaleY?: number;\n /**\n * 图形缩放中心\n * @since 1.4.0\n * 可以配置固定坐标,例如 [100, 100];或者百分比坐标,例如 ['50%', '50%'],代表以图元中心为缩放中心\n * */\n scaleCenter?: [number | string, number | string];\n\n // 3d旋转的属性\n /**\n * x方向的旋转角度\n */\n alpha?: number;\n /**\n * y方向的旋转角度\n */\n beta?: number;\n /**\n * 3d的锚点位置\n */\n anchor3d?: [number, number];\n\n /**\n * 选择模式,精确模式,粗糙模式(包围盒模式),自定义模式\n */\n pickMode?: 'accurate' | 'imprecise' | 'custom';\n /**\n * bounds的计算模式\n */\n boundsMode?: 'accurate' | 'imprecise';\n\n /**\n * 用于扩展描边的拾取范围,为 0 就是默认线宽,正数就加宽,负数就减宽\n * @default 0\n * @since 1.7.3\n */\n pickStrokeBuffer?: number;\n\n // 以下是纹理相关的属性\n /**\n * 纹理的类型\n */\n texture?: TextureType | string;\n /**\n * 纹理的颜色\n */\n textureColor?: string;\n /**\n * 纹理单元的大小\n */\n textureSize?: number; // 纹理大小\n /**\n * 纹理之间空隙的大小\n */\n texturePadding?: number;\n\n /**\n * 外边框,外描边,描边位于图形外侧\n */\n outerBorder?: IBorder;\n /**\n * 内边框,内描边,描边位于图形内侧\n */\n innerBorder?: IBorder;\n /**\n * html 浮层,会将配置的html相关内容,绝对定位到图元的位置\n * @experimental\n * @since 1.10.0\n */\n html?: IMarkHtmlSpec;\n\n [key: string]: any;\n}\n\nexport interface IFillMarkSpec extends ICommonSpec {\n /**\n * 图形的填充颜色\n * @todo 隔离主题和 spec 配置\n * IColorKey 类型只适用于主题\n */\n fill?: VisualType<string> | IGradient | false | IColorKey;\n /**\n * 填充的透明度\n */\n fillOpacity?: number;\n\n /**\n * 图形的背景色,支持纯色、image元素、canvas元素\n */\n background?: IColor | HTMLImageElement | HTMLCanvasElement | null;\n}\n\nexport type IMarkHtmlSpec = Partial<IGraphicStyle['html']>;\n\nexport interface ISymbolMarkSpec extends IFillMarkSpec {\n /**\n * x方向的偏移量\n */\n dx?: number;\n /**\n * y方向的偏移量\n */\n dy?: number;\n /**\n * 大小,相当于外接圆的半径\n */\n size?: number | number[];\n /** 对外声明使用shape,vrender图形属性对应的是shape */\n shape?: ShapeType | string;\n /**\n * 标记的类型\n * FIXME: vrender Symbol接收的图形属性,暂时都申明一下\n * */\n symbolType?: ShapeType | string;\n /**\n * x方向的缩放比例,默认为1,即不进行缩放\n */\n scaleX?: number;\n /**\n * y方向的缩放比例,默认为1,即不进行缩放\n */\n scaleY?: number;\n}\n\n// lineMark 和 areaMark 共同配置\nexport interface ILineLikeMarkSpec extends IFillMarkSpec {\n /**\n * 取消的差值类型,默认为线性插值,也就是普通的折线\n */\n curveType?: InterpolateType;\n /**\n * 设置点是否有效,也就是是否合法\n */\n defined?: boolean;\n}\n\nexport interface IAreaMarkSpec extends ILineLikeMarkSpec {\n /**\n * 面积的x1值\n */\n x1?: number;\n /**\n * 面积的y1值\n */\n y1?: number;\n /**\n * 面积图元的方向,\n * horizontal - 水平方向\n * vertical - 垂直方向\n */\n orient?: 'horizontal' | 'vertical';\n}\n\nexport interface ILineMarkSpec extends ILineLikeMarkSpec {\n /**\n * 指定如何绘制每一条线段末端的属性。有 3 个可能的值,分别是:'butt', 'round' and 'square'。默认值是 butt。\n */\n lineCap?: LineStrokeCap;\n /**\n * 用来设置 2 个长度不为 0 的相连部分(线段、圆弧、曲线)如何连接在一起的属性(长度为 0 的变形部分,其指定的末端和控制点在同一位置,会被忽略)。此属性有 3 个值: 'round', 'bevel' and 'miter'。默认值是 'miter'\n */\n lineJoin?: LineStrokeJoin;\n /**\n * 设置斜接面限制比例的属性。当获取属性值时,会返回当前的值(默认值是 10.0 )。当给属性赋值时,0、负数、 Infinity 和 NaN 都会被忽略;除此之外都会被赋予一个新值。\n */\n miterLimit?: number;\n /**\n * stroke 的有界缓冲区\n */\n strokeBoundsBuffer?: number;\n}\n\nexport interface IRuleMarkSpec extends ILineMarkSpec {\n /**\n * 终点x坐标\n */\n x1?: number;\n /**\n * 终点y坐标\n */\n y1?: number;\n}\n\nexport interface ITextMarkSpec extends IFillMarkSpec {\n /**\n * 文字内容\n */\n text?: string | number | string[] | number[];\n /**\n * x 方向偏移\n */\n dx?: number;\n /**\n * y 方向偏移\n */\n dy?: number;\n /**\n * 字号\n */\n fontSize?: number | ITokenKey;\n /**\n * 文字水平方向的对齐方式\n */\n textAlign?: TextAlign;\n /**\n * 文字竖直方向的对齐方式\n */\n textBaseline?: TextBaseLine;\n /**\n * 字体\n */\n fontFamily?: string;\n /**\n * 字重\n */\n fontWeight?: FontWeight;\n /**\n * 字体样式,是否为斜体等\n */\n fontStyle?: FontStyle;\n /**\n * 文字的最大长度\n */\n maxLineWidth?: number;\n /**\n * 文字超出 maxLineWidth 后的省略符\n */\n ellipsis?: string;\n /**\n * 文本省略的位置,默认尾部省略\n * 1. 'start' 文字首部省略\n * 2. 'middle' 文本中间省略\n * 3. 'end' 文本尾部省略\n * @default 'end'\n * @since 1.7.3\n */\n suffixPosition?: 'start' | 'end' | 'middle';\n /**\n * 下划线\n */\n underline?: boolean;\n /**\n * 下划线的虚线样式\n */\n underlineDash?: number[];\n /**\n * 下划线的虚线偏移量\n */\n underlineOffset?: number;\n /**\n * 中划线\n */\n lineThrough?: boolean;\n /**\n * 行高(1.3.1 版本新增字符串类型表示比例值,如\"150%\")\n * @since 1.3.1\n */\n lineHeight?: number | string | ITokenKey;\n /**\n * poptip 相关配置\n */\n poptip?: PopTipAttributes;\n /**\n * 文本的排布方向,如果需要文本纵向排布,可以配置为 'vertical'\n * @default 'horizontal'\n */\n direction?: 'horizontal' | 'vertical';\n /*\n * 单词断行\n */\n wordBreak?: 'break-word' | 'break-all' | 'keep-all';\n /**\n * 高度限制控制显示内容及省略号\n */\n heightLimit?: number;\n /**\n * 按照行数限制显示内容及省略号\n */\n lineClamp?: number;\n /**\n * 设置如何处理空白字符\n */\n whiteSpace?: 'normal' | 'no-wrap';\n}\n\nexport type IRichTextMarkSpec = IRichTextAttribute &\n IFillMarkSpec & { type: 'rich'; text: IRichTextAttribute['textConfig'] };\n\nexport type IComposedTextMarkSpec = ITextMarkSpec | IRichTextMarkSpec;\n\nexport type IPositionedTextMarkSpec = Omit<ITextMarkSpec, 'align' | 'textAlign' | 'baseline' | 'textBaseline'>;\n\nexport interface IRectMarkSpec extends IFillMarkSpec {\n /**\n * 圆角配置。\n * 1. 如果传入数值,则统一为四个角设置圆角\n * 2. 如果传入数组,则分别为 [上左, 上右, 下右, 下左]\n */\n cornerRadius?: number | number[];\n /**\n * 宽度\n */\n width?: number;\n /**\n * 高度\n */\n height?: number;\n /**\n * x方向终点坐标\n */\n x1?: number;\n /**\n * y方向终点坐标\n */\n\n y1?: number;\n}\n\nexport interface IBoxPlotMarkSpec extends ICommonSpec {\n // ============ 数据统计值配置 ============\n /**\n * 最小值(箱线图的下限)\n * 用于计算箱线图的下端须线位置\n */\n min?: (datum: Datum) => number;\n /**\n * 第一四分位数(Q1,25%分位数)\n * 用于确定箱体的下边界\n */\n q1?: (datum: Datum) => number;\n /**\n * 中位数(Q2,50%分位数)\n * 在箱体中绘制中位数线\n */\n median?: (datum: Datum) => number;\n /**\n * 第三四分位数(Q3,75%分位数)\n * 用于确定箱体的上边界\n */\n q3?: (datum: Datum) => number;\n /**\n * 最大值(箱线图的上限)\n * 用于计算箱线图的上端须线位置\n */\n max?: (datum: Datum) => number;\n\n // ============ 样式形态配置 ============\n /**\n * 中轴线(须线)的绘制形状\n * - 'line': 标准线条形式,绘制 shaft(连接线)、box(箱体)、max/min/median(线条)五个子图元\n * - 'bar': 柱状形式,绘制 minMaxBox(最小-最大值矩形)、q1q3Box(Q1-Q3矩形)、median(中位数线)三个子图元\n * - 'filled-line': 填充线条形式\n * @default 'line'\n */\n shaftShape?: BoxPlotShaftShape;\n\n // ============ 尺寸配置(shaftShape = 'line' / 'filled-line' 模式)============\n /**\n * 箱体的宽度(垂直箱线图)或高度(水平箱线图)\n * 在 shaftShape = 'line' / 'filled-line' 模式下,控制 box 子图元的尺寸\n * 支持像素值或百分比字符串(相对于分组宽度)\n * @default 30\n */\n boxWidth?: number | string;\n /**\n * 箱体的高度(垂直箱线图)或宽度(水平箱线图)\n * 在 shaftShape = 'line' / 'filled-line' 模式下使用\n */\n boxHeight?: number | string;\n /**\n * 最大/最小值须线的宽度(垂直箱线图)或高度(水平箱线图)\n * 在 shaftShape = 'line' / 'filled-line' 模式下,控制 max/min 子图元的线条长度\n * 支持像素值或百分比字符串\n * @default 20\n */\n shaftWidth?: number | string;\n /**\n * 最大/最小值须线端点的宽度(垂直箱线图)或高度(水平箱线图)\n * 在 shaftShape = 'line' / 'filled-line' 模式下使用\n */\n ruleWidth?: number | string;\n /**\n * 最大/最小值须线端点的高度(垂直箱线图)或宽度(水平箱线图)\n * 在 shaftShape = 'line' / 'filled-line' 模式下使用\n */\n ruleHeight?: number | string;\n\n // ============ 尺寸配置(shaftShape = 'bar' 模式)============\n /**\n * 最小-最大值矩形的宽度(垂直箱线图)或高度(水平箱线图)\n * 在 shaftShape = 'bar' 模式下,控制 minMaxBox 子图元的尺寸\n */\n minMaxWidth?: number | string;\n /**\n * 最小-最大值矩形的高度(垂直箱线图)或宽度(水平箱线图)\n * 在 shaftShape = 'bar' 模式下使用\n */\n minMaxHeight?: number | string;\n /**\n * Q1-Q3 四分位数矩形的宽度(垂直箱线图)或高度(水平箱线图)\n * 在 shaftShape = 'bar' 模式下,控制 q1q3Box 子图元的尺寸\n */\n q1q3Width?: number | string;\n /**\n * Q1-Q3 四分位数矩形的高度(垂直箱线图)或宽度(水平箱线图)\n * 在 shaftShape = 'bar' 模式下使用\n */\n q1q3Height?: number | string;\n\n // ============ 样式配置 ============\n /**\n * 箱线图的描边宽度\n * 在 shaftShape = 'line' / 'filled-line' 模式下影响所有线条的宽度\n * 在 shaftShape = 'bar' 模式下,minMaxBox 和 q1q3Box 的 lineWidth 会被强制设为 0\n * @default 2\n */\n lineWidth?: number;\n /**\n * 最小-最大值矩形的填充透明度\n * 仅在 shaftShape = 'bar' 模式下生效,控制 minMaxBox 子图元的 fillOpacity\n */\n minMaxFillOpacity?: number;\n /**\n * 箱体的描边颜色\n * 在 shaftShape = 'line' / 'filled-line' 模式下,控制 box 子图元的 stroke 属性\n * @since 2.0.11\n */\n boxStroke?: string;\n /**\n * 中位数线的描边颜色\n * 在 shaftShape = 'line' / 'filled-line' 模式下,控制 median 子图元的 stroke 属性\n * @since 2.0.11\n */\n medianStroke?: string;\n /**\n * 箱体的圆角半径\n * 在 shaftShape = 'line' / 'filled-line' 模式下,控制 box 子图元的 cornerRadius 属性\n * @since 2.0.11\n */\n boxCornerRadius?: number;\n}\n\nexport interface IRippleMarkSpec extends ICommonSpec {\n /**\n * 波纹密度ripple\n * ripple 取值范为[0,1]\n */\n ripple?: number;\n /**\n * 水波纹最大半径\n */\n size?: number;\n}\n\nexport interface ILiquidMarkSpec extends ICommonSpec {\n /**\n * 波浪的变化状态,范围为 [0, 1]\n */\n wave?: number;\n}\n\nexport interface ILiquidOutlineSpec extends ISymbolMarkSpec {\n /**\n * 描边的宽度\n */\n lineWidth: number;\n}\n\nexport interface IOutlierMarkSpec {\n /**\n * 异常点填充颜色\n */\n fill?: string;\n /**\n * 异常点大小\n */\n size?: number;\n}\n\nexport interface IPathMarkSpec extends IFillMarkSpec {\n path?: string;\n // TODO: 该属性后续可能会删除,未定\n /**\n * 平滑缩放,不然会发生跳变,在地图交互场景需要配置为true;常规path缩放不需要\n */\n smoothScale?: boolean;\n}\n\nexport interface ILinkPathMarkSpec extends IFillMarkSpec {\n /**\n * 连边起点的x坐标\n */\n x0?: number;\n /**\n * 连边起点的y坐标\n */\n y0?: number;\n /**\n * 连边终点的x坐标\n */\n x1?: number;\n /**\n * 连边终点的y坐标\n */\n y1?: number;\n /**\n * 连边的厚度,也可以理解为宽度\n */\n thickness?: number;\n /**\n * 连边的曲度,决定了连边的弯曲程度,取值范围为0-1,\n * 0表示不弯曲,也就是直线\n * 1表示最大的弯曲度,\n * 默认值为0.5\n */\n curvature?: number;\n /** round all the coordinates */\n round?: boolean;\n /** the ratio of normal style path */\n ratio?: number;\n /**\n * 对齐方式\n */\n align?: 'start' | 'end' | 'center';\n /**\n * 连边的类型\n *\n */\n pathType?: 'line' | 'smooth' | 'polyline';\n /**\n * 是否展示终点的箭头\n */\n endArrow?: boolean;\n /**\n * 是否展示起点的箭头\n */\n startArrow?: boolean;\n /**\n * 背景线的样式,主要用于部分高亮的场景\n */\n backgroundStyle?: any;\n /**\n * 连边的方向\n */\n direction?: 'horizontal' | 'vertical' | 'LR' | 'RL' | 'TB' | 'BL' | 'radial';\n}\n\n/**\n * arc图元的视觉通道配置\n */\nexport interface IArcMarkSpec extends IFillMarkSpec {\n /**\n * 圆弧的开始角度\n */\n startAngle?: number;\n /**\n * 圆弧的结束角度\n */\n endAngle?: number;\n /**\n * 间隙角度;间隔角度会转换为一个在两个相邻的弧之间的确定的线性距离,定义为 padRadius * | padAngle |\n * 这个距离在弧的开始和结束处都是相等的;\n * 间隔角度通常只应用于环形扇区(即当内半径大于 0)\n */\n padAngle?: number;\n\n /**\n * 外径,既外半径\n */\n outerRadius?: number;\n /**\n * 内径,既内半径\n */\n innerRadius?: number;\n /**\n * 圆角\n */\n cornerRadius?: number;\n /**\n * 内边距\n */\n innerPadding?: number;\n /**\n * 外边距\n */\n outerPadding?: number;\n /**\n * arc的中心点偏移距离,一般是通过在交互状态下设置这个属性来实现将扇区移出中心的一个效果\n */\n centerOffset?: number;\n /**\n * arc 的 roundCap 属性,即圆角是否伸出 startAngle 和 endAngle 之外\n */\n cap?: boolean | [boolean, boolean];\n /**\n * arc 在 roundCap 打开且应用环形渐变时是否对 cap 部分生效\n */\n autoCapConical?: boolean;\n}\n\nexport interface ICellMarkSpec extends ISymbolMarkSpec {\n /**\n * 内边距\n */\n padding?: number | number[] | IPadding;\n}\n\nexport interface IGroupMarkSpec extends IFillMarkSpec {\n /**\n * 是否开启裁剪\n */\n clip?: boolean;\n /**\n * 宽度\n */\n width?: number;\n /**\n * 高度\n */\n height?: number;\n /**\n * 圆角配置。\n * 1. 如果传入数值,则统一为四个角设置圆角\n * 2. 如果传入数组,则分别为 [上左, 上右, 下右, 下左]\n */\n cornerRadius?: number | number[];\n}\n\nexport interface IPolygonMarkSpec extends ICommonSpec, IFillMarkSpec {\n /**\n * 顶点坐标\n */\n points?: IPoint[];\n /**\n * 圆角配置,支持数组配置,数组的顺序同组成 polygon 的顺序对应\n */\n cornerRadius?: number | number[];\n /**\n * x方向的缩放比例,默认为1,即不进行缩放\n */\n scaleX?: number;\n /**\n * y方向的缩放比例,默认为1,即不进行缩放\n */\n scaleY?: number;\n}\n\n/**\n * ImageFill\n */\nexport type RepeatType = 'no-repeat' | 'repeat-x' | 'repeat-y' | 'repeat';\nexport type RepeatXYType = 'no-repeat' | 'repeat' | 'stretch';\nexport type ImageOriginType = 'top' | 'bottom';\n\n/**\n * gradient\n */\nexport type GradientPropValue<T> = ValueType<T> | FunctionType<T>;\nexport type GradientStop = {\n /**\n * 渐变色的偏移量,0-1的值\n */\n offset: GradientPropValue<number>;\n /**\n * 渐变色的颜色\n */\n color?: GradientPropValue<string>;\n /**\n * 渐变色的透明度\n */\n opacity?: number;\n};\nexport interface IGradientLinear {\n /**\n * 渐变色的起点x坐标,0-1的值,相对于图形包围盒x方向取值的比例值\n */\n x0?: GradientPropValue<number>;\n /**\n * 渐变色的起点y坐标,0-1的值,相对于图形包围盒y方向取值的比例值\n */\n y0?: GradientPropValue<number>;\n /**\n * 渐变色的终点x坐标,0-1的值,相对于图形包围盒x方向取值的比例值\n */\n x1?: GradientPropValue<number>;\n /**\n * 渐变色的终点y坐标,0-1的值,相对于图形包围盒y方向取值的比例值\n */\n y1?: GradientPropValue<number>;\n /**\n * 渐变色的颜色\n */\n stops: GradientStop[];\n /**\n * 渐变色的类型设置为 'linear',即线形渐变\n */\n gradient: 'linear';\n}\n\nexport interface IGradientRadial {\n /**\n * 径向渐变的起点的半径\n */\n r0?: GradientPropValue<number>;\n /**\n * 径向渐变的起点的x坐标\n */\n x0?: GradientPropValue<number>;\n /**\n * 径向渐变的起点的y坐标\n */\n y0?: GradientPropValue<number>;\n /**\n * 径向渐变的终点的x坐标\n */\n x1?: GradientPropValue<number>;\n /**\n * 径向渐变的终点的y坐标\n */\n y1?: GradientPropValue<number>;\n /**\n * 径向渐变的终点的半径\n */\n r1?: GradientPropValue<number>;\n /**\n * 渐变色的颜色\n */\n stops: GradientStop[];\n /**\n * 渐变色的类型设置为 'radial',即径向渐变\n */\n gradient: 'radial';\n}\n\nexport interface IGradientConical {\n /**\n * 锥形渐变的中心点x坐标\n */\n x?: GradientPropValue<number>;\n /**\n * 锥形渐变的中心点y坐标\n */\n y?: GradientPropValue<number>;\n /**\n * 锥形渐变的开始角度\n */\n startAngle?: GradientPropValue<number>;\n /**\n * 锥形渐变的结束角度\n */\n endAngle?: GradientPropValue<number>;\n /**\n * 锥形渐变的颜色\n */\n stops: GradientStop[];\n /**\n * 渐变色的类型设置为 'conical',即锥形渐变\n */\n gradient: 'conical';\n}\n\nexport type GradientType = 'linear' | 'radial' | 'conical';\nexport type IGradient = IGradientLinear | IGradientRadial | IGradientConical;\n\nexport type LineStrokeCap = 'butt' | 'round' | 'square';\nexport type LineStrokeJoin = 'arcs' | 'bevel' | 'miter' | 'miter-clip' | 'round';\n\nexport type BoxPlotShaftShape = 'line' | 'bar' | 'filled-line';\n/**\n * threshold\n */\nexport interface IThresholdStyle extends IVisualSpecStyle<number, string> {\n domain: number[];\n field: string;\n range: string[];\n type: 'threshold';\n}\n\n// FIXME: For some tool methods that need to use common configuration types\nexport interface IUnknownMarkSpec extends ICommonSpec {\n [key: string]: unknown;\n}\n\nexport interface IImageMarkSpec extends IFillMarkSpec {\n /**\n * 圆角配置。\n * 1. 如果传入数值,则统一为四个角设置圆角\n * 2. 如果传入数组,则分别为 [上左, 上右, 下右, 下左]\n */\n cornerRadius?: number | number[];\n /**\n * 图片的宽度\n */\n width?: number;\n /**\n * 图片的高度\n */\n height?: number;\n /**\n * 当图片的宽度小于 width 时,图片的重复方式\n */\n repeatX?: IRepeatType;\n /**\n * 当图片的高度小于 height 时,图片的重复方式\n */\n repeatY?: IRepeatType;\n /**\n * 设置图片的内容,支持三种类型:\n * 1. string类型,可以是图片资源的路径或者是svg 标签字符串\n * 2. image 元素\n * 3. canvas 元素\n */\n image?: string | HTMLImageElement | HTMLCanvasElement;\n}\n\n/**\n * text\n */\nexport type TextAlign = TextAlignType;\nexport type TextBaseLine = TextBaselineType;\nexport type FontStyle = 'normal' | 'italic' | 'oblique' | string;\nexport type FontWeight = 'normal' | 'bold' | 'lighter' | 'bolder' | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visactor/vchart",
3
- "version": "2.0.11-alpha.8",
3
+ "version": "2.0.12-alpha.0",
4
4
  "description": "charts lib based @visactor/VGrammar",
5
5
  "main": "cjs/index.js",
6
6
  "module": "esm/index.js",
@@ -81,10 +81,10 @@
81
81
  "@size-limit/file": "9.0.0",
82
82
  "rimraf": "3.0.2",
83
83
  "cross-env": "^7.0.3",
84
- "@internal/typescript-json-schema": "0.0.1",
85
- "@internal/ts-config": "0.0.1",
84
+ "@internal/bundler": "0.0.1",
86
85
  "@internal/eslint-config": "0.0.1",
87
- "@internal/bundler": "0.0.1"
86
+ "@internal/ts-config": "0.0.1",
87
+ "@internal/typescript-json-schema": "0.0.1"
88
88
  },
89
89
  "dependencies": {
90
90
  "@visactor/vutils": "~1.0.12",
@@ -95,7 +95,7 @@
95
95
  "@visactor/vrender-kits": "~1.0.32",
96
96
  "@visactor/vrender-components": "~1.0.32",
97
97
  "@visactor/vrender-animate": "~1.0.32",
98
- "@visactor/vutils-extension": "2.0.11-alpha.8"
98
+ "@visactor/vutils-extension": "2.0.12-alpha.0"
99
99
  },
100
100
  "publishConfig": {
101
101
  "access": "public",