@visactor/vchart 2.0.23-alpha.6 → 2.0.23-alpha.7

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 (46) hide show
  1. package/build/es5/index.js +1 -1
  2. package/build/index.es.js +59 -39
  3. package/build/index.js +59 -39
  4. package/build/index.min.js +2 -2
  5. package/build/tsconfig.tsbuildinfo +1 -1
  6. package/cjs/animation/index.js +2 -1
  7. package/cjs/chart/base/base-chart.js +7 -13
  8. package/cjs/chart/base/base-chart.js.map +1 -1
  9. package/cjs/chart/radar/radar-transformer.js +4 -4
  10. package/cjs/chart/radar/radar-transformer.js.map +1 -1
  11. package/cjs/compile/state-manager.js +1 -2
  12. package/cjs/component/marker/mark-line/cartesian-mark-line.js +7 -18
  13. package/cjs/component/marker/mark-line/cartesian-mark-line.js.map +1 -1
  14. package/cjs/component/marker/mark-line/interface/spec.d.ts +2 -9
  15. package/cjs/component/marker/mark-line/interface/spec.js.map +1 -1
  16. package/cjs/core/index.d.ts +1 -1
  17. package/cjs/core/index.js +1 -1
  18. package/cjs/core/index.js.map +1 -1
  19. package/cjs/interaction/triggers/element-active.js +1 -2
  20. package/cjs/interaction/triggers/element-active.js.map +1 -1
  21. package/cjs/series/bar/bar.js +1 -1
  22. package/cjs/series/bar/bar.js.map +1 -1
  23. package/cjs/series/scatter/scatter.d.ts +3 -0
  24. package/cjs/series/scatter/scatter.js +24 -6
  25. package/cjs/series/scatter/scatter.js.map +1 -1
  26. package/esm/animation/index.js +2 -1
  27. package/esm/chart/base/base-chart.js +7 -12
  28. package/esm/chart/base/base-chart.js.map +1 -1
  29. package/esm/chart/radar/radar-transformer.js +4 -4
  30. package/esm/chart/radar/radar-transformer.js.map +1 -1
  31. package/esm/compile/state-manager.js +1 -2
  32. package/esm/component/marker/mark-line/cartesian-mark-line.js +8 -18
  33. package/esm/component/marker/mark-line/cartesian-mark-line.js.map +1 -1
  34. package/esm/component/marker/mark-line/interface/spec.d.ts +2 -9
  35. package/esm/component/marker/mark-line/interface/spec.js.map +1 -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/interaction/triggers/element-active.js +1 -2
  40. package/esm/interaction/triggers/element-active.js.map +1 -1
  41. package/esm/series/bar/bar.js +1 -1
  42. package/esm/series/bar/bar.js.map +1 -1
  43. package/esm/series/scatter/scatter.d.ts +3 -0
  44. package/esm/series/scatter/scatter.js +27 -5
  45. package/esm/series/scatter/scatter.js.map +1 -1
  46. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/marker/mark-line/cartesian-mark-line.ts"],"names":[],"mappings":"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","file":"cartesian-mark-line.js","sourcesContent":["import { DataView } from '@visactor/vdataset';\nimport type { IStepMarkLineSpec } from './interface';\nimport { ComponentTypeEnum } from '../../interface/type';\nimport type { IOptionAggr, IOptionWithCoordinates, IOptionRegr } from '../../../data/transforms/interface';\nimport { cartesianCoordinateLayout, positionLayout, xyLayout, getMarkLineProcessInfo } from '../utils';\nimport {\n type MarkLineAttrs,\n MarkLine as MarkLineComponent,\n registerMarkLineAnimate\n} from '@visactor/vrender-components';\nimport { array, isFunction, isValid, isValidNumber } from '@visactor/vutils';\nimport type { IDataPos, IMarkProcessOptions } from '../interface';\nimport { getInsertPoints, getTextOffset } from './util';\nimport { Factory } from '../../../core/factory';\nimport { isPercent } from '../../../util';\nimport type { CoordinateType, IPoint } from '../../../typings';\nimport { BaseMarkLine } from './base-mark-line';\nimport { markLine } from '../../../theme/builtin/common/component/mark-line';\n\nexport class CartesianMarkLine extends BaseMarkLine {\n static type = ComponentTypeEnum.markLine;\n type = ComponentTypeEnum.markLine;\n name: string = ComponentTypeEnum.markLine;\n static coordinateType = 'cartesian';\n coordinateType = 'cartesian' as CoordinateType;\n\n static readonly builtInTheme = {\n markLine\n };\n\n declare protected _markerComponent: MarkLineComponent;\n\n protected _newMarkLineComponent(attr: MarkLineAttrs): MarkLineComponent {\n return new MarkLineComponent(attr);\n }\n protected _computePointsAttr() {\n const spec = this._spec as any;\n const data = this._markerData;\n const startRelativeSeries = this._startRelativeSeries;\n const endRelativeSeries = this._endRelativeSeries;\n const relativeSeries = this._relativeSeries;\n\n const isValidCoordinates = isValid(spec.coordinates);\n const isValidProcess = isValid(spec.process);\n const isValidProcessX = isValidProcess && isValid(spec.process.x);\n const isValidProcessY = isValidProcess && isValid(spec.process.y);\n const isPositionLayout = isValid(spec.positions);\n const autoRange = spec.autoRange ?? false;\n\n const { doXProcess, doYProcess, doXYY1Process, doYXX1Process, doXYProcess, doCoordinatesProcess } =\n getMarkLineProcessInfo(spec);\n\n let points: IPoint[] = [];\n if (\n doXProcess ||\n doXYY1Process ||\n doYProcess ||\n doYXX1Process ||\n doXYProcess ||\n (isValidCoordinates && isValidProcessX) ||\n (isValidCoordinates && isValidProcessY)\n ) {\n const xyPoints = xyLayout(data, startRelativeSeries, endRelativeSeries, relativeSeries, autoRange);\n // 这里不同的场景返回的值不同,如果同时声明了 x x1 y y1,会返回两个数值的数组(如 [[{}], [{}]]),所以需要分别处理下\n points = (xyPoints.length === 1 ? xyPoints[0] : xyPoints.map(point => point[0])) as IPoint[];\n } else if (doCoordinatesProcess) {\n points = cartesianCoordinateLayout(data, relativeSeries, autoRange, spec.coordinatesOffset);\n } else if (isPositionLayout) {\n points = positionLayout(spec.positions, relativeSeries, spec.regionRelative);\n }\n return { points };\n }\n\n protected _markerLayout() {\n const updateAttrs = this._getUpdateMarkerAttrs();\n\n if ((this._spec as IStepMarkLineSpec).type === 'type-step') {\n const startRelativeSeries = this._startRelativeSeries;\n const endRelativeSeries = this._endRelativeSeries;\n\n const { multiSegment, mainSegmentIndex } = (this._spec as IStepMarkLineSpec).line || {};\n const { connectDirection } = this._spec as IStepMarkLineSpec;\n let { expandDistance = 0 } = this._spec as IStepMarkLineSpec;\n const { points, limitRect } = updateAttrs;\n const coordinatePoints = array(points as IPoint[]).filter(Boolean);\n\n if (isFunction(expandDistance)) {\n const startRegion = startRelativeSeries?.getRegion?.();\n const endRegion = endRelativeSeries?.getRegion?.();\n expandDistance = expandDistance(this._markerData, {\n ...this.getMarkAttributeContext(),\n region: this._relativeSeries?.getRegion?.(),\n startRegion,\n endRegion,\n coordinatePoints\n });\n }\n\n let expandDistanceValue: number;\n if (isPercent(expandDistance)) {\n const regionStart = startRelativeSeries.getRegion();\n const regionStartLayoutStartPoint = regionStart.getLayoutStartPoint();\n const regionEnd = endRelativeSeries.getRegion();\n const regionEndLayoutStartPoint = regionEnd.getLayoutStartPoint();\n\n if (connectDirection === 'bottom' || connectDirection === 'top') {\n const regionHeight = Math.abs(\n Math.min(regionStartLayoutStartPoint.y, regionEndLayoutStartPoint.y) -\n Math.max(\n regionStartLayoutStartPoint.y + regionStart.getLayoutRect().height,\n regionEndLayoutStartPoint.y + regionEnd.getLayoutRect().height\n )\n );\n expandDistanceValue = (Number(expandDistance.substring(0, expandDistance.length - 1)) * regionHeight) / 100;\n } else {\n const regionWidth = Math.abs(\n Math.min(regionStartLayoutStartPoint.x, regionEndLayoutStartPoint.x) -\n Math.max(\n regionStartLayoutStartPoint.x + regionStart.getLayoutRect().width,\n regionEndLayoutStartPoint.x + regionEnd.getLayoutRect().width\n )\n );\n expandDistanceValue = (Number(expandDistance.substring(0, expandDistance.length - 1)) * regionWidth) / 100;\n }\n } else {\n expandDistanceValue = expandDistance as number;\n }\n\n if (!points || points.length < 2) {\n this._markerComponent?.setAttributes(updateAttrs);\n return;\n }\n\n const joinPoints = getInsertPoints(\n (points as IPoint[])[0],\n (points as IPoint[])[1],\n connectDirection,\n expandDistanceValue\n );\n\n let labelPositionAttrs: any;\n if (multiSegment && isValid(mainSegmentIndex)) {\n // 如果用户配置了主线段,则不进行 label 的偏移处理,直接显示在主线段中间\n labelPositionAttrs = {\n position: 'middle',\n autoRotate: false\n };\n } else {\n labelPositionAttrs = {\n position: 'start',\n autoRotate: false,\n ...getTextOffset((points as IPoint[])[0], (points as IPoint[])[1], connectDirection, expandDistanceValue)\n };\n }\n\n const markerComponentAttr = this._markerComponent?.attribute ?? {};\n const prevLabelAttrs = array(markerComponentAttr.label);\n const updateLabels = array(updateAttrs.label);\n const labelsInSpec = array(this._spec.label);\n this._markerComponent?.setAttributes({\n points: multiSegment\n ? [\n [joinPoints[0], joinPoints[1]],\n [joinPoints[1], joinPoints[2]],\n [joinPoints[2], joinPoints[3]]\n ]\n : joinPoints,\n label: updateLabels.map((labelItem, index) => {\n let refX = 0;\n let refY = 0;\n let dx = labelPositionAttrs.dx ?? 0;\n let dy = labelPositionAttrs.dy ?? 0;\n const labelSpec = labelsInSpec[index] ?? labelsInSpec[0];\n if (isValidNumber(labelSpec?.refX)) {\n refX += labelSpec.refX;\n }\n if (isValidNumber(labelSpec?.refY)) {\n refY += labelSpec.refY;\n }\n if (isValidNumber(labelSpec?.dx)) {\n dx += labelSpec.dx;\n }\n if (isValidNumber(labelSpec?.dy)) {\n dy += labelSpec.dy;\n }\n return {\n ...labelItem,\n ...labelPositionAttrs,\n refX,\n refY,\n dx,\n dy,\n textStyle: {\n ...prevLabelAttrs[index]?.textStyle,\n textAlign: 'center',\n textBaseline: 'middle'\n }\n };\n }),\n limitRect,\n multiSegment,\n mainSegmentIndex,\n dx: this._layoutOffsetX,\n dy: this._layoutOffsetY\n } as any);\n } else {\n this._markerComponent?.setAttributes(updateAttrs);\n }\n }\n\n protected _computeOptions(): IMarkProcessOptions {\n let options: IOptionAggr[] | IOptionRegr | IOptionWithCoordinates;\n let processData: DataView = this._getRelativeDataView();\n let needAggr: boolean = true;\n let needRegr: boolean = false;\n const spec: any = this._spec;\n const relativeSeries = this._relativeSeries;\n\n const { doXProcess, doYProcess, doXYY1Process, doYXX1Process, doXYProcess, doCoordinatesProcess } =\n getMarkLineProcessInfo(spec);\n\n if (doXYProcess) {\n options = [\n this._processSpecByDims([\n { dim: 'x', specValue: spec.x },\n { dim: 'y', specValue: spec.y }\n ]),\n this._processSpecByDims([\n { dim: 'x', specValue: spec.x1 },\n { dim: 'y', specValue: spec.y1 }\n ])\n ];\n } else if (doXProcess) {\n options = [this._processSpecByDims([{ dim: 'x', specValue: spec.x }])];\n } else if (doYProcess) {\n options = [this._processSpecByDims([{ dim: 'y', specValue: spec.y }])];\n } else if (doXYY1Process) {\n options = [\n this._processSpecByDims([\n { dim: 'x', specValue: spec.x },\n { dim: 'y', specValue: spec.y }\n ]),\n this._processSpecByDims([\n { dim: 'x', specValue: spec.x },\n { dim: 'y', specValue: spec.y1 }\n ])\n ];\n } else if (doYXX1Process) {\n options = [\n this._processSpecByDims([\n { dim: 'x', specValue: spec.x },\n { dim: 'y', specValue: spec.y }\n ]),\n this._processSpecByDims([\n { dim: 'x', specValue: spec.x1 },\n { dim: 'y', specValue: spec.y }\n ])\n ];\n } else if (doCoordinatesProcess) {\n options = this._processSpecCoo(spec);\n needAggr = false;\n processData = new DataView(this._option.dataSet, { name: `${this.type}_${this.id}_data` })\n .parse([relativeSeries.getViewData()], {\n type: 'dataview'\n })\n .transform({\n type: 'markerAggregation',\n options\n });\n if (spec.process && isValid(spec.process.x)) {\n options = [this._processSpecByDims([{ dim: 'x', specValue: spec.process.x as unknown as IDataPos }])];\n needAggr = true;\n }\n if (spec.process && isValid(spec.process.y)) {\n options = options = [this._processSpecByDims([{ dim: 'y', specValue: spec.process.y as unknown as IDataPos }])];\n needAggr = true;\n }\n if (spec.process && isValid(spec.process.xy)) {\n const { xField, yField } = relativeSeries.getSpec();\n options = {\n fieldX: xField,\n fieldY: yField\n };\n needRegr = true;\n }\n } else {\n needAggr = false;\n }\n return { options, needAggr, needRegr, processData };\n }\n}\n\nexport const registerMarkLine = () => {\n Factory.registerComponent(CartesianMarkLine.type, CartesianMarkLine);\n registerMarkLineAnimate();\n};\n"]}
1
+ {"version":3,"sources":["../src/component/marker/mark-line/cartesian-mark-line.ts"],"names":[],"mappings":"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","file":"cartesian-mark-line.js","sourcesContent":["import { DataView } from '@visactor/vdataset';\nimport type { IStepMarkLineSpec } from './interface';\nimport { ComponentTypeEnum } from '../../interface/type';\nimport type { IOptionAggr, IOptionWithCoordinates, IOptionRegr } from '../../../data/transforms/interface';\nimport { cartesianCoordinateLayout, positionLayout, xyLayout, getMarkLineProcessInfo } from '../utils';\nimport {\n type MarkLineAttrs,\n MarkLine as MarkLineComponent,\n registerMarkLineAnimate\n} from '@visactor/vrender-components';\nimport { array, isValid, isValidNumber } from '@visactor/vutils';\nimport type { IDataPos, IMarkProcessOptions } from '../interface';\nimport { getInsertPoints, getTextOffset } from './util';\nimport { Factory } from '../../../core/factory';\nimport { isPercent } from '../../../util';\nimport type { CoordinateType, IPoint } from '../../../typings';\nimport { BaseMarkLine } from './base-mark-line';\nimport { markLine } from '../../../theme/builtin/common/component/mark-line';\n\nexport class CartesianMarkLine extends BaseMarkLine {\n static type = ComponentTypeEnum.markLine;\n type = ComponentTypeEnum.markLine;\n name: string = ComponentTypeEnum.markLine;\n static coordinateType = 'cartesian';\n coordinateType = 'cartesian' as CoordinateType;\n\n static readonly builtInTheme = {\n markLine\n };\n\n protected declare _markerComponent: MarkLineComponent;\n\n protected _newMarkLineComponent(attr: MarkLineAttrs): MarkLineComponent {\n return new MarkLineComponent(attr);\n }\n protected _computePointsAttr() {\n const spec = this._spec as any;\n const data = this._markerData;\n const startRelativeSeries = this._startRelativeSeries;\n const endRelativeSeries = this._endRelativeSeries;\n const relativeSeries = this._relativeSeries;\n\n const isValidCoordinates = isValid(spec.coordinates);\n const isValidProcess = isValid(spec.process);\n const isValidProcessX = isValidProcess && isValid(spec.process.x);\n const isValidProcessY = isValidProcess && isValid(spec.process.y);\n const isPositionLayout = isValid(spec.positions);\n const autoRange = spec.autoRange ?? false;\n\n const { doXProcess, doYProcess, doXYY1Process, doYXX1Process, doXYProcess, doCoordinatesProcess } =\n getMarkLineProcessInfo(spec);\n\n let points: IPoint[] = [];\n if (\n doXProcess ||\n doXYY1Process ||\n doYProcess ||\n doYXX1Process ||\n doXYProcess ||\n (isValidCoordinates && isValidProcessX) ||\n (isValidCoordinates && isValidProcessY)\n ) {\n const xyPoints = xyLayout(data, startRelativeSeries, endRelativeSeries, relativeSeries, autoRange);\n // 这里不同的场景返回的值不同,如果同时声明了 x x1 y y1,会返回两个数值的数组(如 [[{}], [{}]]),所以需要分别处理下\n points = (xyPoints.length === 1 ? xyPoints[0] : xyPoints.map(point => point[0])) as IPoint[];\n } else if (doCoordinatesProcess) {\n points = cartesianCoordinateLayout(data, relativeSeries, autoRange, spec.coordinatesOffset);\n } else if (isPositionLayout) {\n points = positionLayout(spec.positions, relativeSeries, spec.regionRelative);\n }\n return { points };\n }\n\n protected _markerLayout() {\n const updateAttrs = this._getUpdateMarkerAttrs();\n\n if ((this._spec as IStepMarkLineSpec).type === 'type-step') {\n const startRelativeSeries = this._startRelativeSeries;\n const endRelativeSeries = this._endRelativeSeries;\n\n const { multiSegment, mainSegmentIndex } = (this._spec as IStepMarkLineSpec).line || {};\n const { connectDirection, expandDistance = 0 } = this._spec as IStepMarkLineSpec;\n\n let expandDistanceValue: number;\n if (isPercent(expandDistance)) {\n const regionStart = startRelativeSeries.getRegion();\n const regionStartLayoutStartPoint = regionStart.getLayoutStartPoint();\n const regionEnd = endRelativeSeries.getRegion();\n const regionEndLayoutStartPoint = regionEnd.getLayoutStartPoint();\n\n if (connectDirection === 'bottom' || connectDirection === 'top') {\n const regionHeight = Math.abs(\n Math.min(regionStartLayoutStartPoint.y, regionEndLayoutStartPoint.y) -\n Math.max(\n regionStartLayoutStartPoint.y + regionStart.getLayoutRect().height,\n regionEndLayoutStartPoint.y + regionEnd.getLayoutRect().height\n )\n );\n expandDistanceValue = (Number(expandDistance.substring(0, expandDistance.length - 1)) * regionHeight) / 100;\n } else {\n const regionWidth = Math.abs(\n Math.min(regionStartLayoutStartPoint.x, regionEndLayoutStartPoint.x) -\n Math.max(\n regionStartLayoutStartPoint.x + regionStart.getLayoutRect().width,\n regionEndLayoutStartPoint.x + regionEnd.getLayoutRect().width\n )\n );\n expandDistanceValue = (Number(expandDistance.substring(0, expandDistance.length - 1)) * regionWidth) / 100;\n }\n } else {\n expandDistanceValue = expandDistance as number;\n }\n const { points, limitRect } = updateAttrs;\n if (!points || points.length < 2) {\n this._markerComponent?.setAttributes(updateAttrs);\n return;\n }\n\n const joinPoints = getInsertPoints(\n (points as IPoint[])[0],\n (points as IPoint[])[1],\n connectDirection,\n expandDistanceValue\n );\n\n let labelPositionAttrs: any;\n if (multiSegment && isValid(mainSegmentIndex)) {\n // 如果用户配置了主线段,则不进行 label 的偏移处理,直接显示在主线段中间\n labelPositionAttrs = {\n position: 'middle',\n autoRotate: false\n };\n } else {\n labelPositionAttrs = {\n position: 'start',\n autoRotate: false,\n ...getTextOffset((points as IPoint[])[0], (points as IPoint[])[1], connectDirection, expandDistanceValue)\n };\n }\n\n const markerComponentAttr = this._markerComponent?.attribute ?? {};\n const prevLabelAttrs = array(markerComponentAttr.label);\n const updateLabels = array(updateAttrs.label);\n const labelsInSpec = array(this._spec.label);\n this._markerComponent?.setAttributes({\n points: multiSegment\n ? [\n [joinPoints[0], joinPoints[1]],\n [joinPoints[1], joinPoints[2]],\n [joinPoints[2], joinPoints[3]]\n ]\n : joinPoints,\n label: updateLabels.map((labelItem, index) => {\n let refX = 0;\n let refY = 0;\n let dx = labelPositionAttrs.dx ?? 0;\n let dy = labelPositionAttrs.dy ?? 0;\n const labelSpec = labelsInSpec[index] ?? labelsInSpec[0];\n if (isValidNumber(labelSpec?.refX)) {\n refX += labelSpec.refX;\n }\n if (isValidNumber(labelSpec?.refY)) {\n refY += labelSpec.refY;\n }\n if (isValidNumber(labelSpec?.dx)) {\n dx += labelSpec.dx;\n }\n if (isValidNumber(labelSpec?.dy)) {\n dy += labelSpec.dy;\n }\n return {\n ...labelItem,\n ...labelPositionAttrs,\n refX,\n refY,\n dx,\n dy,\n textStyle: {\n ...prevLabelAttrs[index]?.textStyle,\n textAlign: 'center',\n textBaseline: 'middle'\n }\n };\n }),\n limitRect,\n multiSegment,\n mainSegmentIndex,\n dx: this._layoutOffsetX,\n dy: this._layoutOffsetY\n } as any);\n } else {\n this._markerComponent?.setAttributes(updateAttrs);\n }\n }\n\n protected _computeOptions(): IMarkProcessOptions {\n let options: IOptionAggr[] | IOptionRegr | IOptionWithCoordinates;\n let processData: DataView = this._getRelativeDataView();\n let needAggr: boolean = true;\n let needRegr: boolean = false;\n const spec: any = this._spec;\n const relativeSeries = this._relativeSeries;\n\n const { doXProcess, doYProcess, doXYY1Process, doYXX1Process, doXYProcess, doCoordinatesProcess } =\n getMarkLineProcessInfo(spec);\n\n if (doXYProcess) {\n options = [\n this._processSpecByDims([\n { dim: 'x', specValue: spec.x },\n { dim: 'y', specValue: spec.y }\n ]),\n this._processSpecByDims([\n { dim: 'x', specValue: spec.x1 },\n { dim: 'y', specValue: spec.y1 }\n ])\n ];\n } else if (doXProcess) {\n options = [this._processSpecByDims([{ dim: 'x', specValue: spec.x }])];\n } else if (doYProcess) {\n options = [this._processSpecByDims([{ dim: 'y', specValue: spec.y }])];\n } else if (doXYY1Process) {\n options = [\n this._processSpecByDims([\n { dim: 'x', specValue: spec.x },\n { dim: 'y', specValue: spec.y }\n ]),\n this._processSpecByDims([\n { dim: 'x', specValue: spec.x },\n { dim: 'y', specValue: spec.y1 }\n ])\n ];\n } else if (doYXX1Process) {\n options = [\n this._processSpecByDims([\n { dim: 'x', specValue: spec.x },\n { dim: 'y', specValue: spec.y }\n ]),\n this._processSpecByDims([\n { dim: 'x', specValue: spec.x1 },\n { dim: 'y', specValue: spec.y }\n ])\n ];\n } else if (doCoordinatesProcess) {\n options = this._processSpecCoo(spec);\n needAggr = false;\n processData = new DataView(this._option.dataSet, { name: `${this.type}_${this.id}_data` })\n .parse([relativeSeries.getViewData()], {\n type: 'dataview'\n })\n .transform({\n type: 'markerAggregation',\n options\n });\n if (spec.process && isValid(spec.process.x)) {\n options = [this._processSpecByDims([{ dim: 'x', specValue: spec.process.x as unknown as IDataPos }])];\n needAggr = true;\n }\n if (spec.process && isValid(spec.process.y)) {\n options = options = [this._processSpecByDims([{ dim: 'y', specValue: spec.process.y as unknown as IDataPos }])];\n needAggr = true;\n }\n if (spec.process && isValid(spec.process.xy)) {\n const { xField, yField } = relativeSeries.getSpec();\n options = {\n fieldX: xField,\n fieldY: yField\n };\n needRegr = true;\n }\n } else {\n needAggr = false;\n }\n return { options, needAggr, needRegr, processData };\n }\n}\n\nexport const registerMarkLine = () => {\n Factory.registerComponent(CartesianMarkLine.type, CartesianMarkLine);\n registerMarkLineAnimate();\n};\n"]}
@@ -1,11 +1,9 @@
1
- import type { DataView } from '@visactor/vdataset';
2
1
  import type { IComponent } from '../../../interface';
3
- import type { IAggrType, IMarkerAttributeContext, IMarkerPositionsSpec, IDataPointSpec, IMarkerSpec, IDataPos, IDataPosCallback, IMarkerLabelSpec, IMarkerCrossSeriesSpec, OffsetPoint, MarkerStateValue, MarkerStateCallback, IMarkerSupportSeries } from '../../interface';
2
+ import type { IAggrType, IMarkerPositionsSpec, IDataPointSpec, IMarkerSpec, IDataPos, IDataPosCallback, IMarkerLabelSpec, IMarkerCrossSeriesSpec, OffsetPoint, MarkerStateValue, MarkerStateCallback, IMarkerSupportSeries } from '../../interface';
4
3
  import type { IRegressType } from '../../mark-area/interface';
5
4
  import type { IMarkLineTheme } from './theme';
6
5
  import type { Datum, ILineMarkSpec, IPoint } from '../../../../typings';
7
6
  import type { BaseMarkerAnimation, MarkCommonLineAnimationType } from '@visactor/vrender-components';
8
- import type { IRegion } from '../../../../region/interface';
9
7
  export type IMarkLine = IComponent;
10
8
  export type IMarkLineSpec = (IMarkerSpec & (IMarkLineXSpec | IMarkLineYSpec | IMarkLineXYSpec | IMarkLineXYY1Spec | IMarkLineYXX1Spec | IMarkLineAngleSpec | IMarkLineRadiusSpec | IMarkLineAngRadRad1Spec | IMarkLineRadAngAng1Spec | IMarkLineAngRadSpec | IMarkLineCoordinateSpec | IMarkerPositionsSpec) & IMarkLineTheme & BaseMarkerAnimation<MarkCommonLineAnimationType>) | (IStepMarkLineSpec & BaseMarkerAnimation<MarkCommonLineAnimationType>);
11
9
  export interface IMarkLineXSpec extends IMarkerCrossSeriesSpec {
@@ -66,12 +64,7 @@ export type IMarkLineCoordinateSpec = {
66
64
  export type IStepMarkLineSpec = IMarkerSpec & {
67
65
  type: 'type-step';
68
66
  connectDirection: 'top' | 'bottom' | 'left' | 'right';
69
- expandDistance?: number | string | ((markerData: DataView, context: IMarkerAttributeContext & {
70
- region: IRegion;
71
- startRegion: IRegion;
72
- endRegion: IRegion;
73
- coordinatePoints: IPoint[];
74
- }) => number | string);
67
+ expandDistance?: number | string;
75
68
  label?: IMarkerLabelSpec;
76
69
  line?: {
77
70
  multiSegment?: boolean;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/marker/mark-line/interface/spec.ts"],"names":[],"mappings":"","file":"spec.js","sourcesContent":["import type { DataView } from '@visactor/vdataset';\nimport type { IComponent } from '../../../interface';\nimport type {\n IAggrType,\n IMarkerAttributeContext,\n IMarkerPositionsSpec,\n IDataPointSpec,\n IMarkerSpec,\n IDataPos,\n IDataPosCallback,\n IMarkerLabelSpec,\n IMarkerCrossSeriesSpec,\n OffsetPoint,\n MarkerStateValue,\n MarkerStateCallback,\n IMarkerSupportSeries\n} from '../../interface';\nimport type { IRegressType } from '../../mark-area/interface';\nimport type { IMarkLineTheme } from './theme';\nimport type { Datum, ILineMarkSpec, IPoint } from '../../../../typings';\nimport type { BaseMarkerAnimation, MarkCommonLineAnimationType } from '@visactor/vrender-components';\nimport type { IRegion } from '../../../../region/interface';\n\nexport type IMarkLine = IComponent;\n\n/**\n * 辅助线配置,一般用于展示图表的趋势线、平均线等\n */\nexport type IMarkLineSpec =\n | (IMarkerSpec &\n /**\n * 标注目标:笛卡尔坐标系坐标空间\n */\n (| IMarkLineXSpec\n | IMarkLineYSpec\n | IMarkLineXYSpec\n | IMarkLineXYY1Spec\n | IMarkLineYXX1Spec\n /**\n * 标注目标: 极坐标系\n * @since 1.11.0\n */\n | IMarkLineAngleSpec\n | IMarkLineRadiusSpec\n | IMarkLineAngRadRad1Spec\n | IMarkLineRadAngAng1Spec\n | IMarkLineAngRadSpec\n // 标注目标:数据元素\n | IMarkLineCoordinateSpec\n // 标注目标: 任意位置\n | IMarkerPositionsSpec\n ) &\n IMarkLineTheme &\n /**\n * 动画配置\n * @since 1.11.0\n */\n BaseMarkerAnimation<MarkCommonLineAnimationType>)\n | (IStepMarkLineSpec & BaseMarkerAnimation<MarkCommonLineAnimationType>); // 标注目标:任意位置\n\nexport interface IMarkLineXSpec extends IMarkerCrossSeriesSpec {\n /**\n * 单独声明 x 属性,可以绘制一条贯穿 y 轴的标注线\n * x 轴上的参考线。可以配置参考线在 x 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * 可以将 x 配置为 '15%' 百分比的形式,用于表示将 x 绘制在 marker 所在 region 横轴(从左往右)的百分之 15 位置处。\n */\n x: IDataPos | IDataPosCallback;\n}\n\nexport interface IMarkLineXYY1Spec extends IMarkerCrossSeriesSpec {\n /**\n * 参考线在 x 轴上位置,可以配置参考线在 x 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * 可以将 x 配置为 '15%' 百分比的形式,表示该位置位于 region 横轴(从左往右)的百分之 15 位置处。\n */\n x: IDataPos | IDataPosCallback;\n /**\n * 该参考线在 y 轴的起点位置,可以配置 y 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * 可以将 y 配置为 '15%' 百分比的形式,表示该位置位于 region 纵轴(从上到下)的百分之 15 位置处。\n */\n y: IDataPos | IDataPosCallback;\n /**\n * 该参考线在 y 轴的终点位置,可以配置 y 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * 可以将 y 配置为 '15%' 百分比的形式,表示该位置位于 region 纵轴(从上到下)的百分之 15 位置处。\n * @since 1.7.3\n */\n y1: IDataPos | IDataPosCallback;\n}\n\nexport interface IMarkLineYSpec extends IMarkerCrossSeriesSpec {\n /**\n * 单独声明 y 属性,可以绘制一条贯穿 x 轴的标注线\n * y轴上的参考线。可以配置参考线在y轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算\n * 可以将 y 配置为 '15%' 百分比的形式,用于表示将 x 绘制在 marker 所在 region 纵轴(从上到下)的百分之 15 位置处\n */\n y: IDataPos | IDataPosCallback;\n}\n\nexport interface IMarkLineYXX1Spec extends IMarkerCrossSeriesSpec {\n /**\n * 参考线在 y 轴上位置,可以配置参考线在 y 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * 可以将 y 配置为 '15%' 百分比的形式,表示该位置位于 region 纵轴(从上到下)的百分之 15 位置处。\n */\n y: IDataPos | IDataPosCallback;\n /**\n * 该参考线在 x 轴的起点位置,可以配置 x 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * 可以将 x 配置为 '15%' 百分比的形式,表示该位置位于 region 横轴(从左往右)的百分之 15 位置处。\n */\n x: IDataPos | IDataPosCallback;\n /**\n * 该参考线在 x 轴的终点位置,可以配置 x 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * 可以将 x 配置为 '15%' 百分比的形式,表示该位置位于 region 横轴(从左往右)的百分之 15 位置处。\n * @since 1.7.3\n */\n x1: IDataPos | IDataPosCallback;\n}\n\nexport interface IMarkLineXYSpec extends IMarkerCrossSeriesSpec {\n /**\n * 参考线起始点在 x 轴上位置,可以配置参考线在 x 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * 可以将 x 配置为 '15%' 百分比的形式,表示该位置位于 region 横轴(从左往右)的百分之 15 位置处。\n */\n x: IDataPos | IDataPosCallback;\n /**\n * 该参考线起始点在 y 轴的起点位置,可以配置 y 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * 可以将 y 配置为 '15%' 百分比的形式,表示该位置位于 region 纵轴(从上到下)的百分之 15 位置处。\n */\n y: IDataPos | IDataPosCallback;\n /**\n * 该参考线终点在 x 轴的终点位置,可以配置 x 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * 可以将 x 配置为 '15%' 百分比的形式,表示该位置位于 region 横轴(从左往右)的百分之 15 位置处。\n * @since 1.7.3\n */\n x1: IDataPos | IDataPosCallback;\n /**\n * 该参考线终点在 y 轴的终点位置,可以配置 y 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * 可以将 y 配置为 '15%' 百分比的形式,表示该位置位于 region 纵轴(从上到下)的百分之 15 位置处。\n * @since 1.7.3\n */\n y1: IDataPos | IDataPosCallback;\n}\n\nexport interface IMarkLineAngleSpec extends IMarkerCrossSeriesSpec {\n /**\n * 极坐标系下, 参考线在 angle 轴上位置,可以配置参考线在 angle 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * @since 1.11.0\n */\n angle: IDataPos | IDataPosCallback;\n}\n\nexport interface IMarkLineRadiusSpec extends IMarkerCrossSeriesSpec {\n /**\n * 极坐标系下, 参考线在 radius 轴上位置,可以配置参考线在 angle 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * @since 1.11.0\n */\n radius: IDataPos | IDataPosCallback;\n}\n\nexport interface IMarkLineAngRadRad1Spec extends IMarkerCrossSeriesSpec {\n /**\n * 极坐标系下, 参考线在 angle 轴上位置,可以配置参考线在 angle 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * @since 1.11.0\n */\n angle: IDataPos | IDataPosCallback;\n /**\n * 极坐标系下, 参考线在 radius 轴上位置,可以配置参考线在 angle 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * @since 1.11.0\n */\n radius: IDataPos | IDataPosCallback;\n /**\n * 极坐标系下, 参考线在 radius 轴上位置,可以配置参考线在 angle 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * @since 1.11.0\n */\n radius1: IDataPos | IDataPosCallback;\n}\n\nexport interface IMarkLineRadAngAng1Spec extends IMarkerCrossSeriesSpec {\n /**\n * 极坐标系下, 参考线在 angle 轴上位置,可以配置参考线在 angle 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * @since 1.11.0\n */\n angle: IDataPos | IDataPosCallback;\n /**\n * 极坐标系下, 参考线在 angle 轴上位置,可以配置参考线在 angle 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * @since 1.11.0\n */\n angle1: IDataPos | IDataPosCallback;\n /**\n * 极坐标系下, 参考线在 radius 轴上位置,可以配置参考线在 angle 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * @since 1.11.0\n */\n radius: IDataPos | IDataPosCallback;\n}\n\nexport interface IMarkLineAngRadSpec extends IMarkerCrossSeriesSpec {\n /**\n * 极坐标系下, 参考线在 angle 轴上位置,可以配置参考线在 angle 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * @since 1.11.0\n */\n angle: IDataPos | IDataPosCallback;\n /**\n * 极坐标系下, 参考线在 angle 轴上位置,可以配置参考线在 angle 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * @since 1.11.0\n */\n angle1: IDataPos | IDataPosCallback;\n /**\n * 极坐标系下, 参考线在 radius 轴上位置,可以配置参考线在 angle 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * @since 1.11.0\n */\n radius: IDataPos | IDataPosCallback;\n /**\n * 极坐标系下, 参考线在 radius 轴上位置,可以配置参考线在 angle 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * @since 1.11.0\n */\n radius1: IDataPos | IDataPosCallback;\n}\n\nexport type IMarkLineCoordinateSpec = {\n /**\n * 指定数据点的参考线。基于指定数据点进行参考线的绘制,可以对数据点进行数据处理\n * `coordinates` 自 1.12.0 版本开始支持回调函数\n */\n coordinates: IDataPointSpec[] | ((seriesData: Datum[], relativeSeries: IMarkerSupportSeries) => IDataPointSpec[]);\n /**\n * 对每个数据点转化后的画布坐标点进行偏移,该偏移值可以是像素值,也可以是 string 类型,如 '20%' 代表百分比\n * 每个元素对应一个坐标点的偏移量\n * @since 1.7.3\n */\n coordinatesOffset?: OffsetPoint[];\n /**\n * 数据点的处理方法。 如果不配置则按照coordinate数组直接连接成line。\n */\n process?:\n | {\n x: IAggrType;\n }\n | {\n y: IAggrType;\n }\n | {\n xy: IRegressType; // FIXME: xy属性名称不太合理,可能需调整\n };\n};\n\nexport type IStepMarkLineSpec = IMarkerSpec & {\n /**\n * 指定辅助线的连接类型,step 的连接方式为由交替的水平线和处置线组成的\n */\n type: 'type-step';\n /**\n * 线的链接方向\n */\n connectDirection: 'top' | 'bottom' | 'left' | 'right';\n /**\n * 在连接方向的扩展距离。\n * number 类型为像素值\n * string 类型为百分比,相对于 region 区域宽度/高度的百分比,如 '30%'\n * 回调函数参数同 marker 其他回调,支持拿到 markerData 与上下文,\n * 并额外补充了 region/startRegion/endRegion 便于跨 region 计算,以及当前差异标注的坐标点。\n */\n expandDistance?:\n | number\n | string\n | ((\n markerData: DataView,\n context: IMarkerAttributeContext & {\n region: IRegion;\n startRegion: IRegion;\n endRegion: IRegion;\n coordinatePoints: IPoint[];\n }\n ) => number | string);\n /**\n * 标注线的标签样式\n */\n label?: IMarkerLabelSpec;\n /**\n * 标注线的线配置\n */\n line?: {\n /**\n * 是否对 points 进行多段处理,默认为 false,即直接将所有的点连接成线。\n * 如果需要进行多段处理,需要将 points 属性配置为 Point[][] 类型\n * @default false\n */\n multiSegment?: boolean;\n /**\n * 在 `multiSegment` 属性开启的前提下,用于声明那一段线段用来作为主线段,如果不声明,默认全段为主线段\n */\n mainSegmentIndex?: number;\n /**\n * 当进行多段配置时,可以通过数组的方式传入\n */\n style?: ILineMarkSpec | ILineMarkSpec[];\n state?: Record<\n MarkerStateValue,\n ILineMarkSpec | ILineMarkSpec[] | MarkerStateCallback<ILineMarkSpec | ILineMarkSpec[]>\n >;\n };\n} & Omit<IMarkLineTheme, 'label' | 'line'> &\n (\n | {\n /**\n * 指定数据点的参考线。基于指定数据点进行参考线的绘制,可以对数据点进行数据处理\n * `coordinates` 自 1.12.0 版本开始支持回调函数\n */\n coordinates:\n | [IDataPointSpec, IDataPointSpec]\n | ((seriesData: Datum[], relativeSeries: IMarkerSupportSeries) => [IDataPointSpec, IDataPointSpec]);\n /**\n * 数据点的处理方法。 如果不配置则按照coordinate数组直接连接成line。\n */\n process?:\n | {\n x: IAggrType;\n }\n | {\n y: IAggrType;\n }\n | {\n xy: IRegressType; // FIXME: xy属性名称不太合理,可能需调整\n };\n }\n | {\n /**\n * 画布坐标\n * `positions` 自 1.12.0 版本开始支持回调函数\n */\n positions: [IPoint, IPoint] | ((seriesData: Datum[], relativeSeries: IMarkerSupportSeries) => [IPoint, IPoint]);\n /**\n * 是否为相对 region 的坐标,默认为 false,即相对画布的坐标\n * @default false\n * @since 1.7.0\n */\n regionRelative?: boolean;\n }\n );\n"]}
1
+ {"version":3,"sources":["../src/component/marker/mark-line/interface/spec.ts"],"names":[],"mappings":"","file":"spec.js","sourcesContent":["import type { IComponent } from '../../../interface';\nimport type {\n IAggrType,\n IMarkerPositionsSpec,\n IDataPointSpec,\n IMarkerSpec,\n IDataPos,\n IDataPosCallback,\n IMarkerLabelSpec,\n IMarkerCrossSeriesSpec,\n OffsetPoint,\n MarkerStateValue,\n MarkerStateCallback,\n IMarkerSupportSeries\n} from '../../interface';\nimport type { IRegressType } from '../../mark-area/interface';\nimport type { IMarkLineTheme } from './theme';\nimport type { Datum, ILineMarkSpec, IPoint } from '../../../../typings';\nimport type { BaseMarkerAnimation, MarkCommonLineAnimationType } from '@visactor/vrender-components';\n\nexport type IMarkLine = IComponent;\n\n/**\n * 辅助线配置,一般用于展示图表的趋势线、平均线等\n */\nexport type IMarkLineSpec =\n | (IMarkerSpec &\n /**\n * 标注目标:笛卡尔坐标系坐标空间\n */\n (| IMarkLineXSpec\n | IMarkLineYSpec\n | IMarkLineXYSpec\n | IMarkLineXYY1Spec\n | IMarkLineYXX1Spec\n /**\n * 标注目标: 极坐标系\n * @since 1.11.0\n */\n | IMarkLineAngleSpec\n | IMarkLineRadiusSpec\n | IMarkLineAngRadRad1Spec\n | IMarkLineRadAngAng1Spec\n | IMarkLineAngRadSpec\n // 标注目标:数据元素\n | IMarkLineCoordinateSpec\n // 标注目标: 任意位置\n | IMarkerPositionsSpec\n ) &\n IMarkLineTheme &\n /**\n * 动画配置\n * @since 1.11.0\n */\n BaseMarkerAnimation<MarkCommonLineAnimationType>)\n | (IStepMarkLineSpec & BaseMarkerAnimation<MarkCommonLineAnimationType>); // 标注目标:任意位置\n\nexport interface IMarkLineXSpec extends IMarkerCrossSeriesSpec {\n /**\n * 单独声明 x 属性,可以绘制一条贯穿 y 轴的标注线\n * x 轴上的参考线。可以配置参考线在 x 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * 可以将 x 配置为 '15%' 百分比的形式,用于表示将 x 绘制在 marker 所在 region 横轴(从左往右)的百分之 15 位置处。\n */\n x: IDataPos | IDataPosCallback;\n}\n\nexport interface IMarkLineXYY1Spec extends IMarkerCrossSeriesSpec {\n /**\n * 参考线在 x 轴上位置,可以配置参考线在 x 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * 可以将 x 配置为 '15%' 百分比的形式,表示该位置位于 region 横轴(从左往右)的百分之 15 位置处。\n */\n x: IDataPos | IDataPosCallback;\n /**\n * 该参考线在 y 轴的起点位置,可以配置 y 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * 可以将 y 配置为 '15%' 百分比的形式,表示该位置位于 region 纵轴(从上到下)的百分之 15 位置处。\n */\n y: IDataPos | IDataPosCallback;\n /**\n * 该参考线在 y 轴的终点位置,可以配置 y 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * 可以将 y 配置为 '15%' 百分比的形式,表示该位置位于 region 纵轴(从上到下)的百分之 15 位置处。\n * @since 1.7.3\n */\n y1: IDataPos | IDataPosCallback;\n}\n\nexport interface IMarkLineYSpec extends IMarkerCrossSeriesSpec {\n /**\n * 单独声明 y 属性,可以绘制一条贯穿 x 轴的标注线\n * y轴上的参考线。可以配置参考线在y轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算\n * 可以将 y 配置为 '15%' 百分比的形式,用于表示将 x 绘制在 marker 所在 region 纵轴(从上到下)的百分之 15 位置处\n */\n y: IDataPos | IDataPosCallback;\n}\n\nexport interface IMarkLineYXX1Spec extends IMarkerCrossSeriesSpec {\n /**\n * 参考线在 y 轴上位置,可以配置参考线在 y 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * 可以将 y 配置为 '15%' 百分比的形式,表示该位置位于 region 纵轴(从上到下)的百分之 15 位置处。\n */\n y: IDataPos | IDataPosCallback;\n /**\n * 该参考线在 x 轴的起点位置,可以配置 x 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * 可以将 x 配置为 '15%' 百分比的形式,表示该位置位于 region 横轴(从左往右)的百分之 15 位置处。\n */\n x: IDataPos | IDataPosCallback;\n /**\n * 该参考线在 x 轴的终点位置,可以配置 x 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * 可以将 x 配置为 '15%' 百分比的形式,表示该位置位于 region 横轴(从左往右)的百分之 15 位置处。\n * @since 1.7.3\n */\n x1: IDataPos | IDataPosCallback;\n}\n\nexport interface IMarkLineXYSpec extends IMarkerCrossSeriesSpec {\n /**\n * 参考线起始点在 x 轴上位置,可以配置参考线在 x 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * 可以将 x 配置为 '15%' 百分比的形式,表示该位置位于 region 横轴(从左往右)的百分之 15 位置处。\n */\n x: IDataPos | IDataPosCallback;\n /**\n * 该参考线起始点在 y 轴的起点位置,可以配置 y 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * 可以将 y 配置为 '15%' 百分比的形式,表示该位置位于 region 纵轴(从上到下)的百分之 15 位置处。\n */\n y: IDataPos | IDataPosCallback;\n /**\n * 该参考线终点在 x 轴的终点位置,可以配置 x 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * 可以将 x 配置为 '15%' 百分比的形式,表示该位置位于 region 横轴(从左往右)的百分之 15 位置处。\n * @since 1.7.3\n */\n x1: IDataPos | IDataPosCallback;\n /**\n * 该参考线终点在 y 轴的终点位置,可以配置 y 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * 可以将 y 配置为 '15%' 百分比的形式,表示该位置位于 region 纵轴(从上到下)的百分之 15 位置处。\n * @since 1.7.3\n */\n y1: IDataPos | IDataPosCallback;\n}\n\nexport interface IMarkLineAngleSpec extends IMarkerCrossSeriesSpec {\n /**\n * 极坐标系下, 参考线在 angle 轴上位置,可以配置参考线在 angle 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * @since 1.11.0\n */\n angle: IDataPos | IDataPosCallback;\n}\n\nexport interface IMarkLineRadiusSpec extends IMarkerCrossSeriesSpec {\n /**\n * 极坐标系下, 参考线在 radius 轴上位置,可以配置参考线在 angle 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * @since 1.11.0\n */\n radius: IDataPos | IDataPosCallback;\n}\n\nexport interface IMarkLineAngRadRad1Spec extends IMarkerCrossSeriesSpec {\n /**\n * 极坐标系下, 参考线在 angle 轴上位置,可以配置参考线在 angle 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * @since 1.11.0\n */\n angle: IDataPos | IDataPosCallback;\n /**\n * 极坐标系下, 参考线在 radius 轴上位置,可以配置参考线在 angle 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * @since 1.11.0\n */\n radius: IDataPos | IDataPosCallback;\n /**\n * 极坐标系下, 参考线在 radius 轴上位置,可以配置参考线在 angle 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * @since 1.11.0\n */\n radius1: IDataPos | IDataPosCallback;\n}\n\nexport interface IMarkLineRadAngAng1Spec extends IMarkerCrossSeriesSpec {\n /**\n * 极坐标系下, 参考线在 angle 轴上位置,可以配置参考线在 angle 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * @since 1.11.0\n */\n angle: IDataPos | IDataPosCallback;\n /**\n * 极坐标系下, 参考线在 angle 轴上位置,可以配置参考线在 angle 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * @since 1.11.0\n */\n angle1: IDataPos | IDataPosCallback;\n /**\n * 极坐标系下, 参考线在 radius 轴上位置,可以配置参考线在 angle 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * @since 1.11.0\n */\n radius: IDataPos | IDataPosCallback;\n}\n\nexport interface IMarkLineAngRadSpec extends IMarkerCrossSeriesSpec {\n /**\n * 极坐标系下, 参考线在 angle 轴上位置,可以配置参考线在 angle 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * @since 1.11.0\n */\n angle: IDataPos | IDataPosCallback;\n /**\n * 极坐标系下, 参考线在 angle 轴上位置,可以配置参考线在 angle 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * @since 1.11.0\n */\n angle1: IDataPos | IDataPosCallback;\n /**\n * 极坐标系下, 参考线在 radius 轴上位置,可以配置参考线在 angle 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * @since 1.11.0\n */\n radius: IDataPos | IDataPosCallback;\n /**\n * 极坐标系下, 参考线在 radius 轴上位置,可以配置参考线在 angle 轴上的值,或者聚合计算类型,或者以回调的形式通过数据自行计算。\n * @since 1.11.0\n */\n radius1: IDataPos | IDataPosCallback;\n}\n\nexport type IMarkLineCoordinateSpec = {\n /**\n * 指定数据点的参考线。基于指定数据点进行参考线的绘制,可以对数据点进行数据处理\n * `coordinates` 自 1.12.0 版本开始支持回调函数\n */\n coordinates: IDataPointSpec[] | ((seriesData: Datum[], relativeSeries: IMarkerSupportSeries) => IDataPointSpec[]);\n /**\n * 对每个数据点转化后的画布坐标点进行偏移,该偏移值可以是像素值,也可以是 string 类型,如 '20%' 代表百分比\n * 每个元素对应一个坐标点的偏移量\n * @since 1.7.3\n */\n coordinatesOffset?: OffsetPoint[];\n /**\n * 数据点的处理方法。 如果不配置则按照coordinate数组直接连接成line。\n */\n process?:\n | {\n x: IAggrType;\n }\n | {\n y: IAggrType;\n }\n | {\n xy: IRegressType; // FIXME: xy属性名称不太合理,可能需调整\n };\n};\n\nexport type IStepMarkLineSpec = IMarkerSpec & {\n /**\n * 指定辅助线的连接类型,step 的连接方式为由交替的水平线和处置线组成的\n */\n type: 'type-step';\n /**\n * 线的链接方向\n */\n connectDirection: 'top' | 'bottom' | 'left' | 'right';\n /**\n * 在连接方向的扩展距离。\n * number 类型为像素值\n * string 类型为百分比,相对于 region 区域宽度/高度的百分比,如 '30%'\n */\n expandDistance?: number | string;\n /**\n * 标注线的标签样式\n */\n label?: IMarkerLabelSpec;\n /**\n * 标注线的线配置\n */\n line?: {\n /**\n * 是否对 points 进行多段处理,默认为 false,即直接将所有的点连接成线。\n * 如果需要进行多段处理,需要将 points 属性配置为 Point[][] 类型\n * @default false\n */\n multiSegment?: boolean;\n /**\n * 在 `multiSegment` 属性开启的前提下,用于声明那一段线段用来作为主线段,如果不声明,默认全段为主线段\n */\n mainSegmentIndex?: number;\n /**\n * 当进行多段配置时,可以通过数组的方式传入\n */\n style?: ILineMarkSpec | ILineMarkSpec[];\n state?: Record<\n MarkerStateValue,\n ILineMarkSpec | ILineMarkSpec[] | MarkerStateCallback<ILineMarkSpec | ILineMarkSpec[]>\n >;\n };\n} & Omit<IMarkLineTheme, 'label' | 'line'> &\n (\n | {\n /**\n * 指定数据点的参考线。基于指定数据点进行参考线的绘制,可以对数据点进行数据处理\n * `coordinates` 自 1.12.0 版本开始支持回调函数\n */\n coordinates:\n | [IDataPointSpec, IDataPointSpec]\n | ((seriesData: Datum[], relativeSeries: IMarkerSupportSeries) => [IDataPointSpec, IDataPointSpec]);\n /**\n * 数据点的处理方法。 如果不配置则按照coordinate数组直接连接成line。\n */\n process?:\n | {\n x: IAggrType;\n }\n | {\n y: IAggrType;\n }\n | {\n xy: IRegressType; // FIXME: xy属性名称不太合理,可能需调整\n };\n }\n | {\n /**\n * 画布坐标\n * `positions` 自 1.12.0 版本开始支持回调函数\n */\n positions: [IPoint, IPoint] | ((seriesData: Datum[], relativeSeries: IMarkerSupportSeries) => [IPoint, IPoint]);\n /**\n * 是否为相对 region 的坐标,默认为 false,即相对画布的坐标\n * @default false\n * @since 1.7.0\n */\n regionRelative?: boolean;\n }\n );\n"]}
@@ -1,7 +1,7 @@
1
1
  import { VChart } from './vchart';
2
2
  import { Factory } from './factory';
3
3
  export { VChart, Factory };
4
- export declare const version = "2.0.22";
4
+ export declare const version = "2.0.23-alpha.5";
5
5
  export type { IVChart } from './interface';
6
6
  export type { IStateSpec, StateValueType } from '../compile/mark';
7
7
  export type { IRegion } from '../region/interface';
package/esm/core/index.js CHANGED
@@ -4,7 +4,7 @@ import { Factory } from "./factory";
4
4
 
5
5
  export { VChart, Factory };
6
6
 
7
- export const version = "2.0.22";
7
+ export const version = "2.0.23-alpha.5";
8
8
 
9
9
  export * from "../event/interface";
10
10
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAG3B,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAOhC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AAEnC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAI3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAK/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,gBAAgB,CAAC;AAG/B,OAAO,EACL,OAAO,EACP,WAAW,EACX,cAAc,EACd,UAAU,EACV,SAAS,EACT,UAAU,EACV,UAAU,EACV,UAAU,EACV,YAAY,EACb,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAGtE,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,6BAA6B,EAAE,gCAAgC,EAAE,MAAM,kBAAkB,CAAC;AACnG,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC","file":"index.js","sourcesContent":["/**\n * @description The core module of VChart, containing the necessary interfaces for using VChart.\n */\n\nimport { VChart } from './vchart';\nimport { Factory } from './factory';\n\nexport { VChart, Factory };\n\n// export the version\nexport const version = \"2.0.22\";\n\n// export necessary types\nexport type { IVChart } from './interface';\nexport type { IStateSpec, StateValueType } from '../compile/mark';\nexport type { IRegion } from '../region/interface';\n\nexport * from '../event/interface';\nexport * from '../theme/interface';\nexport * from '../model/interface';\n\nexport * from './interface';\nexport * from '../typings';\nexport type { IMarkGraphic, IGraphicContext } from '../mark/interface/';\n\n// some constants\nexport * from '../constant/base';\nexport * from '../constant/data';\nexport * from '../constant/layout';\nexport { AttributeLevel } from '../constant/attribute';\nexport { TransformLevel } from '../data/initialize';\nexport { STATE_VALUE_ENUM } from '../compile/mark/interface';\nexport { ChartEvent } from '../constant/event';\n\n/**\n * spec\n */\nexport * from '../typings/spec/index';\nexport * from '../typings/visual';\n\n// tooltip\nexport * from '../typings/tooltip';\n\n// theme\nexport * from '../theme/index';\n\n// vrender\nexport {\n vglobal,\n createGroup,\n createRichText,\n createText,\n createArc,\n createArea,\n createRect,\n createLine,\n createSymbol\n} from '@visactor/vrender-core';\nexport { ManualTicker, StreamLight } from '@visactor/vrender-animate';\n\n// utils\nexport * from '../util/space';\nexport { transformToGraphic } from '../util/style';\nexport { getSpecInfo } from '../component/util';\nexport { registerDataSetInstanceParser, registerDataSetInstanceTransform } from '../data/register';\nexport { lookup } from '../data/transforms/lookup';\nexport { warn } from '../util/debug';\nexport { measureText } from '../util/text';\n"]}
1
+ {"version":3,"sources":["../src/core/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAG3B,MAAM,CAAC,MAAM,OAAO,GAAG,gBAAgB,CAAC;AAOxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AAEnC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAI3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAK/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,gBAAgB,CAAC;AAG/B,OAAO,EACL,OAAO,EACP,WAAW,EACX,cAAc,EACd,UAAU,EACV,SAAS,EACT,UAAU,EACV,UAAU,EACV,UAAU,EACV,YAAY,EACb,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAGtE,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,6BAA6B,EAAE,gCAAgC,EAAE,MAAM,kBAAkB,CAAC;AACnG,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC","file":"index.js","sourcesContent":["/**\n * @description The core module of VChart, containing the necessary interfaces for using VChart.\n */\n\nimport { VChart } from './vchart';\nimport { Factory } from './factory';\n\nexport { VChart, Factory };\n\n// export the version\nexport const version = \"2.0.23-alpha.5\";\n\n// export necessary types\nexport type { IVChart } from './interface';\nexport type { IStateSpec, StateValueType } from '../compile/mark';\nexport type { IRegion } from '../region/interface';\n\nexport * from '../event/interface';\nexport * from '../theme/interface';\nexport * from '../model/interface';\n\nexport * from './interface';\nexport * from '../typings';\nexport type { IMarkGraphic, IGraphicContext } from '../mark/interface/';\n\n// some constants\nexport * from '../constant/base';\nexport * from '../constant/data';\nexport * from '../constant/layout';\nexport { AttributeLevel } from '../constant/attribute';\nexport { TransformLevel } from '../data/initialize';\nexport { STATE_VALUE_ENUM } from '../compile/mark/interface';\nexport { ChartEvent } from '../constant/event';\n\n/**\n * spec\n */\nexport * from '../typings/spec/index';\nexport * from '../typings/visual';\n\n// tooltip\nexport * from '../typings/tooltip';\n\n// theme\nexport * from '../theme/index';\n\n// vrender\nexport {\n vglobal,\n createGroup,\n createRichText,\n createText,\n createArc,\n createArea,\n createRect,\n createLine,\n createSymbol\n} from '@visactor/vrender-core';\nexport { ManualTicker, StreamLight } from '@visactor/vrender-animate';\n\n// utils\nexport * from '../util/space';\nexport { transformToGraphic } from '../util/style';\nexport { getSpecInfo } from '../component/util';\nexport { registerDataSetInstanceParser, registerDataSetInstanceTransform } from '../data/register';\nexport { lookup } from '../data/transforms/lookup';\nexport { warn } from '../util/debug';\nexport { measureText } from '../util/text';\n"]}
@@ -38,8 +38,7 @@ export class ElementActive extends BaseTrigger {
38
38
  }
39
39
  reset(graphic) {
40
40
  const {interaction: interaction, state: state} = this.options, statedGraphics = interaction.getStatedGraphics(this), g = null != graphic ? graphic : null == statedGraphics ? void 0 : statedGraphics[0];
41
- g && (null == statedGraphics ? void 0 : statedGraphics.includes(g)) && (g.removeState(state),
42
- interaction.setStatedGraphics(this, statedGraphics.filter((sg => sg !== g))));
41
+ g && statedGraphics.includes(g) && (g.removeState(state), interaction.setStatedGraphics(this, statedGraphics.filter((sg => sg !== g))));
43
42
  }
44
43
  }
45
44
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interaction/triggers/element-active.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAGrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAIhE,MAAM,cAAc,GAAmC;IACrD,KAAK,EAAE,gBAAgB,CAAC,YAAY;IACpC,OAAO,EAAE,aAAa;IACtB,UAAU,EAAE,YAAY;CACzB,CAAC;AAEF,MAAM,OAAO,aAAc,SAAQ,WAAkC;IAMnE,YAAY,OAA+B;QACzC,KAAK,CAAC,OAAO,CAAC,CAAC;QALjB,SAAI,oBAA4C;QAmDhD,gBAAW,GAAG,CAAC,CAAkB,EAAE,EAAE;YACnC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC,CAAC;QAEF,gBAAW,GAAG,CAAC,CAAkB,EAAE,EAAE;YACnC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC,CAAC;QAnDA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;QAE1D,IAAI,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACjD,CAAC;IACS,SAAS;QACjB,OAAO;YACL;gBACE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;gBAC1B,OAAO,EAAE,IAAI,CAAC,WAAW;aAC1B;YACD,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE;SAC7D,CAAC;IACJ,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,CAAe;QACnB,IAAI,CAAC,EAAE;YACL,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;YAE5C,IAAI,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE;gBACvC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBAExB,WAAW,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;aAC1C;SACF;IACH,CAAC;IAED,KAAK,CAAC,OAAsB;QAC1B,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAE5C,MAAM,cAAc,GAAG,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,CAAC,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAG,CAAC,CAAC,CAAC;QAEzC,IAAI,CAAC,KAAI,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,QAAQ,CAAC,CAAC,CAAC,CAAA,EAAE;YACpC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACrB,WAAW,CAAC,iBAAiB,CAC3B,IAAI,EACJ,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CACtC,CAAC;SACH;IACH,CAAC;;AAlDM,kBAAI,oBAA4C;AAGhD,4BAAc,GAAG,cAAc,CAAC;AA0DzC,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,EAAE;IACxC,OAAO,CAAC,0BAA0B,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;AACxE,CAAC,CAAC","file":"element-active.js","sourcesContent":["import { Factory } from '../../core/factory';\nimport { BaseTrigger } from './base';\nimport type { IElementActiveOptions, ITrigger, ITriggerEventHandler } from '../interface/trigger';\nimport { TRIGGER_TYPE_ENUM } from './enum';\nimport { STATE_VALUE_ENUM } from '../../compile/mark/interface';\nimport type { IMarkGraphic } from '../../mark/interface';\nimport type { BaseEventParams } from '../../event/interface';\n\nconst defaultOptions: Partial<IElementActiveOptions> = {\n state: STATE_VALUE_ENUM.STATE_ACTIVE,\n trigger: 'pointerover',\n triggerOff: 'pointerout'\n};\n\nexport class ElementActive extends BaseTrigger<IElementActiveOptions> implements ITrigger<IElementActiveOptions> {\n static type: string = TRIGGER_TYPE_ENUM.ELEMENT_ACTIVE;\n type: string = TRIGGER_TYPE_ENUM.ELEMENT_ACTIVE;\n\n static defaultOptions = defaultOptions;\n\n constructor(options?: IElementActiveOptions) {\n super(options);\n this.options = Object.assign({}, defaultOptions, options);\n\n this.updateMarkIdByState([this.options.state]);\n }\n protected getEvents(): Array<{ type: string | string[]; handler: ITriggerEventHandler }> {\n return [\n {\n type: this.options.trigger,\n handler: this.handleStart\n },\n { type: this.options.triggerOff, handler: this.handleReset }\n ];\n }\n\n getStartState(): string {\n return this.options.state;\n }\n\n start(g: IMarkGraphic) {\n if (g) {\n const { state, interaction } = this.options;\n\n if (this.isGraphicInStateMark(g, state)) {\n g.addState(state, true);\n\n interaction.setStatedGraphics(this, [g]);\n }\n }\n }\n\n reset(graphic?: IMarkGraphic) {\n const { interaction, state } = this.options;\n\n const statedGraphics = interaction.getStatedGraphics(this);\n const g = graphic ?? statedGraphics?.[0];\n\n if (g && statedGraphics?.includes(g)) {\n g.removeState(state);\n interaction.setStatedGraphics(\n this,\n statedGraphics.filter(sg => sg !== g)\n );\n }\n }\n\n handleStart = (e: BaseEventParams) => {\n this.start(e.item);\n };\n\n handleReset = (e: BaseEventParams) => {\n this.reset(e.item);\n };\n}\n\nexport const registerElementActive = () => {\n Factory.registerInteractionTrigger(ElementActive.type, ElementActive);\n};\n"]}
1
+ {"version":3,"sources":["../src/interaction/triggers/element-active.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAGrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAIhE,MAAM,cAAc,GAAmC;IACrD,KAAK,EAAE,gBAAgB,CAAC,YAAY;IACpC,OAAO,EAAE,aAAa;IACtB,UAAU,EAAE,YAAY;CACzB,CAAC;AAEF,MAAM,OAAO,aAAc,SAAQ,WAAkC;IAMnE,YAAY,OAA+B;QACzC,KAAK,CAAC,OAAO,CAAC,CAAC;QALjB,SAAI,oBAA4C;QAmDhD,gBAAW,GAAG,CAAC,CAAkB,EAAE,EAAE;YACnC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC,CAAC;QAEF,gBAAW,GAAG,CAAC,CAAkB,EAAE,EAAE;YACnC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC,CAAC;QAnDA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;QAE1D,IAAI,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACjD,CAAC;IACS,SAAS;QACjB,OAAO;YACL;gBACE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;gBAC1B,OAAO,EAAE,IAAI,CAAC,WAAW;aAC1B;YACD,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE;SAC7D,CAAC;IACJ,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,CAAe;QACnB,IAAI,CAAC,EAAE;YACL,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;YAE5C,IAAI,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE;gBACvC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBAExB,WAAW,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;aAC1C;SACF;IACH,CAAC;IAED,KAAK,CAAC,OAAsB;QAC1B,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAE5C,MAAM,cAAc,GAAG,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,CAAC,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAG,CAAC,CAAC,CAAC;QAEzC,IAAI,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;YACnC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACrB,WAAW,CAAC,iBAAiB,CAC3B,IAAI,EACJ,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CACtC,CAAC;SACH;IACH,CAAC;;AAlDM,kBAAI,oBAA4C;AAGhD,4BAAc,GAAG,cAAc,CAAC;AA0DzC,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,EAAE;IACxC,OAAO,CAAC,0BAA0B,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;AACxE,CAAC,CAAC","file":"element-active.js","sourcesContent":["import { Factory } from '../../core/factory';\nimport { BaseTrigger } from './base';\nimport type { IElementActiveOptions, ITrigger, ITriggerEventHandler } from '../interface/trigger';\nimport { TRIGGER_TYPE_ENUM } from './enum';\nimport { STATE_VALUE_ENUM } from '../../compile/mark/interface';\nimport type { IMarkGraphic } from '../../mark/interface';\nimport type { BaseEventParams } from '../../event/interface';\n\nconst defaultOptions: Partial<IElementActiveOptions> = {\n state: STATE_VALUE_ENUM.STATE_ACTIVE,\n trigger: 'pointerover',\n triggerOff: 'pointerout'\n};\n\nexport class ElementActive extends BaseTrigger<IElementActiveOptions> implements ITrigger<IElementActiveOptions> {\n static type: string = TRIGGER_TYPE_ENUM.ELEMENT_ACTIVE;\n type: string = TRIGGER_TYPE_ENUM.ELEMENT_ACTIVE;\n\n static defaultOptions = defaultOptions;\n\n constructor(options?: IElementActiveOptions) {\n super(options);\n this.options = Object.assign({}, defaultOptions, options);\n\n this.updateMarkIdByState([this.options.state]);\n }\n protected getEvents(): Array<{ type: string | string[]; handler: ITriggerEventHandler }> {\n return [\n {\n type: this.options.trigger,\n handler: this.handleStart\n },\n { type: this.options.triggerOff, handler: this.handleReset }\n ];\n }\n\n getStartState(): string {\n return this.options.state;\n }\n\n start(g: IMarkGraphic) {\n if (g) {\n const { state, interaction } = this.options;\n\n if (this.isGraphicInStateMark(g, state)) {\n g.addState(state, true);\n\n interaction.setStatedGraphics(this, [g]);\n }\n }\n }\n\n reset(graphic?: IMarkGraphic) {\n const { interaction, state } = this.options;\n\n const statedGraphics = interaction.getStatedGraphics(this);\n const g = graphic ?? statedGraphics?.[0];\n\n if (g && statedGraphics.includes(g)) {\n g.removeState(state);\n interaction.setStatedGraphics(\n this,\n statedGraphics.filter(sg => sg !== g)\n );\n }\n }\n\n handleStart = (e: BaseEventParams) => {\n this.start(e.item);\n };\n\n handleReset = (e: BaseEventParams) => {\n this.reset(e.item);\n };\n}\n\nexport const registerElementActive = () => {\n Factory.registerInteractionTrigger(ElementActive.type, ElementActive);\n};\n"]}
@@ -447,7 +447,7 @@ export class BarSeries extends CartesianSeries {
447
447
  if (super.compile(), this._spec.sampling) {
448
448
  const {width: width, height: height} = this._region.getLayoutRect(), fieldsY = this._fieldY, fieldsX = this._fieldX;
449
449
  this._data.setTransform([ {
450
- type: "sampling",
450
+ type: "dataSampling",
451
451
  size: "horizontal" === this._direction ? height : width,
452
452
  factor: this._spec.samplingFactor,
453
453
  yfield: "horizontal" === this._direction ? fieldsX[0] : fieldsY[0],
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/series/bar/bar.ts"],"names":[],"mappings":"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","file":"bar.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport type { IBaseScale } from '@visactor/vscale';\nimport { isContinuous } from '@visactor/vscale';\nimport { Direction } from '../../typings/space';\nimport { CartesianSeries } from '../cartesian/cartesian';\nimport type { IMark, IRectMark, ITextMark } from '../../mark/interface';\nimport { MarkTypeEnum } from '../../mark/interface/type';\nimport {\n DEFAULT_DATA_KEY,\n STACK_FIELD_END,\n STACK_FIELD_END_PERCENT,\n STACK_FIELD_START,\n STACK_FIELD_START_PERCENT\n} from '../../constant/data';\nimport { AttributeLevel } from '../../constant/attribute';\nimport type { Datum, DirectionType } from '../../typings';\nimport { isValueInScaleDomain, valueInScaleRange } from '../../util/scale';\nimport { getRegionStackGroup } from '../../util/data';\nimport { getActualNumValue } from '../../util/space';\nimport { registerBarAnimation } from './animation';\nimport { animationConfig, shouldMarkDoMorph, userAnimationConfig } from '../../animation/utils';\nimport type { BarAppearPreset, IBarAnimationParams, IBarSeriesSpec, IBarSeriesTheme } from './interface';\nimport type { IAxisHelper } from '../../component/axis/cartesian/interface';\nimport type { IModelInitOption } from '../../model/interface';\nimport type { SeriesMarkMap } from '../interface';\nimport { SeriesMarkNameEnum, SeriesTypeEnum } from '../interface/type';\nimport type { IStateAnimateSpec } from '../../animation/spec';\nimport { registerRectMark } from '../../mark/rect';\nimport { array, isFunction, isNil, isValid, last } from '@visactor/vutils';\nimport { barSeriesMark } from './constant';\nimport { stackWithMinHeight } from '../util/stack';\nimport { Factory } from '../../core/factory';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport { DataView } from '@visactor/vdataset';\nimport { addVChartProperty } from '../../data/transforms/add-property';\nimport { addDataKey, initKeyMap } from '../../data/transforms/data-key';\nimport { getGroupAnimationParams } from '../util/utils';\nimport { BarSeriesSpecTransformer } from './bar-transformer';\nimport { ComponentTypeEnum } from '../../component/interface';\nimport { RECT_X, RECT_X1, RECT_Y, RECT_Y1 } from '../base/constant';\nimport { createRect } from '@visactor/vrender-core';\nimport { registerCartesianLinearAxis, registerCartesianBandAxis } from '../../component/axis/cartesian';\nimport type { ICompilableData } from '../../compile/data';\nimport { CompilableData } from '../../compile/data';\nimport { registerDataSamplingTransform } from '../../mark/transform/data-sampling';\nimport { maxInArr, minInArr } from '../../util/array';\nimport { bar } from '../../theme/builtin/common/series/bar';\n\nexport const DefaultBandWidth = 6; // 默认的bandWidth,避免连续轴没有bandWidth\n\nexport class BarSeries<T extends IBarSeriesSpec = IBarSeriesSpec> extends CartesianSeries<T> {\n static readonly type: string = SeriesTypeEnum.bar;\n type: string = SeriesTypeEnum.bar;\n protected _barMarkName: string = SeriesMarkNameEnum.bar;\n protected _barMarkType: string = MarkTypeEnum.rect;\n\n static readonly builtInTheme: Record<string, IBarSeriesTheme> = { bar };\n static readonly mark: SeriesMarkMap = barSeriesMark;\n static readonly transformerConstructor = BarSeriesSpecTransformer as any;\n readonly transformerConstructor = BarSeriesSpecTransformer;\n\n protected _bandPosition = 0;\n protected _barMark!: IRectMark;\n protected _barBackgroundMark!: IRectMark;\n\n protected _barBackgroundViewData: ICompilableData;\n\n initMark(): void {\n this._initBarBackgroundMark();\n\n this._barMark = this._createMark(\n {\n ...BarSeries.mark.bar,\n name: this._barMarkName,\n type: this._barMarkType\n },\n {\n groupKey: this._seriesField,\n isSeriesMark: true\n },\n {\n morphElementKey: this.getDimensionField()[0],\n morph: shouldMarkDoMorph(this._spec, this._barMarkName)\n }\n ) as IRectMark;\n }\n\n protected _initBarBackgroundMark(): void {\n if (this._spec.barBackground && this._spec.barBackground.visible) {\n this._barBackgroundMark = this._createMark(BarSeries.mark.barBackground, {\n dataView: this._barBackgroundViewData.getDataView(),\n dataProductId: this._barBackgroundViewData.getProductId()\n }) as IRectMark;\n }\n }\n\n initMarkStyle(): void {\n if (this._barMark) {\n this.setMarkStyle(\n this._barMark,\n {\n fill: this.getColorAttribute()\n },\n 'normal',\n AttributeLevel.Series\n );\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.getStackValueField()];\n },\n z: this._fieldZ ? this.dataToPositionZ.bind(this) : null\n });\n }\n\n protected initTooltip() {\n super.initTooltip();\n const { mark, group } = this._tooltipHelper.activeTriggerSet;\n if (this._barMark) {\n mark.add(this._barMark);\n group.add(this._barMark);\n }\n }\n\n protected _statisticViewData(): void {\n super._statisticViewData();\n\n const spec = this._spec.barBackground ?? {};\n if (!spec.visible) {\n return;\n }\n\n const hasBandAxis = this._getRelatedComponentSpecInfo('axes').some(\n axisInfo => axisInfo.type === ComponentTypeEnum.cartesianBandAxis\n );\n\n let barBackgroundData: DataView;\n registerDataSetInstanceTransform(this._option.dataSet, 'addVChartProperty', addVChartProperty);\n\n if (hasBandAxis) {\n type DimensionItemsConfig = { scaleDepth?: number };\n\n /**\n * @description 准备 barBackground 数据(离散轴)\n */\n const dimensionItems = ([data]: DataView[], { scaleDepth }: DimensionItemsConfig) => {\n let dataCollect: Datum[] = [{}];\n const fields = this.getDimensionField();\n // 将维度轴的所有层级 field 的对应数据做笛卡尔积\n const depth = isNil(scaleDepth) ? fields.length : Math.min(fields.length, scaleDepth);\n for (let i = 0; i < depth; i++) {\n const field = fields[i];\n const values = data.latestData[field]?.values;\n if (!values?.length) {\n continue;\n }\n const newDataCollect: Datum[] = [];\n const dataKey = (this._spec.dataKey as string) ?? DEFAULT_DATA_KEY;\n for (let j = 0; j < values.length; j++) {\n for (let k = 0; k < dataCollect.length; k++) {\n newDataCollect.push({\n ...dataCollect[k],\n [field]: values[j],\n [dataKey]: values[j]\n });\n }\n }\n dataCollect = newDataCollect;\n }\n return dataCollect;\n };\n\n registerDataSetInstanceTransform(this._option.dataSet, 'dimensionItems', dimensionItems);\n\n barBackgroundData = new DataView(this._option.dataSet)\n .parse([this._viewDataStatistics], {\n type: 'dataview'\n })\n .transform(\n {\n type: 'dimensionItems',\n options: {\n scaleDepth: isNil(spec.fieldLevel) ? undefined : spec.fieldLevel + 1\n } as DimensionItemsConfig\n },\n false\n )\n .transform(\n {\n type: 'addVChartProperty',\n options: {\n beforeCall: initKeyMap.bind(this),\n call: addDataKey\n }\n },\n false\n );\n\n this._viewDataStatistics?.target.addListener('change', barBackgroundData.reRunAllTransform);\n } else {\n /**\n * @description 准备 barBackground 数据(连续轴)\n */\n const dimensionItems = ([data]: DataView[]) => {\n const dataCollect: Datum[] = [];\n const [field0, field1] = this.getDimensionContinuousField();\n const map: Record<string, Datum> = {};\n viewData.latestData.forEach((datum: Datum) => {\n const key = `${datum[field0]}-${datum[field1]}`;\n if (!map[key]) {\n map[key] = {\n [field0]: datum[field0],\n [field1]: datum[field1]\n };\n dataCollect.push(map[key]);\n }\n });\n return dataCollect;\n };\n\n registerDataSetInstanceTransform(this._option.dataSet, 'dimensionItems', dimensionItems);\n\n const viewData = this.getViewData();\n barBackgroundData = new DataView(this._option.dataSet)\n .parse([viewData], {\n type: 'dataview'\n })\n .transform(\n {\n type: 'dimensionItems'\n },\n false\n )\n .transform(\n {\n type: 'addVChartProperty',\n options: {\n beforeCall: initKeyMap.bind(this),\n call: addDataKey\n }\n },\n false\n );\n\n viewData?.target.addListener('change', barBackgroundData.reRunAllTransform);\n }\n this._barBackgroundViewData = new CompilableData(this._option, barBackgroundData);\n }\n\n init(option: IModelInitOption): void {\n super.init(option);\n if (this.direction === 'vertical') {\n this._xAxisHelper?.getScale(0).type === 'band' ? this.initBandRectMarkStyle() : this.initLinearRectMarkStyle();\n } else {\n this._yAxisHelper?.getScale(0).type === 'band' ? this.initBandRectMarkStyle() : this.initLinearRectMarkStyle();\n }\n }\n\n private _shouldDoPreCalculate() {\n const region = this.getRegion();\n return this.getStack() && region.getSeries().filter(s => s.type === this.type && s.getSpec().barMinHeight).length;\n }\n\n private _calculateStackRectPosition(isVertical: boolean) {\n const region = this.getRegion();\n\n // @ts-ignore\n if (region._bar_series_position_calculated) {\n return;\n }\n // @ts-ignore\n region._bar_series_position_calculated = true; // 因为是 region 内堆叠矩形的计算,所以加一个 hack 标识位用于避免重复计算\n let start: string;\n let end: string;\n let startMethod: string;\n let endMethod: string;\n let axisHelper: string;\n if (isVertical) {\n start = RECT_Y1;\n end = RECT_Y;\n startMethod = '_dataToPosY1';\n endMethod = '_dataToPosY';\n axisHelper = '_yAxisHelper';\n } else {\n start = RECT_X1;\n end = RECT_X;\n startMethod = '_dataToPosX1';\n endMethod = '_dataToPosX';\n axisHelper = '_xAxisHelper';\n }\n\n // only reCompute bar\n const stackValueGroup = getRegionStackGroup(region, false, s => s.type === this.type);\n // 按照堆积逻辑 重新计算一次图形的堆积位置并设置到数据上\n for (const stackValue in stackValueGroup) {\n for (const key in stackValueGroup[stackValue].nodes) {\n stackWithMinHeight(stackValueGroup[stackValue].nodes[key], region.getStackInverse(), {\n isVertical,\n start,\n end,\n startMethod,\n endMethod,\n axisHelper\n });\n }\n }\n }\n\n private _calculateRectPosition(datum: Datum, isVertical: boolean, useWholeRange?: boolean) {\n let startMethod: string;\n let endMethod: string;\n let axisHelper: string;\n if (isVertical) {\n startMethod = '_dataToPosY1';\n endMethod = '_dataToPosY';\n axisHelper = '_yAxisHelper';\n } else {\n startMethod = '_dataToPosX1';\n endMethod = '_dataToPosX';\n axisHelper = '_xAxisHelper';\n }\n\n const seriesScale = this[axisHelper].getScale?.(0);\n const inverse = this[axisHelper].isInverse();\n const barMinHeight = this._spec.barMinHeight;\n const y1 = valueInScaleRange(this[startMethod](datum), seriesScale, useWholeRange);\n const y = valueInScaleRange(this[endMethod](datum), seriesScale, useWholeRange);\n let height = Math.abs(y1 - y);\n if (height <= 0 && !isValueInScaleDomain(datum[this.getStackValueField()], seriesScale)) {\n height = 0;\n } else if (height < barMinHeight) {\n height = barMinHeight;\n }\n\n let flag = 1;\n if (y < y1) {\n flag = -1;\n } else if (y === y1) {\n flag = isVertical ? (inverse ? 1 : -1) : inverse ? -1 : 1;\n }\n return y1 + flag * height;\n }\n\n // 用于 bar-like 的位置转换,range-column 会重写这个方法\n protected _dataToPosX(datum: Datum) {\n return this.dataToPositionX(datum);\n }\n\n // 用于 bar-like 的位置转换,range-column 会重写这个方法\n protected _dataToPosX1(datum: Datum) {\n return this.dataToPositionX1(datum);\n }\n\n // 用于 bar-like 的位置转换,range-column 会重写这个方法\n protected _dataToPosY(datum: Datum) {\n return this.dataToPositionY(datum);\n }\n\n // 用于 bar-like 的位置转换,range-column 会重写这个方法\n protected _dataToPosY1(datum: Datum) {\n return this.dataToPositionY1(datum);\n }\n\n protected _getLinearBarRange = (start: number, end: number) => {\n let [x, x1] = [start, end].sort((a, b) => a - b);\n const realBarWidth = x1 - x;\n if (this._spec.barGap) {\n const halfBarGap = this._spec.barGap * 0.5;\n const tempX = x + halfBarGap;\n const tempX1 = x1 - halfBarGap;\n x = tempX;\n x1 = tempX1;\n }\n\n const curBarWidth = x1 - x;\n const barMinWidth = getActualNumValue(this._spec.barMinWidth || 2, realBarWidth);\n if (curBarWidth < barMinWidth) {\n const widthDiff = barMinWidth - curBarWidth;\n const halfWidthDiff = widthDiff / 2;\n x -= halfWidthDiff;\n x1 += halfWidthDiff;\n }\n\n return [x, x1];\n };\n\n protected _getBarXStart = (datum: Datum, scale: IBaseScale, useWholeRange?: boolean) => {\n if (this._shouldDoPreCalculate()) {\n this._calculateStackRectPosition(false);\n return datum[RECT_X];\n }\n\n if (this._spec.barMinHeight) {\n return this._calculateRectPosition(datum, false, useWholeRange);\n }\n\n return valueInScaleRange(this._dataToPosX(datum), scale, useWholeRange);\n };\n\n protected _getBarXEnd = (datum: Datum, scale: IBaseScale, useWholeRange?: boolean) => {\n if (this._shouldDoPreCalculate()) {\n this._calculateStackRectPosition(false);\n return datum[RECT_X1];\n }\n\n return valueInScaleRange(this._dataToPosX1(datum), scale, useWholeRange);\n };\n\n protected _getLinearBarXRange = (datum: Datum, scale: IBaseScale, useWholeRange?: boolean) => {\n const x = valueInScaleRange(this._dataToPosX(datum), scale, useWholeRange);\n const x1 = valueInScaleRange(this._dataToPosX1(datum), scale, useWholeRange);\n return this._getLinearBarRange(x, x1);\n };\n\n protected _getBarYStart = (datum: Datum, scale: IBaseScale) => {\n if (this._shouldDoPreCalculate()) {\n this._calculateStackRectPosition(true);\n return datum[RECT_Y];\n }\n\n if (this._spec.barMinHeight) {\n return this._calculateRectPosition(datum, true);\n }\n\n return valueInScaleRange(this._dataToPosY(datum), scale);\n };\n\n protected _getBarYEnd = (datum: Datum, scale: IBaseScale) => {\n if (this._shouldDoPreCalculate()) {\n this._calculateStackRectPosition(true);\n return datum[RECT_Y1];\n }\n\n return valueInScaleRange(this._dataToPosY1(datum), scale);\n };\n\n protected _getLinearBarYRange = (datum: Datum, scale: IBaseScale, useWholeRange?: boolean) => {\n const y = valueInScaleRange(this._dataToPosY(datum), scale, useWholeRange);\n const y1 = valueInScaleRange(this._dataToPosY1(datum), scale, useWholeRange);\n return this._getLinearBarRange(y, y1);\n };\n\n initBandRectMarkStyle() {\n const xScale = this._xAxisHelper?.getScale?.(0);\n const yScale = this._yAxisHelper?.getScale?.(0);\n\n // guess the direction which the user want\n if (this.direction === Direction.horizontal) {\n this.setMarkStyle(\n this._barMark,\n {\n x: datum => this._getBarXStart(datum, xScale),\n x1: datum => this._getBarXEnd(datum, xScale),\n y: datum => this._getPosition(this.direction, datum),\n height: () => this._getBarWidth(this._yAxisHelper),\n width: () => undefined,\n y1: () => undefined\n },\n 'normal',\n AttributeLevel.Series\n );\n } else {\n this.setMarkStyle(\n this._barMark,\n {\n y: datum => this._getBarYStart(datum, yScale),\n y1: datum => this._getBarYEnd(datum, yScale),\n x: datum => this._getPosition(this.direction, datum),\n width: () => this._getBarWidth(this._xAxisHelper),\n x1: () => undefined,\n height: () => undefined\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n\n this._initStackBarMarkStyle();\n\n this._initBandBarBackgroundMarkStyle();\n }\n\n protected _initStackBarMarkStyle() {\n if (!this._spec.stackCornerRadius) {\n return;\n }\n\n const xScale = this._xAxisHelper?.getScale?.(0);\n const yScale = this._yAxisHelper?.getScale?.(0);\n const isVertical = this.direction === Direction.vertical;\n\n this._barMark.setMarkConfig({\n clip: true,\n clipPath: () => {\n const usePreCalculatedRect = !!this._shouldDoPreCalculate();\n if (usePreCalculatedRect) {\n this._calculateStackRectPosition(isVertical);\n }\n const rectPaths: any[] = [];\n this._forEachStackGroup(node => {\n let min = Infinity;\n let max = -Infinity;\n let rectMin = Infinity;\n let rectMax = -Infinity;\n let hasPercent = false;\n let minPercent = Infinity;\n let maxPercent = -Infinity;\n node.values.forEach(datum => {\n const start = datum[STACK_FIELD_START];\n const end = datum[STACK_FIELD_END];\n const startPercent = datum[STACK_FIELD_START_PERCENT];\n const endPercent = datum[STACK_FIELD_END_PERCENT];\n min = Math.min(min, start, end);\n max = Math.max(max, start, end);\n if (usePreCalculatedRect) {\n const rectStart = datum[isVertical ? RECT_Y : RECT_X];\n const rectEnd = datum[isVertical ? RECT_Y1 : RECT_X1];\n rectMin = Math.min(rectMin, rectStart, rectEnd);\n rectMax = Math.max(rectMax, rectStart, rectEnd);\n }\n if (isValid(startPercent) && isValid(endPercent)) {\n hasPercent = true;\n minPercent = Math.min(minPercent, startPercent, endPercent);\n maxPercent = Math.max(maxPercent, startPercent, endPercent);\n }\n });\n const mockDatum = {\n ...node.values[0],\n [STACK_FIELD_START]: min,\n [STACK_FIELD_END]: max,\n ...(hasPercent\n ? {\n [STACK_FIELD_START_PERCENT]: minPercent,\n [STACK_FIELD_END_PERCENT]: maxPercent\n }\n : undefined)\n };\n const rectAttr =\n this.direction === Direction.horizontal\n ? {\n x: usePreCalculatedRect ? rectMin : this._getBarXStart(mockDatum, xScale),\n x1: usePreCalculatedRect ? rectMax : this._getBarXEnd(mockDatum, xScale),\n y: this._getPosition(this.direction, mockDatum),\n height: this._getBarWidth(this._yAxisHelper)\n }\n : {\n y: usePreCalculatedRect ? rectMin : this._getBarYStart(mockDatum, yScale),\n y1: usePreCalculatedRect ? rectMax : this._getBarYEnd(mockDatum, yScale),\n x: this._getPosition(this.direction, mockDatum),\n width: this._getBarWidth(this._xAxisHelper)\n };\n rectPaths.push(\n createRect({\n ...rectAttr,\n cornerRadius: isFunction(this._spec.stackCornerRadius)\n ? this._spec.stackCornerRadius(rectAttr, mockDatum, this._markAttributeContext)\n : this._spec.stackCornerRadius,\n fill: true\n })\n );\n });\n return rectPaths;\n }\n });\n }\n\n initLinearRectMarkStyle() {\n const xScale = this._xAxisHelper?.getScale?.(0);\n const yScale = this._yAxisHelper?.getScale?.(0);\n\n if (this.direction === Direction.horizontal) {\n const yChannels = isValid(this._fieldY2)\n ? {\n y: (datum: Datum) => this._getLinearBarYRange(datum, yScale, true)[0],\n y1: (datum: Datum) => this._getLinearBarYRange(datum, yScale, true)[1]\n }\n : {\n y: (datum: Datum) =>\n valueInScaleRange(this._dataToPosY(datum) - this._getBarWidth(this._yAxisHelper) / 2, yScale, true),\n height: (datum: Datum) => this._getBarWidth(this._yAxisHelper)\n };\n\n this.setMarkStyle(\n this._barMark,\n {\n x: (datum: Datum) => this._getBarXStart(datum, xScale, true),\n x1: (datum: Datum) => this._getBarXEnd(datum, xScale, true),\n ...yChannels\n },\n 'normal',\n AttributeLevel.Series\n );\n this.setMarkStyle(\n this._barBackgroundMark,\n {\n x: () => this._getBarBackgroundXStart(xScale),\n x1: () => this._getBarBackgroundXEnd(xScale),\n ...yChannels\n },\n 'normal',\n AttributeLevel.Series\n );\n } else {\n const xChannels = isValid(this._fieldX2)\n ? {\n x: (datum: Datum) => this._getLinearBarXRange(datum, xScale, true)[0],\n x1: (datum: Datum) => this._getLinearBarXRange(datum, xScale, true)[1]\n }\n : {\n x: (datum: Datum) =>\n valueInScaleRange(this._dataToPosX(datum) - this._getBarWidth(this._xAxisHelper) / 2, xScale, true),\n width: (datum: Datum) => this._getBarWidth(this._xAxisHelper)\n };\n this.setMarkStyle(\n this._barMark,\n {\n ...xChannels,\n y: datum => this._getBarYStart(datum, yScale),\n y1: datum => this._getBarYEnd(datum, yScale)\n },\n 'normal',\n AttributeLevel.Series\n );\n this.setMarkStyle(\n this._barBackgroundMark,\n {\n ...xChannels,\n y: () => this._getBarBackgroundYStart(yScale),\n y1: () => this._getBarBackgroundYEnd(yScale)\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n }\n\n protected _getBarBackgroundXStart = (scale: IBaseScale) => {\n const range = scale.range();\n const min = Math.min(range[0], range[range.length - 1]);\n return min;\n };\n\n protected _getBarBackgroundXEnd = (scale: IBaseScale) => {\n const range = scale.range();\n const max = Math.max(range[0], range[range.length - 1]);\n return max;\n };\n\n protected _getBarBackgroundYStart = (scale: IBaseScale) => {\n const range = scale.range();\n const min = Math.min(range[0], range[range.length - 1]);\n return min;\n };\n\n protected _getBarBackgroundYEnd = (scale: IBaseScale) => {\n const range = scale.range();\n const max = Math.max(range[0], range[range.length - 1]);\n return max;\n };\n\n protected _initBandBarBackgroundMarkStyle() {\n if (!this._barBackgroundMark) {\n return;\n }\n\n const xScale = this._xAxisHelper?.getScale?.(0);\n const yScale = this._yAxisHelper?.getScale?.(0);\n const spec = this._spec.barBackground ?? {};\n const scaleDepth = isNil(spec.fieldLevel) ? undefined : spec.fieldLevel + 1;\n\n // guess the direction which the user want\n if (this.direction === Direction.horizontal) {\n this.setMarkStyle(\n this._barBackgroundMark,\n {\n x: () => this._getBarBackgroundXStart(xScale),\n x1: () => this._getBarBackgroundXEnd(xScale),\n y: datum => this._getPosition(this.direction, datum, scaleDepth, SeriesMarkNameEnum.barBackground),\n height: () => this._getBarWidth(this._yAxisHelper, scaleDepth),\n width: () => undefined,\n y1: () => undefined\n },\n 'normal',\n AttributeLevel.Series\n );\n } else {\n this.setMarkStyle(\n this._barBackgroundMark,\n {\n x: datum => this._getPosition(this.direction, datum, scaleDepth, SeriesMarkNameEnum.barBackground),\n y: () => this._getBarBackgroundYStart(yScale),\n y1: () => this._getBarBackgroundYEnd(yScale),\n width: () => this._getBarWidth(this._xAxisHelper, scaleDepth),\n x1: () => undefined,\n height: () => undefined\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n }\n\n initAnimation() {\n // 这个数据在这个时候拿不到,因为组件还没创建结束,统计和筛选也还没添加。\n // 而且这个值理论上是动态的,建议 监听 viewDataStatisticsUpdate 消息动态更新\n const barAnimationParams: IBarAnimationParams = {\n yField: this._fieldY[0],\n xField: this._fieldX[0],\n direction: this.direction,\n growFrom: () => {\n const scale = this.direction === 'horizontal' ? this._xAxisHelper?.getScale(0) : this._yAxisHelper.getScale(0);\n if (scale) {\n const domain = scale.domain();\n const domainMin = minInArr<number>(domain);\n const domainMax = maxInArr<number>(domain);\n if (domainMax < 0) {\n return scale.scale(domainMax);\n } else if (domainMin > 0) {\n return scale.scale(domainMin);\n }\n return scale.scale(0);\n }\n }\n };\n const appearPreset = (this._spec.animationAppear as IStateAnimateSpec<BarAppearPreset>)?.preset;\n const animationParams = getGroupAnimationParams(this);\n\n this._barMark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('bar')?.(barAnimationParams, appearPreset),\n userAnimationConfig(this._barMarkName, this._spec, this._markAttributeContext),\n animationParams\n )\n );\n }\n\n protected _getBarWidth(axisHelper: IAxisHelper, scaleDepth?: number) {\n const depthFromSpec = this._groups ? this._groups.fields.length : 1;\n const depth = isNil(scaleDepth) ? depthFromSpec : Math.min(depthFromSpec, scaleDepth);\n\n const bandWidth = axisHelper.getBandwidth?.(depth - 1) ?? DefaultBandWidth;\n const hasBarWidth = isValid(this._spec.barWidth) && depth === depthFromSpec;\n\n const hasBarMinWidth = isValid(this._spec.barMinWidth);\n const hasBarMaxWidth = isValid(this._spec.barMaxWidth);\n let width = bandWidth;\n if (hasBarWidth) {\n width = getActualNumValue(this._spec.barWidth, bandWidth);\n }\n if (hasBarMinWidth) {\n width = Math.max(width, getActualNumValue(this._spec.barMinWidth, bandWidth));\n }\n if (hasBarMaxWidth) {\n width = Math.min(width, getActualNumValue(this._spec.barMaxWidth, bandWidth));\n }\n return width;\n }\n\n protected _getPosition(direction: DirectionType, datum: Datum, scaleDepth?: number, mark?: SeriesMarkNameEnum) {\n let axisHelper;\n let sizeAttribute;\n let dataToPosition;\n if (direction === Direction.horizontal) {\n axisHelper = this.getYAxisHelper();\n sizeAttribute = 'height';\n dataToPosition =\n mark === SeriesMarkNameEnum.barBackground\n ? this.dataToBarBackgroundPositionY.bind(this)\n : this.dataToPositionY.bind(this);\n } else {\n axisHelper = this.getXAxisHelper();\n sizeAttribute = 'width';\n dataToPosition =\n mark === SeriesMarkNameEnum.barBackground\n ? this.dataToBarBackgroundPositionX.bind(this)\n : 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 = isNil(scaleDepth) ? depthFromSpec : Math.min(depthFromSpec, scaleDepth);\n\n const bandWidth = axisHelper.getBandwidth?.(depth - 1) ?? DefaultBandWidth;\n const size = depth === depthFromSpec ? (this._barMark.getAttribute(sizeAttribute, datum) as number) : bandWidth;\n\n if (depth > 1 && isValid(this._spec.barGapInGroup)) {\n // 自里向外计算,沿着第一层分组的中心点进行位置调整\n const groupFields = this._groups.fields;\n const barInGroup = array(this._spec.barGapInGroup);\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(barInGroup[index - 1] ?? last(barInGroup), 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;\n }\n\n const continuous = isContinuous(scale.type || 'band');\n const pos = dataToPosition(datum, depth);\n\n return pos + (bandWidth - size) * 0.5 + (continuous ? -bandWidth / 2 : 0);\n }\n\n protected _barBackgroundPositionXEncoder?: (datum: Datum) => number;\n protected _getBarBackgroundPositionXEncoder = () => this._barBackgroundPositionXEncoder?.bind(this);\n protected _setBarBackgroundPositionXEncoder = (encoder: (datum: Datum) => number) => {\n this._barBackgroundPositionXEncoder = encoder.bind(this);\n };\n\n dataToBarBackgroundPositionX(datum: Datum, scaleDepth?: number): number {\n return this._dataToPosition(\n datum,\n this._xAxisHelper,\n this.fieldX,\n scaleDepth,\n this._getBarBackgroundPositionXEncoder,\n this._setBarBackgroundPositionXEncoder\n );\n }\n\n protected _barBackgroundPositionYEncoder?: (datum: Datum) => number;\n protected _getBarBackgroundPositionYEncoder = () => this._barBackgroundPositionYEncoder?.bind(this);\n protected _setBarBackgroundPositionYEncoder = (encoder: (datum: Datum) => number) => {\n this._barBackgroundPositionYEncoder = encoder.bind(this);\n };\n\n dataToBarBackgroundPositionY(datum: Datum, scaleDepth?: number): number {\n return this._dataToPosition(\n datum,\n this._yAxisHelper,\n this.fieldY,\n scaleDepth,\n this._getBarBackgroundPositionYEncoder,\n this._setBarBackgroundPositionYEncoder\n );\n }\n\n onLayoutEnd(): void {\n super.onLayoutEnd();\n const region = this.getRegion();\n // @ts-ignore\n region._bar_series_position_calculated = false;\n if (this._spec.sampling) {\n this.compile();\n }\n }\n\n onDataUpdate(): void {\n super.onDataUpdate();\n\n const region = this.getRegion();\n // @ts-ignore\n region._bar_series_position_calculated = false;\n }\n\n compile(): void {\n super.compile();\n\n if (this._spec.sampling) {\n const { width, height } = this._region.getLayoutRect();\n const fieldsY = this._fieldY;\n const fieldsX = this._fieldX;\n\n this._data.setTransform([\n {\n type: 'sampling',\n size: this._direction === Direction.horizontal ? height : width,\n factor: this._spec.samplingFactor,\n yfield: this._direction === Direction.horizontal ? fieldsX[0] : fieldsY[0],\n groupBy: this._seriesField,\n mode: this._spec.sampling\n }\n ]);\n }\n }\n\n getDefaultShapeType(): string {\n return 'square';\n }\n\n getActiveMarks(): IMark[] {\n return [this._barMark];\n }\n\n compileData() {\n super.compileData();\n this._barBackgroundViewData?.compile();\n }\n\n fillData() {\n super.fillData();\n this._barBackgroundViewData?.getDataView()?.reRunAllTransform();\n }\n\n viewDataUpdate(d: DataView): void {\n super.viewDataUpdate(d);\n this._barBackgroundViewData?.getDataView()?.reRunAllTransform();\n this._barBackgroundViewData?.updateData();\n }\n\n release() {\n super.release();\n this._barBackgroundViewData?.release();\n this._barBackgroundViewData = null;\n }\n}\n\nexport const registerBarSeries = () => {\n registerDataSamplingTransform();\n registerRectMark();\n registerBarAnimation();\n registerCartesianBandAxis();\n registerCartesianLinearAxis();\n Factory.registerSeries(BarSeries.type, BarSeries);\n};\n"]}
1
+ {"version":3,"sources":["../src/series/bar/bar.ts"],"names":[],"mappings":"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","file":"bar.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport type { IBaseScale } from '@visactor/vscale';\nimport { isContinuous } from '@visactor/vscale';\nimport { Direction } from '../../typings/space';\nimport { CartesianSeries } from '../cartesian/cartesian';\nimport type { IMark, IRectMark, ITextMark } from '../../mark/interface';\nimport { MarkTypeEnum } from '../../mark/interface/type';\nimport {\n DEFAULT_DATA_KEY,\n STACK_FIELD_END,\n STACK_FIELD_END_PERCENT,\n STACK_FIELD_START,\n STACK_FIELD_START_PERCENT\n} from '../../constant/data';\nimport { AttributeLevel } from '../../constant/attribute';\nimport type { Datum, DirectionType } from '../../typings';\nimport { isValueInScaleDomain, valueInScaleRange } from '../../util/scale';\nimport { getRegionStackGroup } from '../../util/data';\nimport { getActualNumValue } from '../../util/space';\nimport { registerBarAnimation } from './animation';\nimport { animationConfig, shouldMarkDoMorph, userAnimationConfig } from '../../animation/utils';\nimport type { BarAppearPreset, IBarAnimationParams, IBarSeriesSpec, IBarSeriesTheme } from './interface';\nimport type { IAxisHelper } from '../../component/axis/cartesian/interface';\nimport type { IModelInitOption } from '../../model/interface';\nimport type { SeriesMarkMap } from '../interface';\nimport { SeriesMarkNameEnum, SeriesTypeEnum } from '../interface/type';\nimport type { IStateAnimateSpec } from '../../animation/spec';\nimport { registerRectMark } from '../../mark/rect';\nimport { array, isFunction, isNil, isValid, last } from '@visactor/vutils';\nimport { barSeriesMark } from './constant';\nimport { stackWithMinHeight } from '../util/stack';\nimport { Factory } from '../../core/factory';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport { DataView } from '@visactor/vdataset';\nimport { addVChartProperty } from '../../data/transforms/add-property';\nimport { addDataKey, initKeyMap } from '../../data/transforms/data-key';\nimport { getGroupAnimationParams } from '../util/utils';\nimport { BarSeriesSpecTransformer } from './bar-transformer';\nimport { ComponentTypeEnum } from '../../component/interface';\nimport { RECT_X, RECT_X1, RECT_Y, RECT_Y1 } from '../base/constant';\nimport { createRect } from '@visactor/vrender-core';\nimport { registerCartesianLinearAxis, registerCartesianBandAxis } from '../../component/axis/cartesian';\nimport type { ICompilableData } from '../../compile/data';\nimport { CompilableData } from '../../compile/data';\nimport { registerDataSamplingTransform } from '../../mark/transform/data-sampling';\nimport { maxInArr, minInArr } from '../../util/array';\nimport { bar } from '../../theme/builtin/common/series/bar';\n\nexport const DefaultBandWidth = 6; // 默认的bandWidth,避免连续轴没有bandWidth\n\nexport class BarSeries<T extends IBarSeriesSpec = IBarSeriesSpec> extends CartesianSeries<T> {\n static readonly type: string = SeriesTypeEnum.bar;\n type: string = SeriesTypeEnum.bar;\n protected _barMarkName: string = SeriesMarkNameEnum.bar;\n protected _barMarkType: string = MarkTypeEnum.rect;\n\n static readonly builtInTheme: Record<string, IBarSeriesTheme> = { bar };\n static readonly mark: SeriesMarkMap = barSeriesMark;\n static readonly transformerConstructor = BarSeriesSpecTransformer as any;\n readonly transformerConstructor = BarSeriesSpecTransformer;\n\n protected _bandPosition = 0;\n protected _barMark!: IRectMark;\n protected _barBackgroundMark!: IRectMark;\n\n protected _barBackgroundViewData: ICompilableData;\n\n initMark(): void {\n this._initBarBackgroundMark();\n\n this._barMark = this._createMark(\n {\n ...BarSeries.mark.bar,\n name: this._barMarkName,\n type: this._barMarkType\n },\n {\n groupKey: this._seriesField,\n isSeriesMark: true\n },\n {\n morphElementKey: this.getDimensionField()[0],\n morph: shouldMarkDoMorph(this._spec, this._barMarkName)\n }\n ) as IRectMark;\n }\n\n protected _initBarBackgroundMark(): void {\n if (this._spec.barBackground && this._spec.barBackground.visible) {\n this._barBackgroundMark = this._createMark(BarSeries.mark.barBackground, {\n dataView: this._barBackgroundViewData.getDataView(),\n dataProductId: this._barBackgroundViewData.getProductId()\n }) as IRectMark;\n }\n }\n\n initMarkStyle(): void {\n if (this._barMark) {\n this.setMarkStyle(\n this._barMark,\n {\n fill: this.getColorAttribute()\n },\n 'normal',\n AttributeLevel.Series\n );\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.getStackValueField()];\n },\n z: this._fieldZ ? this.dataToPositionZ.bind(this) : null\n });\n }\n\n protected initTooltip() {\n super.initTooltip();\n const { mark, group } = this._tooltipHelper.activeTriggerSet;\n if (this._barMark) {\n mark.add(this._barMark);\n group.add(this._barMark);\n }\n }\n\n protected _statisticViewData(): void {\n super._statisticViewData();\n\n const spec = this._spec.barBackground ?? {};\n if (!spec.visible) {\n return;\n }\n\n const hasBandAxis = this._getRelatedComponentSpecInfo('axes').some(\n axisInfo => axisInfo.type === ComponentTypeEnum.cartesianBandAxis\n );\n\n let barBackgroundData: DataView;\n registerDataSetInstanceTransform(this._option.dataSet, 'addVChartProperty', addVChartProperty);\n\n if (hasBandAxis) {\n type DimensionItemsConfig = { scaleDepth?: number };\n\n /**\n * @description 准备 barBackground 数据(离散轴)\n */\n const dimensionItems = ([data]: DataView[], { scaleDepth }: DimensionItemsConfig) => {\n let dataCollect: Datum[] = [{}];\n const fields = this.getDimensionField();\n // 将维度轴的所有层级 field 的对应数据做笛卡尔积\n const depth = isNil(scaleDepth) ? fields.length : Math.min(fields.length, scaleDepth);\n for (let i = 0; i < depth; i++) {\n const field = fields[i];\n const values = data.latestData[field]?.values;\n if (!values?.length) {\n continue;\n }\n const newDataCollect: Datum[] = [];\n const dataKey = (this._spec.dataKey as string) ?? DEFAULT_DATA_KEY;\n for (let j = 0; j < values.length; j++) {\n for (let k = 0; k < dataCollect.length; k++) {\n newDataCollect.push({\n ...dataCollect[k],\n [field]: values[j],\n [dataKey]: values[j]\n });\n }\n }\n dataCollect = newDataCollect;\n }\n return dataCollect;\n };\n\n registerDataSetInstanceTransform(this._option.dataSet, 'dimensionItems', dimensionItems);\n\n barBackgroundData = new DataView(this._option.dataSet)\n .parse([this._viewDataStatistics], {\n type: 'dataview'\n })\n .transform(\n {\n type: 'dimensionItems',\n options: {\n scaleDepth: isNil(spec.fieldLevel) ? undefined : spec.fieldLevel + 1\n } as DimensionItemsConfig\n },\n false\n )\n .transform(\n {\n type: 'addVChartProperty',\n options: {\n beforeCall: initKeyMap.bind(this),\n call: addDataKey\n }\n },\n false\n );\n\n this._viewDataStatistics?.target.addListener('change', barBackgroundData.reRunAllTransform);\n } else {\n /**\n * @description 准备 barBackground 数据(连续轴)\n */\n const dimensionItems = ([data]: DataView[]) => {\n const dataCollect: Datum[] = [];\n const [field0, field1] = this.getDimensionContinuousField();\n const map: Record<string, Datum> = {};\n viewData.latestData.forEach((datum: Datum) => {\n const key = `${datum[field0]}-${datum[field1]}`;\n if (!map[key]) {\n map[key] = {\n [field0]: datum[field0],\n [field1]: datum[field1]\n };\n dataCollect.push(map[key]);\n }\n });\n return dataCollect;\n };\n\n registerDataSetInstanceTransform(this._option.dataSet, 'dimensionItems', dimensionItems);\n\n const viewData = this.getViewData();\n barBackgroundData = new DataView(this._option.dataSet)\n .parse([viewData], {\n type: 'dataview'\n })\n .transform(\n {\n type: 'dimensionItems'\n },\n false\n )\n .transform(\n {\n type: 'addVChartProperty',\n options: {\n beforeCall: initKeyMap.bind(this),\n call: addDataKey\n }\n },\n false\n );\n\n viewData?.target.addListener('change', barBackgroundData.reRunAllTransform);\n }\n this._barBackgroundViewData = new CompilableData(this._option, barBackgroundData);\n }\n\n init(option: IModelInitOption): void {\n super.init(option);\n if (this.direction === 'vertical') {\n this._xAxisHelper?.getScale(0).type === 'band' ? this.initBandRectMarkStyle() : this.initLinearRectMarkStyle();\n } else {\n this._yAxisHelper?.getScale(0).type === 'band' ? this.initBandRectMarkStyle() : this.initLinearRectMarkStyle();\n }\n }\n\n private _shouldDoPreCalculate() {\n const region = this.getRegion();\n return this.getStack() && region.getSeries().filter(s => s.type === this.type && s.getSpec().barMinHeight).length;\n }\n\n private _calculateStackRectPosition(isVertical: boolean) {\n const region = this.getRegion();\n\n // @ts-ignore\n if (region._bar_series_position_calculated) {\n return;\n }\n // @ts-ignore\n region._bar_series_position_calculated = true; // 因为是 region 内堆叠矩形的计算,所以加一个 hack 标识位用于避免重复计算\n let start: string;\n let end: string;\n let startMethod: string;\n let endMethod: string;\n let axisHelper: string;\n if (isVertical) {\n start = RECT_Y1;\n end = RECT_Y;\n startMethod = '_dataToPosY1';\n endMethod = '_dataToPosY';\n axisHelper = '_yAxisHelper';\n } else {\n start = RECT_X1;\n end = RECT_X;\n startMethod = '_dataToPosX1';\n endMethod = '_dataToPosX';\n axisHelper = '_xAxisHelper';\n }\n\n // only reCompute bar\n const stackValueGroup = getRegionStackGroup(region, false, s => s.type === this.type);\n // 按照堆积逻辑 重新计算一次图形的堆积位置并设置到数据上\n for (const stackValue in stackValueGroup) {\n for (const key in stackValueGroup[stackValue].nodes) {\n stackWithMinHeight(stackValueGroup[stackValue].nodes[key], region.getStackInverse(), {\n isVertical,\n start,\n end,\n startMethod,\n endMethod,\n axisHelper\n });\n }\n }\n }\n\n private _calculateRectPosition(datum: Datum, isVertical: boolean, useWholeRange?: boolean) {\n let startMethod: string;\n let endMethod: string;\n let axisHelper: string;\n if (isVertical) {\n startMethod = '_dataToPosY1';\n endMethod = '_dataToPosY';\n axisHelper = '_yAxisHelper';\n } else {\n startMethod = '_dataToPosX1';\n endMethod = '_dataToPosX';\n axisHelper = '_xAxisHelper';\n }\n\n const seriesScale = this[axisHelper].getScale?.(0);\n const inverse = this[axisHelper].isInverse();\n const barMinHeight = this._spec.barMinHeight;\n const y1 = valueInScaleRange(this[startMethod](datum), seriesScale, useWholeRange);\n const y = valueInScaleRange(this[endMethod](datum), seriesScale, useWholeRange);\n let height = Math.abs(y1 - y);\n if (height <= 0 && !isValueInScaleDomain(datum[this.getStackValueField()], seriesScale)) {\n height = 0;\n } else if (height < barMinHeight) {\n height = barMinHeight;\n }\n\n let flag = 1;\n if (y < y1) {\n flag = -1;\n } else if (y === y1) {\n flag = isVertical ? (inverse ? 1 : -1) : inverse ? -1 : 1;\n }\n return y1 + flag * height;\n }\n\n // 用于 bar-like 的位置转换,range-column 会重写这个方法\n protected _dataToPosX(datum: Datum) {\n return this.dataToPositionX(datum);\n }\n\n // 用于 bar-like 的位置转换,range-column 会重写这个方法\n protected _dataToPosX1(datum: Datum) {\n return this.dataToPositionX1(datum);\n }\n\n // 用于 bar-like 的位置转换,range-column 会重写这个方法\n protected _dataToPosY(datum: Datum) {\n return this.dataToPositionY(datum);\n }\n\n // 用于 bar-like 的位置转换,range-column 会重写这个方法\n protected _dataToPosY1(datum: Datum) {\n return this.dataToPositionY1(datum);\n }\n\n protected _getLinearBarRange = (start: number, end: number) => {\n let [x, x1] = [start, end].sort((a, b) => a - b);\n const realBarWidth = x1 - x;\n if (this._spec.barGap) {\n const halfBarGap = this._spec.barGap * 0.5;\n const tempX = x + halfBarGap;\n const tempX1 = x1 - halfBarGap;\n x = tempX;\n x1 = tempX1;\n }\n\n const curBarWidth = x1 - x;\n const barMinWidth = getActualNumValue(this._spec.barMinWidth || 2, realBarWidth);\n if (curBarWidth < barMinWidth) {\n const widthDiff = barMinWidth - curBarWidth;\n const halfWidthDiff = widthDiff / 2;\n x -= halfWidthDiff;\n x1 += halfWidthDiff;\n }\n\n return [x, x1];\n };\n\n protected _getBarXStart = (datum: Datum, scale: IBaseScale, useWholeRange?: boolean) => {\n if (this._shouldDoPreCalculate()) {\n this._calculateStackRectPosition(false);\n return datum[RECT_X];\n }\n\n if (this._spec.barMinHeight) {\n return this._calculateRectPosition(datum, false, useWholeRange);\n }\n\n return valueInScaleRange(this._dataToPosX(datum), scale, useWholeRange);\n };\n\n protected _getBarXEnd = (datum: Datum, scale: IBaseScale, useWholeRange?: boolean) => {\n if (this._shouldDoPreCalculate()) {\n this._calculateStackRectPosition(false);\n return datum[RECT_X1];\n }\n\n return valueInScaleRange(this._dataToPosX1(datum), scale, useWholeRange);\n };\n\n protected _getLinearBarXRange = (datum: Datum, scale: IBaseScale, useWholeRange?: boolean) => {\n const x = valueInScaleRange(this._dataToPosX(datum), scale, useWholeRange);\n const x1 = valueInScaleRange(this._dataToPosX1(datum), scale, useWholeRange);\n return this._getLinearBarRange(x, x1);\n };\n\n protected _getBarYStart = (datum: Datum, scale: IBaseScale) => {\n if (this._shouldDoPreCalculate()) {\n this._calculateStackRectPosition(true);\n return datum[RECT_Y];\n }\n\n if (this._spec.barMinHeight) {\n return this._calculateRectPosition(datum, true);\n }\n\n return valueInScaleRange(this._dataToPosY(datum), scale);\n };\n\n protected _getBarYEnd = (datum: Datum, scale: IBaseScale) => {\n if (this._shouldDoPreCalculate()) {\n this._calculateStackRectPosition(true);\n return datum[RECT_Y1];\n }\n\n return valueInScaleRange(this._dataToPosY1(datum), scale);\n };\n\n protected _getLinearBarYRange = (datum: Datum, scale: IBaseScale, useWholeRange?: boolean) => {\n const y = valueInScaleRange(this._dataToPosY(datum), scale, useWholeRange);\n const y1 = valueInScaleRange(this._dataToPosY1(datum), scale, useWholeRange);\n return this._getLinearBarRange(y, y1);\n };\n\n initBandRectMarkStyle() {\n const xScale = this._xAxisHelper?.getScale?.(0);\n const yScale = this._yAxisHelper?.getScale?.(0);\n\n // guess the direction which the user want\n if (this.direction === Direction.horizontal) {\n this.setMarkStyle(\n this._barMark,\n {\n x: datum => this._getBarXStart(datum, xScale),\n x1: datum => this._getBarXEnd(datum, xScale),\n y: datum => this._getPosition(this.direction, datum),\n height: () => this._getBarWidth(this._yAxisHelper),\n width: () => undefined,\n y1: () => undefined\n },\n 'normal',\n AttributeLevel.Series\n );\n } else {\n this.setMarkStyle(\n this._barMark,\n {\n y: datum => this._getBarYStart(datum, yScale),\n y1: datum => this._getBarYEnd(datum, yScale),\n x: datum => this._getPosition(this.direction, datum),\n width: () => this._getBarWidth(this._xAxisHelper),\n x1: () => undefined,\n height: () => undefined\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n\n this._initStackBarMarkStyle();\n\n this._initBandBarBackgroundMarkStyle();\n }\n\n protected _initStackBarMarkStyle() {\n if (!this._spec.stackCornerRadius) {\n return;\n }\n\n const xScale = this._xAxisHelper?.getScale?.(0);\n const yScale = this._yAxisHelper?.getScale?.(0);\n const isVertical = this.direction === Direction.vertical;\n\n this._barMark.setMarkConfig({\n clip: true,\n clipPath: () => {\n const usePreCalculatedRect = !!this._shouldDoPreCalculate();\n if (usePreCalculatedRect) {\n this._calculateStackRectPosition(isVertical);\n }\n const rectPaths: any[] = [];\n this._forEachStackGroup(node => {\n let min = Infinity;\n let max = -Infinity;\n let rectMin = Infinity;\n let rectMax = -Infinity;\n let hasPercent = false;\n let minPercent = Infinity;\n let maxPercent = -Infinity;\n node.values.forEach(datum => {\n const start = datum[STACK_FIELD_START];\n const end = datum[STACK_FIELD_END];\n const startPercent = datum[STACK_FIELD_START_PERCENT];\n const endPercent = datum[STACK_FIELD_END_PERCENT];\n min = Math.min(min, start, end);\n max = Math.max(max, start, end);\n if (usePreCalculatedRect) {\n const rectStart = datum[isVertical ? RECT_Y : RECT_X];\n const rectEnd = datum[isVertical ? RECT_Y1 : RECT_X1];\n rectMin = Math.min(rectMin, rectStart, rectEnd);\n rectMax = Math.max(rectMax, rectStart, rectEnd);\n }\n if (isValid(startPercent) && isValid(endPercent)) {\n hasPercent = true;\n minPercent = Math.min(minPercent, startPercent, endPercent);\n maxPercent = Math.max(maxPercent, startPercent, endPercent);\n }\n });\n const mockDatum = {\n ...node.values[0],\n [STACK_FIELD_START]: min,\n [STACK_FIELD_END]: max,\n ...(hasPercent\n ? {\n [STACK_FIELD_START_PERCENT]: minPercent,\n [STACK_FIELD_END_PERCENT]: maxPercent\n }\n : undefined)\n };\n const rectAttr =\n this.direction === Direction.horizontal\n ? {\n x: usePreCalculatedRect ? rectMin : this._getBarXStart(mockDatum, xScale),\n x1: usePreCalculatedRect ? rectMax : this._getBarXEnd(mockDatum, xScale),\n y: this._getPosition(this.direction, mockDatum),\n height: this._getBarWidth(this._yAxisHelper)\n }\n : {\n y: usePreCalculatedRect ? rectMin : this._getBarYStart(mockDatum, yScale),\n y1: usePreCalculatedRect ? rectMax : this._getBarYEnd(mockDatum, yScale),\n x: this._getPosition(this.direction, mockDatum),\n width: this._getBarWidth(this._xAxisHelper)\n };\n rectPaths.push(\n createRect({\n ...rectAttr,\n cornerRadius: isFunction(this._spec.stackCornerRadius)\n ? this._spec.stackCornerRadius(rectAttr, mockDatum, this._markAttributeContext)\n : this._spec.stackCornerRadius,\n fill: true\n })\n );\n });\n return rectPaths;\n }\n });\n }\n\n initLinearRectMarkStyle() {\n const xScale = this._xAxisHelper?.getScale?.(0);\n const yScale = this._yAxisHelper?.getScale?.(0);\n\n if (this.direction === Direction.horizontal) {\n const yChannels = isValid(this._fieldY2)\n ? {\n y: (datum: Datum) => this._getLinearBarYRange(datum, yScale, true)[0],\n y1: (datum: Datum) => this._getLinearBarYRange(datum, yScale, true)[1]\n }\n : {\n y: (datum: Datum) =>\n valueInScaleRange(this._dataToPosY(datum) - this._getBarWidth(this._yAxisHelper) / 2, yScale, true),\n height: (datum: Datum) => this._getBarWidth(this._yAxisHelper)\n };\n\n this.setMarkStyle(\n this._barMark,\n {\n x: (datum: Datum) => this._getBarXStart(datum, xScale, true),\n x1: (datum: Datum) => this._getBarXEnd(datum, xScale, true),\n ...yChannels\n },\n 'normal',\n AttributeLevel.Series\n );\n this.setMarkStyle(\n this._barBackgroundMark,\n {\n x: () => this._getBarBackgroundXStart(xScale),\n x1: () => this._getBarBackgroundXEnd(xScale),\n ...yChannels\n },\n 'normal',\n AttributeLevel.Series\n );\n } else {\n const xChannels = isValid(this._fieldX2)\n ? {\n x: (datum: Datum) => this._getLinearBarXRange(datum, xScale, true)[0],\n x1: (datum: Datum) => this._getLinearBarXRange(datum, xScale, true)[1]\n }\n : {\n x: (datum: Datum) =>\n valueInScaleRange(this._dataToPosX(datum) - this._getBarWidth(this._xAxisHelper) / 2, xScale, true),\n width: (datum: Datum) => this._getBarWidth(this._xAxisHelper)\n };\n this.setMarkStyle(\n this._barMark,\n {\n ...xChannels,\n y: datum => this._getBarYStart(datum, yScale),\n y1: datum => this._getBarYEnd(datum, yScale)\n },\n 'normal',\n AttributeLevel.Series\n );\n this.setMarkStyle(\n this._barBackgroundMark,\n {\n ...xChannels,\n y: () => this._getBarBackgroundYStart(yScale),\n y1: () => this._getBarBackgroundYEnd(yScale)\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n }\n\n protected _getBarBackgroundXStart = (scale: IBaseScale) => {\n const range = scale.range();\n const min = Math.min(range[0], range[range.length - 1]);\n return min;\n };\n\n protected _getBarBackgroundXEnd = (scale: IBaseScale) => {\n const range = scale.range();\n const max = Math.max(range[0], range[range.length - 1]);\n return max;\n };\n\n protected _getBarBackgroundYStart = (scale: IBaseScale) => {\n const range = scale.range();\n const min = Math.min(range[0], range[range.length - 1]);\n return min;\n };\n\n protected _getBarBackgroundYEnd = (scale: IBaseScale) => {\n const range = scale.range();\n const max = Math.max(range[0], range[range.length - 1]);\n return max;\n };\n\n protected _initBandBarBackgroundMarkStyle() {\n if (!this._barBackgroundMark) {\n return;\n }\n\n const xScale = this._xAxisHelper?.getScale?.(0);\n const yScale = this._yAxisHelper?.getScale?.(0);\n const spec = this._spec.barBackground ?? {};\n const scaleDepth = isNil(spec.fieldLevel) ? undefined : spec.fieldLevel + 1;\n\n // guess the direction which the user want\n if (this.direction === Direction.horizontal) {\n this.setMarkStyle(\n this._barBackgroundMark,\n {\n x: () => this._getBarBackgroundXStart(xScale),\n x1: () => this._getBarBackgroundXEnd(xScale),\n y: datum => this._getPosition(this.direction, datum, scaleDepth, SeriesMarkNameEnum.barBackground),\n height: () => this._getBarWidth(this._yAxisHelper, scaleDepth),\n width: () => undefined,\n y1: () => undefined\n },\n 'normal',\n AttributeLevel.Series\n );\n } else {\n this.setMarkStyle(\n this._barBackgroundMark,\n {\n x: datum => this._getPosition(this.direction, datum, scaleDepth, SeriesMarkNameEnum.barBackground),\n y: () => this._getBarBackgroundYStart(yScale),\n y1: () => this._getBarBackgroundYEnd(yScale),\n width: () => this._getBarWidth(this._xAxisHelper, scaleDepth),\n x1: () => undefined,\n height: () => undefined\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n }\n\n initAnimation() {\n // 这个数据在这个时候拿不到,因为组件还没创建结束,统计和筛选也还没添加。\n // 而且这个值理论上是动态的,建议 监听 viewDataStatisticsUpdate 消息动态更新\n const barAnimationParams: IBarAnimationParams = {\n yField: this._fieldY[0],\n xField: this._fieldX[0],\n direction: this.direction,\n growFrom: () => {\n const scale = this.direction === 'horizontal' ? this._xAxisHelper?.getScale(0) : this._yAxisHelper.getScale(0);\n if (scale) {\n const domain = scale.domain();\n const domainMin = minInArr<number>(domain);\n const domainMax = maxInArr<number>(domain);\n if (domainMax < 0) {\n return scale.scale(domainMax);\n } else if (domainMin > 0) {\n return scale.scale(domainMin);\n }\n return scale.scale(0);\n }\n }\n };\n const appearPreset = (this._spec.animationAppear as IStateAnimateSpec<BarAppearPreset>)?.preset;\n const animationParams = getGroupAnimationParams(this);\n\n this._barMark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('bar')?.(barAnimationParams, appearPreset),\n userAnimationConfig(this._barMarkName, this._spec, this._markAttributeContext),\n animationParams\n )\n );\n }\n\n protected _getBarWidth(axisHelper: IAxisHelper, scaleDepth?: number) {\n const depthFromSpec = this._groups ? this._groups.fields.length : 1;\n const depth = isNil(scaleDepth) ? depthFromSpec : Math.min(depthFromSpec, scaleDepth);\n\n const bandWidth = axisHelper.getBandwidth?.(depth - 1) ?? DefaultBandWidth;\n const hasBarWidth = isValid(this._spec.barWidth) && depth === depthFromSpec;\n\n const hasBarMinWidth = isValid(this._spec.barMinWidth);\n const hasBarMaxWidth = isValid(this._spec.barMaxWidth);\n let width = bandWidth;\n if (hasBarWidth) {\n width = getActualNumValue(this._spec.barWidth, bandWidth);\n }\n if (hasBarMinWidth) {\n width = Math.max(width, getActualNumValue(this._spec.barMinWidth, bandWidth));\n }\n if (hasBarMaxWidth) {\n width = Math.min(width, getActualNumValue(this._spec.barMaxWidth, bandWidth));\n }\n return width;\n }\n\n protected _getPosition(direction: DirectionType, datum: Datum, scaleDepth?: number, mark?: SeriesMarkNameEnum) {\n let axisHelper;\n let sizeAttribute;\n let dataToPosition;\n if (direction === Direction.horizontal) {\n axisHelper = this.getYAxisHelper();\n sizeAttribute = 'height';\n dataToPosition =\n mark === SeriesMarkNameEnum.barBackground\n ? this.dataToBarBackgroundPositionY.bind(this)\n : this.dataToPositionY.bind(this);\n } else {\n axisHelper = this.getXAxisHelper();\n sizeAttribute = 'width';\n dataToPosition =\n mark === SeriesMarkNameEnum.barBackground\n ? this.dataToBarBackgroundPositionX.bind(this)\n : 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 = isNil(scaleDepth) ? depthFromSpec : Math.min(depthFromSpec, scaleDepth);\n\n const bandWidth = axisHelper.getBandwidth?.(depth - 1) ?? DefaultBandWidth;\n const size = depth === depthFromSpec ? (this._barMark.getAttribute(sizeAttribute, datum) as number) : bandWidth;\n\n if (depth > 1 && isValid(this._spec.barGapInGroup)) {\n // 自里向外计算,沿着第一层分组的中心点进行位置调整\n const groupFields = this._groups.fields;\n const barInGroup = array(this._spec.barGapInGroup);\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(barInGroup[index - 1] ?? last(barInGroup), 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;\n }\n\n const continuous = isContinuous(scale.type || 'band');\n const pos = dataToPosition(datum, depth);\n\n return pos + (bandWidth - size) * 0.5 + (continuous ? -bandWidth / 2 : 0);\n }\n\n protected _barBackgroundPositionXEncoder?: (datum: Datum) => number;\n protected _getBarBackgroundPositionXEncoder = () => this._barBackgroundPositionXEncoder?.bind(this);\n protected _setBarBackgroundPositionXEncoder = (encoder: (datum: Datum) => number) => {\n this._barBackgroundPositionXEncoder = encoder.bind(this);\n };\n\n dataToBarBackgroundPositionX(datum: Datum, scaleDepth?: number): number {\n return this._dataToPosition(\n datum,\n this._xAxisHelper,\n this.fieldX,\n scaleDepth,\n this._getBarBackgroundPositionXEncoder,\n this._setBarBackgroundPositionXEncoder\n );\n }\n\n protected _barBackgroundPositionYEncoder?: (datum: Datum) => number;\n protected _getBarBackgroundPositionYEncoder = () => this._barBackgroundPositionYEncoder?.bind(this);\n protected _setBarBackgroundPositionYEncoder = (encoder: (datum: Datum) => number) => {\n this._barBackgroundPositionYEncoder = encoder.bind(this);\n };\n\n dataToBarBackgroundPositionY(datum: Datum, scaleDepth?: number): number {\n return this._dataToPosition(\n datum,\n this._yAxisHelper,\n this.fieldY,\n scaleDepth,\n this._getBarBackgroundPositionYEncoder,\n this._setBarBackgroundPositionYEncoder\n );\n }\n\n onLayoutEnd(): void {\n super.onLayoutEnd();\n const region = this.getRegion();\n // @ts-ignore\n region._bar_series_position_calculated = false;\n if (this._spec.sampling) {\n this.compile();\n }\n }\n\n onDataUpdate(): void {\n super.onDataUpdate();\n\n const region = this.getRegion();\n // @ts-ignore\n region._bar_series_position_calculated = false;\n }\n\n compile(): void {\n super.compile();\n\n if (this._spec.sampling) {\n const { width, height } = this._region.getLayoutRect();\n const fieldsY = this._fieldY;\n const fieldsX = this._fieldX;\n\n this._data.setTransform([\n {\n type: 'dataSampling',\n size: this._direction === Direction.horizontal ? height : width,\n factor: this._spec.samplingFactor,\n yfield: this._direction === Direction.horizontal ? fieldsX[0] : fieldsY[0],\n groupBy: this._seriesField,\n mode: this._spec.sampling\n }\n ]);\n }\n }\n\n getDefaultShapeType(): string {\n return 'square';\n }\n\n getActiveMarks(): IMark[] {\n return [this._barMark];\n }\n\n compileData() {\n super.compileData();\n this._barBackgroundViewData?.compile();\n }\n\n fillData() {\n super.fillData();\n this._barBackgroundViewData?.getDataView()?.reRunAllTransform();\n }\n\n viewDataUpdate(d: DataView): void {\n super.viewDataUpdate(d);\n this._barBackgroundViewData?.getDataView()?.reRunAllTransform();\n this._barBackgroundViewData?.updateData();\n }\n\n release() {\n super.release();\n this._barBackgroundViewData?.release();\n this._barBackgroundViewData = null;\n }\n}\n\nexport const registerBarSeries = () => {\n registerDataSamplingTransform();\n registerRectMark();\n registerBarAnimation();\n registerCartesianBandAxis();\n registerCartesianLinearAxis();\n Factory.registerSeries(BarSeries.type, BarSeries);\n};\n"]}