@visactor/vchart 1.13.9-alpha.1 → 1.13.9-alpha.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/es5/index.js +1 -1
- package/build/index.es.js +335 -337
- package/build/index.js +335 -336
- package/build/index.min.js +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/cjs/chart/base/base-chart.d.ts +8 -1
- package/cjs/chart/base/base-chart.js +33 -20
- package/cjs/chart/base/base-chart.js.map +1 -1
- package/cjs/chart/index.d.ts +1 -1
- package/cjs/chart/index.js.map +1 -1
- package/cjs/chart/interface/chart.d.ts +8 -1
- package/cjs/chart/interface/chart.js.map +1 -1
- package/cjs/chart/pictogram/interface.d.ts +1 -1
- package/cjs/chart/pictogram/interface.js.map +1 -1
- package/cjs/chart/sankey/sankey.js +21 -21
- package/cjs/chart/sankey/sankey.js.map +1 -1
- package/cjs/compile/mark/compilable-mark.d.ts +1 -0
- package/cjs/compile/mark/compilable-mark.js +3 -0
- package/cjs/compile/mark/compilable-mark.js.map +1 -1
- package/cjs/component/axis/base-axis.js +7 -2
- package/cjs/component/axis/base-axis.js.map +1 -1
- package/cjs/component/axis/interface/spec.d.ts +7 -2
- package/cjs/component/axis/interface/spec.js.map +1 -1
- package/cjs/component/data-zoom/data-zoom/interface.d.ts +2 -3
- package/cjs/component/data-zoom/data-zoom/interface.js.map +1 -1
- package/cjs/component/marker/mark-area/base-mark-area.js +17 -27
- package/cjs/component/marker/mark-area/base-mark-area.js.map +1 -1
- package/cjs/component/marker/mark-area/interface/theme.d.ts +3 -4
- package/cjs/component/marker/mark-area/interface/theme.js.map +1 -1
- package/cjs/component/marker/mark-line/base-mark-line.js +20 -31
- package/cjs/component/marker/mark-line/base-mark-line.js.map +1 -1
- package/cjs/component/marker/mark-line/cartesian-mark-line.js +19 -23
- package/cjs/component/marker/mark-line/cartesian-mark-line.js.map +1 -1
- package/cjs/component/marker/mark-line/interface/theme.d.ts +3 -4
- package/cjs/component/marker/mark-line/interface/theme.js.map +1 -1
- package/cjs/component/marker/mark-point/cartesian-mark-point.js +3 -1
- package/cjs/component/marker/mark-point/cartesian-mark-point.js.map +1 -1
- package/cjs/component/marker/utils.d.ts +12 -0
- package/cjs/component/marker/utils.js +22 -7
- package/cjs/component/marker/utils.js.map +1 -1
- package/cjs/constant/funnel.js +1 -2
- package/cjs/constant/sunburst.js +2 -1
- package/cjs/core/index.d.ts +1 -1
- package/cjs/core/index.js +1 -1
- package/cjs/core/index.js.map +1 -1
- package/cjs/core/interface.js +1 -2
- package/cjs/core/vchart.js +2 -1
- package/cjs/data/transforms/pictogram.d.ts +1 -9
- package/cjs/data/transforms/pictogram.js +3 -3
- package/cjs/data/transforms/pictogram.js.map +1 -1
- package/cjs/data/transforms/pie.js +1 -1
- package/cjs/data/transforms/pie.js.map +1 -1
- package/cjs/index-harmony-simple.js.map +1 -1
- package/cjs/index.d.ts +1 -0
- package/cjs/index.js +8 -7
- package/cjs/index.js.map +1 -1
- package/cjs/model/base-model.d.ts +1 -0
- package/cjs/model/base-model.js +6 -0
- package/cjs/model/base-model.js.map +1 -1
- package/cjs/series/bar/bar.js.map +1 -1
- package/cjs/series/pictogram/tooltip-helper.d.ts +2 -2
- package/cjs/series/pictogram/tooltip-helper.js.map +1 -1
- package/cjs/series/pie/pie.js +3 -3
- package/cjs/series/pie/pie.js.map +1 -1
- package/cjs/typings/visual.d.ts +1 -1
- package/cjs/typings/visual.js.map +1 -1
- package/esm/chart/base/base-chart.d.ts +8 -1
- package/esm/chart/base/base-chart.js +33 -20
- package/esm/chart/base/base-chart.js.map +1 -1
- package/esm/chart/index.d.ts +1 -1
- package/esm/chart/index.js.map +1 -1
- package/esm/chart/interface/chart.d.ts +8 -1
- package/esm/chart/interface/chart.js.map +1 -1
- package/esm/chart/pictogram/interface.d.ts +1 -1
- package/esm/chart/pictogram/interface.js.map +1 -1
- package/esm/chart/sankey/sankey.js +22 -22
- package/esm/chart/sankey/sankey.js.map +1 -1
- package/esm/compile/mark/compilable-mark.d.ts +1 -0
- package/esm/compile/mark/compilable-mark.js +3 -0
- package/esm/compile/mark/compilable-mark.js.map +1 -1
- package/esm/component/axis/base-axis.js +7 -2
- package/esm/component/axis/base-axis.js.map +1 -1
- package/esm/component/axis/interface/spec.d.ts +7 -2
- package/esm/component/axis/interface/spec.js.map +1 -1
- package/esm/component/data-zoom/data-zoom/interface.d.ts +2 -3
- package/esm/component/data-zoom/data-zoom/interface.js.map +1 -1
- package/esm/component/marker/mark-area/base-mark-area.js +16 -27
- package/esm/component/marker/mark-area/base-mark-area.js.map +1 -1
- package/esm/component/marker/mark-area/interface/theme.d.ts +3 -4
- package/esm/component/marker/mark-area/interface/theme.js.map +1 -1
- package/esm/component/marker/mark-line/base-mark-line.js +19 -30
- package/esm/component/marker/mark-line/base-mark-line.js.map +1 -1
- package/esm/component/marker/mark-line/cartesian-mark-line.js +19 -23
- package/esm/component/marker/mark-line/cartesian-mark-line.js.map +1 -1
- package/esm/component/marker/mark-line/interface/theme.d.ts +3 -4
- package/esm/component/marker/mark-line/interface/theme.js.map +1 -1
- package/esm/component/marker/mark-point/cartesian-mark-point.js +1 -1
- package/esm/component/marker/mark-point/cartesian-mark-point.js.map +1 -1
- package/esm/component/marker/utils.d.ts +12 -0
- package/esm/component/marker/utils.js +19 -4
- package/esm/component/marker/utils.js.map +1 -1
- package/esm/constant/funnel.js +1 -2
- package/esm/constant/sunburst.js +2 -1
- package/esm/core/index.d.ts +1 -1
- package/esm/core/index.js +1 -1
- package/esm/core/index.js.map +1 -1
- package/esm/core/interface.js +1 -2
- package/esm/core/vchart.js +2 -1
- package/esm/data/transforms/pictogram.d.ts +1 -9
- package/esm/data/transforms/pictogram.js +3 -3
- package/esm/data/transforms/pictogram.js.map +1 -1
- package/esm/data/transforms/pie.js +1 -1
- package/esm/data/transforms/pie.js.map +1 -1
- package/esm/index-harmony-simple.js.map +1 -1
- package/esm/index.d.ts +1 -0
- package/esm/index.js +2 -0
- package/esm/index.js.map +1 -1
- package/esm/model/base-model.d.ts +1 -0
- package/esm/model/base-model.js +6 -0
- package/esm/model/base-model.js.map +1 -1
- package/esm/series/bar/bar.js.map +1 -1
- package/esm/series/pictogram/tooltip-helper.d.ts +2 -2
- package/esm/series/pictogram/tooltip-helper.js.map +1 -1
- package/esm/series/pie/pie.js +4 -4
- package/esm/series/pie/pie.js.map +1 -1
- package/esm/typings/visual.d.ts +1 -1
- package/esm/typings/visual.js.map +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/series/pie/pie.ts"],"names":[],"mappings":"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","file":"pie.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport { degreeToRadian, isValid } from '@visactor/vutils';\nimport { DataView } from '@visactor/vdataset';\nimport {\n ARC_START_ANGLE,\n ARC_END_ANGLE,\n ARC_RATIO,\n ARC_MIDDLE_ANGLE,\n ARC_RADIAN,\n ARC_QUADRANT,\n ARC_K,\n POLAR_START_RADIAN,\n POLAR_END_RADIAN\n} from '../../constant/polar';\nimport { AttributeLevel } from '../../constant/attribute';\nimport { DEFAULT_DATA_KEY, DEFAULT_DATA_INDEX } from '../../constant/data';\nimport { PREFIX } from '../../constant/base';\nimport type { IPoint, Datum, StateValueType, IArcMarkSpec, ILayoutNumber } from '../../typings';\nimport { normalizeStartEndAngle } from '../../util/math';\nimport { isSpecValueWithScale } from '../../util/scale';\nimport { field } from '../../util/object';\nimport type { IModelLayoutOption } from '../../model/interface';\nimport { PolarSeries } from '../polar/polar';\nimport type { IArcMark, IMark, IMarkStyle, IPathMark, ITextMark } from '../../mark/interface';\nimport { MarkTypeEnum } from '../../mark/interface/type';\nimport type { IArcSeries, SeriesMarkMap } from '../interface';\nimport { SeriesMarkNameEnum, SeriesTypeEnum } from '../interface/type';\nimport type { IPieOpt } from '../../data/transforms/pie';\n// eslint-disable-next-line no-duplicate-imports\nimport { isDataEmpty, pie } from '../../data/transforms/pie';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport { registerEmptyCircleAnimation, registerPieAnimation } from './animation/animation';\nimport { animationConfig, shouldMarkDoMorph, userAnimationConfig } from '../../animation/utils';\nimport { AnimationStateEnum } from '../../animation/interface';\nimport type { IBasePieSeriesSpec, IPieAnimationParams, IPieSeriesSpec, PieAppearPreset } from './interface';\nimport { SeriesData } from '../base/series-data';\nimport type { IStateAnimateSpec } from '../../animation/spec';\nimport type { IAnimationTypeConfig } from '@visactor/vgrammar-core';\nimport { centerOffsetConfig } from './animation/centerOffset';\nimport { registerArcMark } from '../../mark/arc';\nimport { pieSeriesMark } from './constant';\nimport { Factory } from '../../core/factory';\nimport { isNil, polarToCartesian } from '@visactor/vutils';\nimport { PieSeriesSpecTransformer } from './pie-transformer';\nimport { DEFAULT_LABEL_VISIBLE } from '../../constant/label';\nimport { ChartEvent } from '../../constant/event';\nimport { computeLayoutRadius } from '../../component/axis/polar/util/common';\nimport { calcLayoutNumber } from '../../util/space';\n\nexport class BasePieSeries<T extends IBasePieSeriesSpec> extends PolarSeries<T> implements IArcSeries {\n static readonly transformerConstructor = PieSeriesSpecTransformer as any;\n readonly transformerConstructor = PieSeriesSpecTransformer;\n\n protected _pieMarkName: SeriesMarkNameEnum = SeriesMarkNameEnum.pie;\n protected _pieMarkType: MarkTypeEnum = MarkTypeEnum.arc;\n\n static readonly mark: SeriesMarkMap = pieSeriesMark;\n\n protected _viewDataLabel!: SeriesData;\n\n // 饼图渲染不依赖于极坐标系轴,因此由 series 自己存储相关配置信息\n getCenter = (): IPoint => {\n const layoutRect = this._region.getLayoutRect();\n\n return {\n x: calcLayoutNumber(this._spec?.centerX as ILayoutNumber, layoutRect.width, layoutRect, layoutRect.width / 2),\n y: calcLayoutNumber(this._spec?.centerY as ILayoutNumber, layoutRect.height, layoutRect, layoutRect.height / 2)\n };\n };\n protected _centerOffset!: number;\n\n protected _cornerRadius!: number;\n\n protected _startAngle: number = POLAR_START_RADIAN;\n protected _endAngle: number = POLAR_END_RADIAN;\n protected _padAngle!: number;\n\n protected _pieMark: IArcMark | null = null;\n protected _labelMark: ITextMark | null = null;\n protected _labelLineMark: IPathMark | null = null;\n\n protected _showEmptyCircle: boolean;\n protected _emptyArcMark: IArcMark | null = null;\n\n protected _showAllZero: boolean;\n protected _supportNegative: boolean;\n\n protected _buildMarkAttributeContext() {\n super._buildMarkAttributeContext();\n // center\n this._markAttributeContext.getCenter = () => ({\n x: () => this.getCenter().x,\n y: () => this.getCenter().y\n });\n\n // angle scale\n this._markAttributeContext.startAngleScale = (datum: Datum) => this.startAngleScale(datum);\n this._markAttributeContext.endAngleScale = (datum: Datum) => this.endAngleScale(datum);\n }\n\n setAttrFromSpec(): void {\n super.setAttrFromSpec();\n this._centerOffset = this._spec.centerOffset ?? 0;\n this._cornerRadius = this._spec.cornerRadius ?? 0;\n\n const normalized = normalizeStartEndAngle(\n isValid(this._spec.startAngle) ? degreeToRadian(this._spec.startAngle) : this._startAngle,\n isValid(this._spec.endAngle) ? degreeToRadian(this._spec.endAngle) : this._endAngle\n );\n this._startAngle = normalized.startAngle;\n this._endAngle = normalized.endAngle;\n this._padAngle = isValid(this._spec.padAngle) ? degreeToRadian(this._spec.padAngle) : 0;\n\n // 值信息给角度,angleField 是为了兼容小组件用法,因为 spec 改造前已经开放了\n this.setAngleField(this._spec.valueField || this._spec.angleField);\n if (this._spec.categoryField) {\n this.setSeriesField(this._spec.categoryField);\n }\n this._radiusField = [];\n\n this._specAngleField = this._angleField.slice();\n this._specRadiusField = [];\n\n this._showEmptyCircle = this._spec.emptyPlaceholder?.showEmptyCircle ?? false;\n\n this._showAllZero = this._spec.showAllZero ?? false;\n this._supportNegative = this._spec.supportNegative ?? false;\n }\n\n initData() {\n super.initData();\n\n const viewData = this.getViewData();\n if (!viewData) {\n return;\n }\n\n registerDataSetInstanceTransform(this._dataSet, 'pie', pie);\n\n viewData.transform(\n {\n type: 'pie',\n options: {\n angleField: () => this._angleField[0],\n startAngle: () => this._startAngle,\n endAngle: () => this._endAngle,\n minAngle: () => (isValid(this._spec.minAngle) ? degreeToRadian(this._spec.minAngle) : 0),\n asStartAngle: ARC_START_ANGLE,\n asEndAngle: ARC_END_ANGLE,\n asRatio: ARC_RATIO,\n asMiddleAngle: ARC_MIDDLE_ANGLE,\n asRadian: ARC_RADIAN,\n asQuadrant: ARC_QUADRANT,\n asK: ARC_K,\n showAllZero: this._showAllZero,\n supportNegative: this._supportNegative,\n showEmptyCircle: this._showEmptyCircle\n } as IPieOpt\n },\n false\n );\n\n const viewDataLabel = new DataView(this._dataSet, { name: `${PREFIX}_series_${this.id}_viewDataLabel` });\n viewDataLabel.parse([this.getViewData()], {\n type: 'dataview'\n });\n\n this._viewDataLabel = new SeriesData(this._option, viewDataLabel);\n }\n\n compileData() {\n super.compileData();\n this._viewDataLabel?.compile();\n }\n\n initMark(): void {\n this._pieMark = this._createMark(\n {\n ...BasePieSeries.mark.pie,\n name: this._pieMarkName,\n type: this._pieMarkType\n },\n {\n key: DEFAULT_DATA_KEY,\n groupKey: this._seriesField,\n skipBeforeLayouted: true,\n isSeriesMark: true,\n stateSort: this._spec.pie?.stateSort\n },\n {\n setCustomizedShape: this._spec.pie?.customShape,\n morph: shouldMarkDoMorph(this._spec, this._pieMarkName),\n morphElementKey: this._seriesField\n }\n ) as IArcMark;\n\n if (this._showEmptyCircle) {\n this._emptyArcMark = this._createMark(\n {\n name: 'emptyCircle',\n type: 'arc'\n },\n {\n dataView: false\n }\n ) as IArcMark;\n }\n }\n\n private startAngleScale(datum: Datum) {\n return field(ARC_START_ANGLE)(datum);\n }\n\n private endAngleScale(datum: Datum) {\n return field(ARC_END_ANGLE)(datum);\n }\n\n protected _computeLayoutRadius() {\n return computeLayoutRadius(\n () => this._spec.layoutRadius,\n this.getLayoutRect,\n this.getCenter,\n () => ({ startAngle: this._startAngle, endAngle: this._endAngle })\n );\n }\n\n initMarkStyle(): void {\n const initialStyle: Partial<IMarkStyle<IArcMarkSpec>> = {\n x: () => this.getCenter().x,\n y: () => this.getCenter().y,\n fill: this.getColorAttribute(),\n outerRadius: isSpecValueWithScale(this._outerRadius)\n ? this._outerRadius\n : () => this._computeLayoutRadius() * this._outerRadius,\n innerRadius: isSpecValueWithScale(this._innerRadius)\n ? this._innerRadius\n : () => this._computeLayoutRadius() * this._innerRadius,\n cornerRadius: () => this._computeLayoutRadius() * this._cornerRadius,\n startAngle: datum => this.startAngleScale(datum),\n endAngle: datum => this.endAngleScale(datum),\n padAngle: this._padAngle,\n centerOffset: this._centerOffset\n };\n\n const pieMark = this._pieMark;\n if (pieMark) {\n this.setMarkStyle(pieMark, initialStyle, 'normal', AttributeLevel.Series);\n }\n\n /**\n * !important\n * !TODO: isDataEmpty执行了2次, 需要结构上优化, 保存isEmpty的状态, 尝试将2次执行优化为1次\n */\n const emptyPieMark = this._emptyArcMark;\n if (emptyPieMark) {\n this.setMarkStyle(\n emptyPieMark,\n {\n ...initialStyle,\n visible: () => {\n const angleField = this.getAngleField()[0];\n return isDataEmpty(this.getViewData().latestData, angleField, this._supportNegative);\n }\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n }\n\n initInteraction(): void {\n this._parseInteractionConfig(this._pieMark ? [this._pieMark] : []);\n }\n\n protected initTooltip() {\n super.initTooltip();\n\n this._pieMark && this._tooltipHelper.activeTriggerSet.mark.add(this._pieMark);\n }\n\n initMarkStyleWithSpec(mark?: IMark, spec?: any, key?: string): void {\n super.initMarkStyleWithSpec(mark, spec, key);\n if (mark.name === this._pieMarkName) {\n // radius 配置需要额外处理比例值\n const pieSpec = this.getSpec()[mark.name as 'pie'];\n if (pieSpec) {\n for (const state in pieSpec.state || {}) {\n this.setMarkStyle(mark, this.generateRadiusStyle(pieSpec.state[state]), state, AttributeLevel.User_Mark);\n }\n }\n }\n if (mark.name === 'emptyCircle') {\n // 使用emptyCircle的radius比例值进行覆盖\n this.setMarkStyle(mark, this.generateRadiusStyle(spec.style), 'normal', AttributeLevel.User_Mark);\n }\n }\n\n initLabelMarkStyle(textMark: ITextMark) {\n if (!textMark) {\n return;\n }\n this.setMarkStyle(textMark, {\n visible: field(DEFAULT_LABEL_VISIBLE).bind(this),\n text: (datum: Datum) => {\n return datum[this.getDimensionField()[0]];\n },\n fill: this.getColorAttribute(),\n z: this.dataToPositionZ.bind(this)\n });\n }\n\n afterInitMark(): void {\n super.afterInitMark();\n }\n\n initEvent(): void {\n super.initEvent();\n this._viewDataLabel.getDataView()?.target.addListener('change', this.viewDataLabelUpdate.bind(this));\n }\n\n // 饼图不支持分组\n initGroups() {\n return;\n }\n\n /**\n * @override\n * @param ctx\n */\n onLayoutEnd(ctx: IModelLayoutOption): void {\n this._viewDataLabel.getDataView().reRunAllTransform();\n this.onMarkPositionUpdate();\n super.onLayoutEnd(ctx);\n }\n\n getDimensionField(): string[] {\n return this._seriesField ? [this._seriesField] : [];\n }\n getMeasureField(): string[] {\n return this._specAngleField;\n }\n\n private viewDataLabelUpdate() {\n this.event.emit(ChartEvent.viewDataLabelUpdate, { model: this });\n this._viewDataLabel.updateData();\n }\n\n protected generateRadiusStyle(spec: any) {\n if (!spec) {\n return;\n }\n const style: any = {};\n spec.outerRadius && (style.outerRadius = () => this._computeLayoutRadius() * spec.outerRadius);\n spec.innerRadius && (style.innerRadius = () => this._computeLayoutRadius() * spec.innerRadius);\n spec.cornerRadius && (style.cornerRadius = () => this._computeLayoutRadius() * spec.cornerRadius);\n return style;\n }\n\n computeCenter(datum: Datum): IPoint {\n return {\n x: this._pieMark.getAttribute('x', datum, 'normal') as number,\n y: this._pieMark.getAttribute('y', datum, 'normal') as number\n };\n }\n\n getRadius(state: StateValueType = 'normal'): number {\n const styleRadius =\n state === 'normal'\n ? this.getSpec()[this._pieMark?.name || 'pie']?.style?.outerRadius\n : this.getSpec()[this._pieMark?.name || 'pie']?.state?.[state]?.outerRadius;\n return styleRadius ?? this._outerRadius;\n }\n\n getInnerRadius(state: StateValueType = 'normal'): number {\n const styleRadius =\n state === 'normal'\n ? this.getSpec()[this._pieMark?.name || 'pie']?.style?.innerRadius\n : this.getSpec()[this._pieMark?.name || 'pie']?.state?.[state]?.innerRadius;\n return styleRadius ?? this._innerRadius;\n }\n\n computeRadius(r: number, k?: number): number {\n return this._computeLayoutRadius() * r * (isNil(k) ? 1 : k) + this._centerOffset;\n }\n\n computeDatumRadius(datum: Datum, state?: string): number {\n return this._computeLayoutRadius() * this.getRadius(state) + this._centerOffset;\n }\n\n _compareSpec(spec: T, prevSpec: T, ignoreCheckKeys?: { [key: string]: true }) {\n ignoreCheckKeys = ignoreCheckKeys ?? { data: true };\n const defaultIgnoreKeys: string[] = [\n 'centerX',\n 'centerY',\n 'centerOffset',\n 'radius',\n 'innerRadius',\n 'cornerRadius',\n 'startAngle',\n 'endAngle',\n 'padAngle'\n ];\n defaultIgnoreKeys.forEach(key => {\n ignoreCheckKeys[key] = true;\n });\n\n const result = super._compareSpec(spec, prevSpec, ignoreCheckKeys);\n spec = spec ?? ({} as T);\n if (defaultIgnoreKeys.some(key => (spec as any)[key] !== (prevSpec as any)[key])) {\n result.reRender = true;\n result.change = true;\n }\n return result;\n }\n\n computeDatumInnerRadius(datum: Datum, state?: string): number {\n return this._computeLayoutRadius() * this.getInnerRadius(state) + this._centerOffset;\n }\n\n dataToPosition(datum: Datum, checkInViewData?: boolean): IPoint | null {\n const angle = datum[ARC_MIDDLE_ANGLE];\n if (isNil(angle)) {\n return null;\n }\n if (checkInViewData && !this.isDatumInViewData(datum)) {\n return null;\n }\n const radius = this.computeDatumRadius(datum);\n const center = this.computeCenter(datum);\n\n return polarToCartesian(center, radius, angle);\n }\n\n dataToCentralPosition = (datum: Datum): IPoint | null => {\n // 和 PieSeries.dataToPosition 实现不同,这里考虑了美观性,返回的位置是曲边梯形的中心\n const angle = datum[ARC_MIDDLE_ANGLE];\n if (isNil(angle)) {\n return null;\n }\n const radius = this.computeDatumRadius(datum);\n const innerRadius = this.computeDatumInnerRadius(datum);\n const center = this.computeCenter(datum);\n\n return polarToCartesian(center, (radius + innerRadius) / 2, angle);\n };\n\n initAnimation() {\n const animationParams: IPieAnimationParams = {\n growFrom: (datum, element, state) => {\n if (state === AnimationStateEnum.appear) {\n return this._startAngle;\n }\n if (state === AnimationStateEnum.disappear) {\n return this._endAngle;\n }\n\n const outState = [AnimationStateEnum.disappear, AnimationStateEnum.exit];\n const markElements = element.mark.elements;\n\n const data = datum;\n const dataIndex = data?.[DEFAULT_DATA_INDEX];\n\n // 当前 mark 在上个状态是否处于第一个\n if (markElements.find(e => e.data[0]?.[DEFAULT_DATA_INDEX] < dataIndex) === undefined) {\n return this._startAngle;\n }\n // 当前 mark 在上个状态是否处于最后一个\n if (markElements.find(e => e.data[0]?.[DEFAULT_DATA_INDEX] > dataIndex) === undefined) {\n return this._endAngle;\n }\n\n // 扇形不在边缘时,获取扇形生长点:获取相邻状态下相邻扇形的边缘\n const prevMarkElement = [...markElements].reverse().find(e => e.data[0]?.[DEFAULT_DATA_INDEX] < dataIndex);\n\n if (outState.includes(state)) {\n return prevMarkElement?.getNextGraphicAttributes()?.endAngle;\n }\n return prevMarkElement?.getGraphicAttribute('endAngle', true);\n }\n };\n const appearPreset = (this._spec.animationAppear as IStateAnimateSpec<PieAppearPreset>)?.preset;\n\n if (this._pieMark) {\n const pieAnimationConfig = animationConfig(\n Factory.getAnimationInKey('pie')?.(animationParams, appearPreset),\n userAnimationConfig(SeriesMarkNameEnum.pie, this._spec, this._markAttributeContext)\n );\n\n if (pieAnimationConfig.normal && (pieAnimationConfig.normal as IAnimationTypeConfig).type) {\n pieAnimationConfig.normal = centerOffsetConfig(\n this._pieMark,\n pieAnimationConfig.normal as IAnimationTypeConfig\n );\n }\n\n this._pieMark.setAnimationConfig(pieAnimationConfig);\n }\n\n if (this._emptyArcMark) {\n const pieAnimationConfig = animationConfig(\n Factory.getAnimationInKey('emptyCircle')?.(animationParams, appearPreset ?? 'fadeIn')\n );\n this._emptyArcMark.setAnimationConfig(pieAnimationConfig);\n }\n }\n\n getDefaultShapeType() {\n return 'circle';\n }\n\n getGroupFields(): string[] {\n // do nothing\n return [];\n }\n\n getStackGroupFields(): string[] {\n // do nothing\n return [];\n }\n\n getStackValueField(): string {\n // do nothing\n return '';\n }\n\n // make sure this function fast\n protected _noAnimationDataKey(datum: Datum, index: number) {\n return index;\n }\n\n getActiveMarks(): IMark[] {\n return [this._pieMark];\n }\n}\n\nexport class PieSeries<T extends IPieSeriesSpec = IPieSeriesSpec> extends BasePieSeries<T> implements IArcSeries {\n static readonly type: string = SeriesTypeEnum.pie;\n type = SeriesTypeEnum.pie;\n}\n\nexport const registerPieSeries = () => {\n registerArcMark();\n registerPieAnimation();\n registerEmptyCircleAnimation();\n Factory.registerSeries(PieSeries.type, PieSeries);\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/series/pie/pie.ts"],"names":[],"mappings":"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","file":"pie.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport { degreeToRadian, isValid } from '@visactor/vutils';\nimport { DataView } from '@visactor/vdataset';\nimport {\n ARC_START_ANGLE,\n ARC_END_ANGLE,\n ARC_RATIO,\n ARC_MIDDLE_ANGLE,\n ARC_RADIAN,\n ARC_QUADRANT,\n ARC_K,\n POLAR_START_RADIAN,\n POLAR_END_RADIAN\n} from '../../constant/polar';\nimport { AttributeLevel } from '../../constant/attribute';\nimport { DEFAULT_DATA_KEY, DEFAULT_DATA_INDEX } from '../../constant/data';\nimport { PREFIX } from '../../constant/base';\nimport type { IPoint, Datum, StateValueType, IArcMarkSpec, ILayoutNumber } from '../../typings';\nimport { normalizeStartEndAngle } from '../../util/math';\nimport { isSpecValueWithScale } from '../../util/scale';\nimport { field } from '../../util/object';\nimport type { IModelLayoutOption } from '../../model/interface';\nimport { PolarSeries } from '../polar/polar';\nimport type { IArcMark, IMark, IMarkStyle, IPathMark, ITextMark } from '../../mark/interface';\nimport { MarkTypeEnum } from '../../mark/interface/type';\nimport type { IArcSeries, SeriesMarkMap } from '../interface';\nimport { SeriesMarkNameEnum, SeriesTypeEnum } from '../interface/type';\nimport type { IPieOpt } from '../../data/transforms/pie';\n// eslint-disable-next-line no-duplicate-imports\nimport { isDataEmpty, pie } from '../../data/transforms/pie';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport { registerEmptyCircleAnimation, registerPieAnimation } from './animation/animation';\nimport { animationConfig, shouldMarkDoMorph, userAnimationConfig } from '../../animation/utils';\nimport { AnimationStateEnum } from '../../animation/interface';\nimport type { IBasePieSeriesSpec, IPieAnimationParams, IPieSeriesSpec, PieAppearPreset } from './interface';\nimport { SeriesData } from '../base/series-data';\nimport type { IStateAnimateSpec } from '../../animation/spec';\nimport type { IAnimationTypeConfig } from '@visactor/vgrammar-core';\nimport { centerOffsetConfig } from './animation/centerOffset';\nimport { registerArcMark } from '../../mark/arc';\nimport { pieSeriesMark } from './constant';\nimport { Factory } from '../../core/factory';\nimport { isNil, polarToCartesian } from '@visactor/vutils';\nimport { PieSeriesSpecTransformer } from './pie-transformer';\nimport { DEFAULT_LABEL_VISIBLE } from '../../constant/label';\nimport { ChartEvent } from '../../constant/event';\nimport { computeLayoutRadius } from '../../component/axis/polar/util/common';\nimport { calcLayoutNumber } from '../../util/space';\n\nexport class BasePieSeries<T extends IBasePieSeriesSpec> extends PolarSeries<T> implements IArcSeries {\n static readonly transformerConstructor = PieSeriesSpecTransformer as any;\n readonly transformerConstructor = PieSeriesSpecTransformer;\n\n protected _pieMarkName: SeriesMarkNameEnum = SeriesMarkNameEnum.pie;\n protected _pieMarkType: MarkTypeEnum = MarkTypeEnum.arc;\n\n static readonly mark: SeriesMarkMap = pieSeriesMark;\n\n protected _viewDataLabel!: SeriesData;\n\n // 饼图渲染不依赖于极坐标系轴,因此由 series 自己存储相关配置信息\n getCenter = (): IPoint => {\n const layoutRect = this._region.getLayoutRect();\n\n return {\n x: calcLayoutNumber(this._spec?.centerX as ILayoutNumber, layoutRect.width, layoutRect, layoutRect.width / 2),\n y: calcLayoutNumber(this._spec?.centerY as ILayoutNumber, layoutRect.height, layoutRect, layoutRect.height / 2)\n };\n };\n protected _centerOffset!: number;\n\n protected _cornerRadius!: number;\n\n protected _startAngle: number = POLAR_START_RADIAN;\n protected _endAngle: number = POLAR_END_RADIAN;\n protected _padAngle!: number;\n\n protected _pieMark: IArcMark | null = null;\n protected _labelMark: ITextMark | null = null;\n protected _labelLineMark: IPathMark | null = null;\n\n protected _showEmptyCircle: boolean;\n protected _emptyArcMark: IArcMark | null = null;\n\n protected _showAllZero: boolean;\n protected _supportNegative: boolean;\n\n protected _buildMarkAttributeContext() {\n super._buildMarkAttributeContext();\n // center\n this._markAttributeContext.getCenter = () => ({\n x: () => this.getCenter().x,\n y: () => this.getCenter().y\n });\n\n // angle scale\n this._markAttributeContext.startAngleScale = (datum: Datum) => this.startAngleScale(datum);\n this._markAttributeContext.endAngleScale = (datum: Datum) => this.endAngleScale(datum);\n }\n\n setAttrFromSpec(): void {\n super.setAttrFromSpec();\n this._centerOffset = this._spec.centerOffset ?? 0;\n this._cornerRadius = this._spec.cornerRadius ?? 0;\n\n const normalized = normalizeStartEndAngle(\n isValid(this._spec.startAngle) ? degreeToRadian(this._spec.startAngle) : this._startAngle,\n isValid(this._spec.endAngle) ? degreeToRadian(this._spec.endAngle) : this._endAngle\n );\n this._startAngle = normalized.startAngle;\n this._endAngle = normalized.endAngle;\n this._padAngle = isValid(this._spec.padAngle) ? degreeToRadian(this._spec.padAngle) : 0;\n\n // 值信息给角度,angleField 是为了兼容小组件用法,因为 spec 改造前已经开放了\n this.setAngleField(this._spec.valueField || this._spec.angleField);\n if (this._spec.categoryField) {\n this.setSeriesField(this._spec.categoryField);\n }\n this._radiusField = [];\n\n this._specAngleField = this._angleField.slice();\n this._specRadiusField = [];\n\n this._showEmptyCircle = this._spec.emptyPlaceholder?.showEmptyCircle ?? false;\n\n this._showAllZero = this._spec.showAllZero ?? false;\n this._supportNegative = this._spec.supportNegative ?? false;\n }\n\n initData() {\n super.initData();\n\n const viewData = this.getViewData();\n if (!viewData) {\n return;\n }\n\n registerDataSetInstanceTransform(this._dataSet, 'pie', pie);\n\n viewData.transform(\n {\n type: 'pie',\n options: {\n angleField: () => this._angleField[0],\n startAngle: () => this._startAngle,\n endAngle: () => this._endAngle,\n minAngle: () => (isValid(this._spec.minAngle) ? degreeToRadian(this._spec.minAngle) : 0),\n asStartAngle: ARC_START_ANGLE,\n asEndAngle: ARC_END_ANGLE,\n asRatio: ARC_RATIO,\n asMiddleAngle: ARC_MIDDLE_ANGLE,\n asRadian: ARC_RADIAN,\n asQuadrant: ARC_QUADRANT,\n asK: ARC_K,\n showAllZero: this._showAllZero,\n supportNegative: this._supportNegative,\n showEmptyCircle: this._showEmptyCircle\n } as IPieOpt\n },\n false\n );\n\n const viewDataLabel = new DataView(this._dataSet, { name: `${PREFIX}_series_${this.id}_viewDataLabel` });\n viewDataLabel.parse([this.getViewData()], {\n type: 'dataview'\n });\n\n this._viewDataLabel = new SeriesData(this._option, viewDataLabel);\n }\n\n compileData() {\n super.compileData();\n this._viewDataLabel?.compile();\n }\n\n initMark(): void {\n this._pieMark = this._createMark(\n {\n ...BasePieSeries.mark.pie,\n name: this._pieMarkName,\n type: this._pieMarkType\n },\n {\n key: DEFAULT_DATA_KEY,\n groupKey: this._seriesField,\n skipBeforeLayouted: true,\n isSeriesMark: true,\n stateSort: this._spec.pie?.stateSort\n },\n {\n setCustomizedShape: this._spec.pie?.customShape,\n morph: shouldMarkDoMorph(this._spec, this._pieMarkName),\n morphElementKey: this._seriesField\n }\n ) as IArcMark;\n\n if (this._showEmptyCircle) {\n this._emptyArcMark = this._createMark(\n {\n name: 'emptyCircle',\n type: 'arc'\n },\n {\n dataView: false\n }\n ) as IArcMark;\n\n this._emptyArcMark.setDepend(this._pieMark);\n }\n }\n\n private startAngleScale(datum: Datum) {\n return field(ARC_START_ANGLE)(datum);\n }\n\n private endAngleScale(datum: Datum) {\n return field(ARC_END_ANGLE)(datum);\n }\n\n protected _computeLayoutRadius() {\n return computeLayoutRadius(\n () => this._spec.layoutRadius,\n this.getLayoutRect,\n this.getCenter,\n () => ({ startAngle: this._startAngle, endAngle: this._endAngle })\n );\n }\n\n initMarkStyle(): void {\n const initialStyle: Partial<IMarkStyle<IArcMarkSpec>> = {\n x: () => this.getCenter().x,\n y: () => this.getCenter().y,\n fill: this.getColorAttribute(),\n outerRadius: isSpecValueWithScale(this._outerRadius)\n ? this._outerRadius\n : () => this._computeLayoutRadius() * this._outerRadius,\n innerRadius: isSpecValueWithScale(this._innerRadius)\n ? this._innerRadius\n : () => this._computeLayoutRadius() * this._innerRadius,\n cornerRadius: () => this._computeLayoutRadius() * this._cornerRadius,\n startAngle: datum => this.startAngleScale(datum),\n endAngle: datum => this.endAngleScale(datum),\n padAngle: this._padAngle,\n centerOffset: this._centerOffset\n };\n\n const pieMark = this._pieMark;\n if (pieMark) {\n this.setMarkStyle(pieMark, initialStyle, 'normal', AttributeLevel.Series);\n }\n\n /**\n * !important\n * !TODO: isDataEmpty执行了2次, 需要结构上优化, 保存isEmpty的状态, 尝试将2次执行优化为1次\n */\n const emptyPieMark = this._emptyArcMark;\n if (emptyPieMark) {\n this.setMarkStyle(\n emptyPieMark,\n {\n ...initialStyle,\n visible: () => {\n const data = this.getViewData().latestData;\n return !data || !data.length;\n }\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n }\n\n initInteraction(): void {\n this._parseInteractionConfig(this._pieMark ? [this._pieMark] : []);\n }\n\n protected initTooltip() {\n super.initTooltip();\n\n this._pieMark && this._tooltipHelper.activeTriggerSet.mark.add(this._pieMark);\n }\n\n initMarkStyleWithSpec(mark?: IMark, spec?: any, key?: string): void {\n super.initMarkStyleWithSpec(mark, spec, key);\n if (mark.name === this._pieMarkName) {\n // radius 配置需要额外处理比例值\n const pieSpec = this.getSpec()[mark.name as 'pie'];\n if (pieSpec) {\n for (const state in pieSpec.state || {}) {\n this.setMarkStyle(mark, this.generateRadiusStyle(pieSpec.state[state]), state, AttributeLevel.User_Mark);\n }\n }\n }\n if (mark.name === 'emptyCircle') {\n // 使用emptyCircle的radius比例值进行覆盖\n this.setMarkStyle(mark, this.generateRadiusStyle(spec.style), 'normal', AttributeLevel.User_Mark);\n }\n }\n\n initLabelMarkStyle(textMark: ITextMark) {\n if (!textMark) {\n return;\n }\n this.setMarkStyle(textMark, {\n visible: field(DEFAULT_LABEL_VISIBLE).bind(this),\n text: (datum: Datum) => {\n return datum[this.getDimensionField()[0]];\n },\n fill: this.getColorAttribute(),\n z: this.dataToPositionZ.bind(this)\n });\n }\n\n afterInitMark(): void {\n super.afterInitMark();\n }\n\n initEvent(): void {\n super.initEvent();\n this._viewDataLabel.getDataView()?.target.addListener('change', this.viewDataLabelUpdate.bind(this));\n }\n\n // 饼图不支持分组\n initGroups() {\n return;\n }\n\n /**\n * @override\n * @param ctx\n */\n onLayoutEnd(ctx: IModelLayoutOption): void {\n this._viewDataLabel.getDataView().reRunAllTransform();\n this.onMarkPositionUpdate();\n super.onLayoutEnd(ctx);\n }\n\n getDimensionField(): string[] {\n return this._seriesField ? [this._seriesField] : [];\n }\n getMeasureField(): string[] {\n return this._specAngleField;\n }\n\n private viewDataLabelUpdate() {\n this.event.emit(ChartEvent.viewDataLabelUpdate, { model: this });\n this._viewDataLabel.updateData();\n }\n\n protected generateRadiusStyle(spec: any) {\n if (!spec) {\n return;\n }\n const style: any = {};\n spec.outerRadius && (style.outerRadius = () => this._computeLayoutRadius() * spec.outerRadius);\n spec.innerRadius && (style.innerRadius = () => this._computeLayoutRadius() * spec.innerRadius);\n spec.cornerRadius && (style.cornerRadius = () => this._computeLayoutRadius() * spec.cornerRadius);\n return style;\n }\n\n computeCenter(datum: Datum): IPoint {\n return {\n x: this._pieMark.getAttribute('x', datum, 'normal') as number,\n y: this._pieMark.getAttribute('y', datum, 'normal') as number\n };\n }\n\n getRadius(state: StateValueType = 'normal'): number {\n const styleRadius =\n state === 'normal'\n ? this.getSpec()[this._pieMark?.name || 'pie']?.style?.outerRadius\n : this.getSpec()[this._pieMark?.name || 'pie']?.state?.[state]?.outerRadius;\n return styleRadius ?? this._outerRadius;\n }\n\n getInnerRadius(state: StateValueType = 'normal'): number {\n const styleRadius =\n state === 'normal'\n ? this.getSpec()[this._pieMark?.name || 'pie']?.style?.innerRadius\n : this.getSpec()[this._pieMark?.name || 'pie']?.state?.[state]?.innerRadius;\n return styleRadius ?? this._innerRadius;\n }\n\n computeRadius(r: number, k?: number): number {\n return this._computeLayoutRadius() * r * (isNil(k) ? 1 : k) + this._centerOffset;\n }\n\n computeDatumRadius(datum: Datum, state?: string): number {\n return this._computeLayoutRadius() * this.getRadius(state) + this._centerOffset;\n }\n\n _compareSpec(spec: T, prevSpec: T, ignoreCheckKeys?: { [key: string]: true }) {\n ignoreCheckKeys = ignoreCheckKeys ?? { data: true };\n const defaultIgnoreKeys: string[] = [\n 'centerX',\n 'centerY',\n 'centerOffset',\n 'radius',\n 'innerRadius',\n 'cornerRadius',\n 'startAngle',\n 'endAngle',\n 'padAngle'\n ];\n defaultIgnoreKeys.forEach(key => {\n ignoreCheckKeys[key] = true;\n });\n\n const result = super._compareSpec(spec, prevSpec, ignoreCheckKeys);\n spec = spec ?? ({} as T);\n if (defaultIgnoreKeys.some(key => (spec as any)[key] !== (prevSpec as any)[key])) {\n result.reRender = true;\n result.change = true;\n }\n return result;\n }\n\n computeDatumInnerRadius(datum: Datum, state?: string): number {\n return this._computeLayoutRadius() * this.getInnerRadius(state) + this._centerOffset;\n }\n\n dataToPosition(datum: Datum, checkInViewData?: boolean): IPoint | null {\n const angle = datum[ARC_MIDDLE_ANGLE];\n if (isNil(angle)) {\n return null;\n }\n if (checkInViewData && !this.isDatumInViewData(datum)) {\n return null;\n }\n const radius = this.computeDatumRadius(datum);\n const center = this.computeCenter(datum);\n\n return polarToCartesian(center, radius, angle);\n }\n\n dataToCentralPosition = (datum: Datum): IPoint | null => {\n // 和 PieSeries.dataToPosition 实现不同,这里考虑了美观性,返回的位置是曲边梯形的中心\n const angle = datum[ARC_MIDDLE_ANGLE];\n if (isNil(angle)) {\n return null;\n }\n const radius = this.computeDatumRadius(datum);\n const innerRadius = this.computeDatumInnerRadius(datum);\n const center = this.computeCenter(datum);\n\n return polarToCartesian(center, (radius + innerRadius) / 2, angle);\n };\n\n initAnimation() {\n const animationParams: IPieAnimationParams = {\n growFrom: (datum, element, state) => {\n if (state === AnimationStateEnum.appear) {\n return this._startAngle;\n }\n if (state === AnimationStateEnum.disappear) {\n return this._endAngle;\n }\n\n const outState = [AnimationStateEnum.disappear, AnimationStateEnum.exit];\n const markElements = element.mark.elements;\n\n const data = datum;\n const dataIndex = data?.[DEFAULT_DATA_INDEX];\n\n // 当前 mark 在上个状态是否处于第一个\n if (markElements.find(e => e.data[0]?.[DEFAULT_DATA_INDEX] < dataIndex) === undefined) {\n return this._startAngle;\n }\n // 当前 mark 在上个状态是否处于最后一个\n if (markElements.find(e => e.data[0]?.[DEFAULT_DATA_INDEX] > dataIndex) === undefined) {\n return this._endAngle;\n }\n\n // 扇形不在边缘时,获取扇形生长点:获取相邻状态下相邻扇形的边缘\n const prevMarkElement = [...markElements].reverse().find(e => e.data[0]?.[DEFAULT_DATA_INDEX] < dataIndex);\n\n if (outState.includes(state)) {\n return prevMarkElement?.getNextGraphicAttributes()?.endAngle;\n }\n return prevMarkElement?.getGraphicAttribute('endAngle', true);\n }\n };\n const appearPreset = (this._spec.animationAppear as IStateAnimateSpec<PieAppearPreset>)?.preset;\n\n if (this._pieMark) {\n const pieAnimationConfig = animationConfig(\n Factory.getAnimationInKey('pie')?.(animationParams, appearPreset),\n userAnimationConfig(SeriesMarkNameEnum.pie, this._spec, this._markAttributeContext)\n );\n\n if (pieAnimationConfig.normal && (pieAnimationConfig.normal as IAnimationTypeConfig).type) {\n pieAnimationConfig.normal = centerOffsetConfig(\n this._pieMark,\n pieAnimationConfig.normal as IAnimationTypeConfig\n );\n }\n\n this._pieMark.setAnimationConfig(pieAnimationConfig);\n }\n\n if (this._emptyArcMark) {\n const pieAnimationConfig = animationConfig(\n Factory.getAnimationInKey('emptyCircle')?.(animationParams, appearPreset ?? 'fadeIn')\n );\n this._emptyArcMark.setAnimationConfig(pieAnimationConfig);\n }\n }\n\n getDefaultShapeType() {\n return 'circle';\n }\n\n getGroupFields(): string[] {\n // do nothing\n return [];\n }\n\n getStackGroupFields(): string[] {\n // do nothing\n return [];\n }\n\n getStackValueField(): string {\n // do nothing\n return '';\n }\n\n // make sure this function fast\n protected _noAnimationDataKey(datum: Datum, index: number) {\n return index;\n }\n\n getActiveMarks(): IMark[] {\n return [this._pieMark];\n }\n}\n\nexport class PieSeries<T extends IPieSeriesSpec = IPieSeriesSpec> extends BasePieSeries<T> implements IArcSeries {\n static readonly type: string = SeriesTypeEnum.pie;\n type = SeriesTypeEnum.pie;\n}\n\nexport const registerPieSeries = () => {\n registerArcMark();\n registerPieAnimation();\n registerEmptyCircleAnimation();\n Factory.registerSeries(PieSeries.type, PieSeries);\n};\n"]}
|
package/esm/typings/visual.d.ts
CHANGED
|
@@ -57,7 +57,7 @@ export interface ICommonSpec {
|
|
|
57
57
|
x?: number;
|
|
58
58
|
y?: number;
|
|
59
59
|
z?: number;
|
|
60
|
-
stroke?: string | IGradient | false | (number | boolean)[] | IColorKey;
|
|
60
|
+
stroke?: string | IGradient | false | (number | boolean)[] | IColorKey | null;
|
|
61
61
|
strokeOpacity?: number;
|
|
62
62
|
opacity?: number;
|
|
63
63
|
lineWidth?: 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 { IAttributeOpt, 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> = (\n datum: Datum,\n context: IModelMarkAttributeContext,\n opt?: IAttributeOpt,\n source?: DataView\n) => 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;\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\n// 3d rect,支持length表示长宽高中的长属性(深度属性)\nexport interface IRect3dMarkSpec extends IRectMarkSpec {\n /**\n * 3d柱子的深度\n */\n length?: number;\n}\n\nexport interface IBoxPlotMarkSpec extends ICommonSpec {\n /**\n * box描边宽度\n */\n lineWidth?: number;\n /**\n * box宽度\n */\n boxWidth?: number;\n /**\n * 最大最小值宽度\n */\n shaftWidth?: number;\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\n// 3d arc,有高度配置\nexport interface IArc3dMarkSpec extends IArcMarkSpec {\n /**\n * 3d圆弧的高度\n */\n height?: number;\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\nexport interface IPyramid3dMarkSpec extends IPolygonMarkSpec {\n /**\n * 3d金字塔顶点坐标,注意只能有4个顶点\n */\n points?: IPoint[];\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';\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 { IAttributeOpt, 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> = (\n datum: Datum,\n context: IModelMarkAttributeContext,\n opt?: IAttributeOpt,\n source?: DataView\n) => 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\n// 3d rect,支持length表示长宽高中的长属性(深度属性)\nexport interface IRect3dMarkSpec extends IRectMarkSpec {\n /**\n * 3d柱子的深度\n */\n length?: number;\n}\n\nexport interface IBoxPlotMarkSpec extends ICommonSpec {\n /**\n * box描边宽度\n */\n lineWidth?: number;\n /**\n * box宽度\n */\n boxWidth?: number;\n /**\n * 最大最小值宽度\n */\n shaftWidth?: number;\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\n// 3d arc,有高度配置\nexport interface IArc3dMarkSpec extends IArcMarkSpec {\n /**\n * 3d圆弧的高度\n */\n height?: number;\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\nexport interface IPyramid3dMarkSpec extends IPolygonMarkSpec {\n /**\n * 3d金字塔顶点坐标,注意只能有4个顶点\n */\n points?: IPoint[];\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';\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": "1.13.9-alpha.
|
|
3
|
+
"version": "1.13.9-alpha.11",
|
|
4
4
|
"description": "charts lib based @visactor/VGrammar",
|
|
5
5
|
"main": "cjs/index.js",
|
|
6
6
|
"module": "esm/index.js",
|
|
@@ -83,16 +83,16 @@
|
|
|
83
83
|
"cross-env": "^7.0.3",
|
|
84
84
|
"@internal/typescript-json-schema": "0.0.1",
|
|
85
85
|
"@internal/ts-config": "0.0.1",
|
|
86
|
-
"@internal/
|
|
87
|
-
"@internal/
|
|
86
|
+
"@internal/bundler": "0.0.1",
|
|
87
|
+
"@internal/eslint-config": "0.0.1"
|
|
88
88
|
},
|
|
89
89
|
"dependencies": {
|
|
90
90
|
"@visactor/vutils": "~0.19.4",
|
|
91
91
|
"@visactor/vdataset": "~0.19.4",
|
|
92
92
|
"@visactor/vscale": "~0.19.4",
|
|
93
|
-
"@visactor/vrender-core": "0.22.
|
|
94
|
-
"@visactor/vrender-kits": "0.22.
|
|
95
|
-
"@visactor/vrender-components": "0.22.
|
|
93
|
+
"@visactor/vrender-core": "0.22.6",
|
|
94
|
+
"@visactor/vrender-kits": "0.22.6",
|
|
95
|
+
"@visactor/vrender-components": "0.22.6",
|
|
96
96
|
"@visactor/vgrammar-core": "0.16.3",
|
|
97
97
|
"@visactor/vgrammar-projection": "0.16.3",
|
|
98
98
|
"@visactor/vgrammar-wordcloud": "0.16.3",
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
"@visactor/vgrammar-sankey": "0.16.3",
|
|
102
102
|
"@visactor/vgrammar-venn": "0.16.3",
|
|
103
103
|
"@visactor/vgrammar-util": "0.16.3",
|
|
104
|
-
"@visactor/vutils-extension": "1.13.9-alpha.
|
|
104
|
+
"@visactor/vutils-extension": "1.13.9-alpha.11"
|
|
105
105
|
},
|
|
106
106
|
"publishConfig": {
|
|
107
107
|
"access": "public",
|