@visactor/vchart 2.0.0-alpha.2 → 2.0.0-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/es5/index.js +4 -2
- package/build/index.es.js +778 -1272
- package/build/index.js +778 -1272
- package/build/index.min.js +2 -2
- package/build/tsconfig.tsbuildinfo +1 -1
- package/cjs/animation/utils.d.ts +2 -2
- package/cjs/chart/base/base-chart.d.ts +1 -2
- package/cjs/chart/base/base-chart.js +0 -1
- package/cjs/chart/base/base-chart.js.map +1 -1
- package/cjs/chart/interface/chart.d.ts +1 -2
- package/cjs/chart/interface/chart.js.map +1 -1
- package/cjs/chart/mosaic/mosaic-transformer.js +1 -1
- package/cjs/chart/mosaic/mosaic-transformer.js.map +1 -1
- package/cjs/chart/mosaic/mosaic.js.map +1 -1
- package/cjs/compile/compiler.js +2 -1
- package/cjs/compile/compiler.js.map +1 -1
- package/cjs/component/axis/base-axis.d.ts +0 -1
- package/cjs/component/axis/base-axis.js +0 -3
- package/cjs/component/axis/base-axis.js.map +1 -1
- package/cjs/component/axis/cartesian/axis.d.ts +0 -5
- package/cjs/component/axis/cartesian/axis.js +1 -5
- package/cjs/component/axis/cartesian/axis.js.map +1 -1
- package/cjs/component/axis/polar/axis.d.ts +0 -2
- package/cjs/component/axis/polar/axis.js +0 -2
- package/cjs/component/axis/polar/axis.js.map +1 -1
- package/cjs/component/base/base-component.d.ts +1 -3
- package/cjs/component/base/base-component.js +1 -7
- package/cjs/component/base/base-component.js.map +1 -1
- package/cjs/component/brush/brush.d.ts +1 -3
- package/cjs/component/brush/brush.js +0 -2
- package/cjs/component/brush/brush.js.map +1 -1
- package/cjs/component/crosshair/base.d.ts +0 -4
- package/cjs/component/crosshair/base.js +0 -2
- package/cjs/component/crosshair/base.js.map +1 -1
- package/cjs/component/custom-mark/custom-mark.d.ts +0 -6
- package/cjs/component/custom-mark/custom-mark.js +0 -5
- package/cjs/component/custom-mark/custom-mark.js.map +1 -1
- package/cjs/component/data-zoom/data-filter-base-component.d.ts +0 -4
- package/cjs/component/data-zoom/data-filter-base-component.js +7 -10
- package/cjs/component/data-zoom/data-filter-base-component.js.map +1 -1
- package/cjs/component/data-zoom/util.d.ts +1 -0
- package/cjs/component/data-zoom/util.js +13 -10
- package/cjs/component/data-zoom/util.js.map +1 -1
- package/cjs/component/geo/geo-coordinate.d.ts +2 -6
- package/cjs/component/geo/geo-coordinate.js +0 -5
- package/cjs/component/geo/geo-coordinate.js.map +1 -1
- package/cjs/component/indicator/indicator.d.ts +0 -3
- package/cjs/component/indicator/indicator.js +0 -2
- package/cjs/component/indicator/indicator.js.map +1 -1
- package/cjs/component/interface/common.d.ts +0 -1
- package/cjs/component/interface/common.js.map +1 -1
- package/cjs/component/label/base-label.d.ts +2 -6
- package/cjs/component/label/base-label.js +11 -4
- package/cjs/component/label/base-label.js.map +1 -1
- package/cjs/component/label/label.d.ts +0 -1
- package/cjs/component/label/label.js +1 -8
- package/cjs/component/label/label.js.map +1 -1
- package/cjs/component/label/total-label.d.ts +0 -1
- package/cjs/component/label/total-label.js +1 -8
- package/cjs/component/label/total-label.js.map +1 -1
- package/cjs/component/legend/base-legend.d.ts +0 -3
- package/cjs/component/legend/base-legend.js +0 -2
- package/cjs/component/legend/base-legend.js.map +1 -1
- package/cjs/component/marker/base-marker.d.ts +1 -4
- package/cjs/component/marker/base-marker.js +0 -2
- package/cjs/component/marker/base-marker.js.map +1 -1
- package/cjs/component/marker/mark-point/base-mark-point.js +1 -1
- package/cjs/component/marker/mark-point/base-mark-point.js.map +1 -1
- package/cjs/component/player/player.d.ts +0 -4
- package/cjs/component/player/player.js +1 -6
- package/cjs/component/player/player.js.map +1 -1
- package/cjs/component/title/title.d.ts +0 -5
- package/cjs/component/title/title.js +0 -4
- package/cjs/component/title/title.js.map +1 -1
- package/cjs/component/tooltip/tooltip.d.ts +0 -6
- package/cjs/component/tooltip/tooltip.js +5 -12
- package/cjs/component/tooltip/tooltip.js.map +1 -1
- package/cjs/core/expression-function.js +1 -1
- package/cjs/core/factory.js +1 -1
- package/cjs/core/index.d.ts +1 -1
- package/cjs/core/index.js +2 -2
- package/cjs/core/index.js.map +1 -1
- package/cjs/core/instance-manager.js +1 -1
- package/cjs/core/interface.js +1 -1
- package/cjs/core/vchart.js +1 -1
- package/cjs/core/vchart.js.map +1 -1
- package/cjs/data/initialize.js +1 -1
- package/cjs/data/register.js +1 -1
- package/cjs/env/env.js +1 -1
- package/cjs/env/index.js +1 -1
- package/cjs/event/bubble.js +1 -1
- package/cjs/mark/base/base-mark.d.ts +2 -1
- package/cjs/mark/base/base-mark.js +11 -9
- package/cjs/mark/base/base-mark.js.map +1 -1
- package/cjs/mark/component.d.ts +0 -1
- package/cjs/mark/component.js +2 -6
- package/cjs/mark/component.js.map +1 -1
- package/cjs/mark/group.d.ts +1 -1
- package/cjs/mark/group.js +4 -4
- package/cjs/mark/group.js.map +1 -1
- package/cjs/mark/interface/common.d.ts +2 -0
- package/cjs/mark/interface/common.js.map +1 -1
- package/cjs/mark/interface/mark.d.ts +0 -1
- package/cjs/mark/interface/mark.js.map +1 -1
- package/cjs/model/base-model.d.ts +1 -2
- package/cjs/model/base-model.js.map +1 -1
- package/cjs/model/interface.d.ts +0 -1
- package/cjs/model/interface.js.map +1 -1
- package/cjs/plugin/components/tooltip-handler/dom-tooltip-handler.d.ts +1 -0
- package/cjs/plugin/components/tooltip-handler/dom-tooltip-handler.js +3 -0
- package/cjs/plugin/components/tooltip-handler/dom-tooltip-handler.js.map +1 -1
- package/cjs/region/region.d.ts +0 -1
- package/cjs/region/region.js +0 -1
- package/cjs/region/region.js.map +1 -1
- package/cjs/series/base/base-series.d.ts +1 -2
- package/cjs/series/base/base-series.js +0 -1
- package/cjs/series/base/base-series.js.map +1 -1
- package/cjs/series/funnel/funnel.js +16 -2
- package/cjs/series/funnel/funnel.js.map +1 -1
- package/cjs/series/liquid/liquid.js +1 -1
- package/cjs/series/liquid/liquid.js.map +1 -1
- package/cjs/series/mosaic/interface.d.ts +1 -0
- package/cjs/series/mosaic/interface.js.map +1 -1
- package/cjs/series/mosaic/mosaic.d.ts +2 -0
- package/cjs/series/mosaic/mosaic.js +5 -2
- package/cjs/series/mosaic/mosaic.js.map +1 -1
- package/cjs/series/rose/animation.js +14 -7
- package/cjs/series/rose/animation.js.map +1 -1
- package/cjs/series/word-cloud/base.js +3 -1
- package/cjs/series/word-cloud/base.js.map +1 -1
- package/cjs/typings/tooltip/handler.d.ts +1 -0
- package/cjs/typings/tooltip/handler.js.map +1 -1
- package/cjs/util/data.js +7 -3
- package/cjs/util/data.js.map +1 -1
- package/esm/animation/utils.d.ts +2 -2
- package/esm/chart/base/base-chart.d.ts +1 -2
- package/esm/chart/base/base-chart.js +0 -1
- package/esm/chart/base/base-chart.js.map +1 -1
- package/esm/chart/interface/chart.d.ts +1 -2
- package/esm/chart/interface/chart.js.map +1 -1
- package/esm/chart/mosaic/mosaic-transformer.js +1 -1
- package/esm/chart/mosaic/mosaic-transformer.js.map +1 -1
- package/esm/chart/mosaic/mosaic.js.map +1 -1
- package/esm/compile/compiler.js +2 -1
- package/esm/compile/compiler.js.map +1 -1
- package/esm/component/axis/base-axis.d.ts +0 -1
- package/esm/component/axis/base-axis.js +0 -3
- package/esm/component/axis/base-axis.js.map +1 -1
- package/esm/component/axis/cartesian/axis.d.ts +0 -5
- package/esm/component/axis/cartesian/axis.js +1 -5
- package/esm/component/axis/cartesian/axis.js.map +1 -1
- package/esm/component/axis/polar/axis.d.ts +0 -2
- package/esm/component/axis/polar/axis.js +0 -2
- package/esm/component/axis/polar/axis.js.map +1 -1
- package/esm/component/base/base-component.d.ts +1 -3
- package/esm/component/base/base-component.js +1 -7
- package/esm/component/base/base-component.js.map +1 -1
- package/esm/component/brush/brush.d.ts +1 -3
- package/esm/component/brush/brush.js +0 -2
- package/esm/component/brush/brush.js.map +1 -1
- package/esm/component/crosshair/base.d.ts +0 -4
- package/esm/component/crosshair/base.js +0 -2
- package/esm/component/crosshair/base.js.map +1 -1
- package/esm/component/custom-mark/custom-mark.d.ts +0 -6
- package/esm/component/custom-mark/custom-mark.js +0 -5
- package/esm/component/custom-mark/custom-mark.js.map +1 -1
- package/esm/component/data-zoom/data-filter-base-component.d.ts +0 -4
- package/esm/component/data-zoom/data-filter-base-component.js +6 -8
- package/esm/component/data-zoom/data-filter-base-component.js.map +1 -1
- package/esm/component/data-zoom/util.d.ts +1 -0
- package/esm/component/data-zoom/util.js +13 -9
- package/esm/component/data-zoom/util.js.map +1 -1
- package/esm/component/geo/geo-coordinate.d.ts +2 -6
- package/esm/component/geo/geo-coordinate.js +0 -5
- package/esm/component/geo/geo-coordinate.js.map +1 -1
- package/esm/component/indicator/indicator.d.ts +0 -3
- package/esm/component/indicator/indicator.js +0 -2
- package/esm/component/indicator/indicator.js.map +1 -1
- package/esm/component/interface/common.d.ts +0 -1
- package/esm/component/interface/common.js.map +1 -1
- package/esm/component/label/base-label.d.ts +2 -6
- package/esm/component/label/base-label.js +11 -4
- package/esm/component/label/base-label.js.map +1 -1
- package/esm/component/label/label.d.ts +0 -1
- package/esm/component/label/label.js +1 -8
- package/esm/component/label/label.js.map +1 -1
- package/esm/component/label/total-label.d.ts +0 -1
- package/esm/component/label/total-label.js +1 -8
- package/esm/component/label/total-label.js.map +1 -1
- package/esm/component/legend/base-legend.d.ts +0 -3
- package/esm/component/legend/base-legend.js +0 -2
- package/esm/component/legend/base-legend.js.map +1 -1
- package/esm/component/marker/base-marker.d.ts +1 -4
- package/esm/component/marker/base-marker.js +0 -2
- package/esm/component/marker/base-marker.js.map +1 -1
- package/esm/component/marker/mark-point/base-mark-point.js +1 -1
- package/esm/component/marker/mark-point/base-mark-point.js.map +1 -1
- package/esm/component/player/player.d.ts +0 -4
- package/esm/component/player/player.js +1 -6
- package/esm/component/player/player.js.map +1 -1
- package/esm/component/title/title.d.ts +0 -5
- package/esm/component/title/title.js +0 -4
- package/esm/component/title/title.js.map +1 -1
- package/esm/component/tooltip/tooltip.d.ts +0 -6
- package/esm/component/tooltip/tooltip.js +5 -12
- package/esm/component/tooltip/tooltip.js.map +1 -1
- package/esm/core/expression-function.js +1 -1
- package/esm/core/factory.js +1 -1
- package/esm/core/index.d.ts +1 -1
- package/esm/core/index.js +2 -2
- package/esm/core/index.js.map +1 -1
- package/esm/core/instance-manager.js +1 -1
- package/esm/core/interface.js +1 -1
- package/esm/core/vchart.js +1 -1
- package/esm/core/vchart.js.map +1 -1
- package/esm/data/initialize.js +1 -1
- package/esm/data/register.js +1 -1
- package/esm/env/env.js +1 -1
- package/esm/env/index.js +1 -1
- package/esm/event/bubble.js +1 -1
- package/esm/mark/base/base-mark.d.ts +2 -1
- package/esm/mark/base/base-mark.js +10 -9
- package/esm/mark/base/base-mark.js.map +1 -1
- package/esm/mark/component.d.ts +0 -1
- package/esm/mark/component.js +1 -7
- package/esm/mark/component.js.map +1 -1
- package/esm/mark/group.d.ts +1 -1
- package/esm/mark/group.js +3 -5
- package/esm/mark/group.js.map +1 -1
- package/esm/mark/interface/common.d.ts +2 -0
- package/esm/mark/interface/common.js.map +1 -1
- package/esm/mark/interface/mark.d.ts +0 -1
- package/esm/mark/interface/mark.js.map +1 -1
- package/esm/model/base-model.d.ts +1 -2
- package/esm/model/base-model.js.map +1 -1
- package/esm/model/interface.d.ts +0 -1
- package/esm/model/interface.js.map +1 -1
- package/esm/plugin/components/tooltip-handler/dom-tooltip-handler.d.ts +1 -0
- package/esm/plugin/components/tooltip-handler/dom-tooltip-handler.js +3 -0
- package/esm/plugin/components/tooltip-handler/dom-tooltip-handler.js.map +1 -1
- package/esm/region/region.d.ts +0 -1
- package/esm/region/region.js +0 -1
- package/esm/region/region.js.map +1 -1
- package/esm/series/base/base-series.d.ts +1 -2
- package/esm/series/base/base-series.js +0 -1
- package/esm/series/base/base-series.js.map +1 -1
- package/esm/series/funnel/funnel.js +16 -2
- package/esm/series/funnel/funnel.js.map +1 -1
- package/esm/series/liquid/liquid.js +1 -1
- package/esm/series/liquid/liquid.js.map +1 -1
- package/esm/series/mosaic/interface.d.ts +1 -0
- package/esm/series/mosaic/interface.js.map +1 -1
- package/esm/series/mosaic/mosaic.d.ts +2 -0
- package/esm/series/mosaic/mosaic.js +5 -2
- package/esm/series/mosaic/mosaic.js.map +1 -1
- package/esm/series/rose/animation.js +10 -7
- package/esm/series/rose/animation.js.map +1 -1
- package/esm/series/word-cloud/base.js +4 -0
- package/esm/series/word-cloud/base.js.map +1 -1
- package/esm/typings/tooltip/handler.d.ts +1 -0
- package/esm/typings/tooltip/handler.js.map +1 -1
- package/esm/util/data.js +6 -3
- package/esm/util/data.js.map +1 -1
- package/package.json +11 -11
|
@@ -2,7 +2,7 @@ import { BaseComponent } from '../base/base-component';
|
|
|
2
2
|
import { ComponentTypeEnum } from '../interface/type';
|
|
3
3
|
import { Brush as BrushComponent } from '@visactor/vrender-components';
|
|
4
4
|
import type { Maybe } from '@visactor/vutils';
|
|
5
|
-
import type {
|
|
5
|
+
import type { IModelSpecInfo } from '../../model/interface';
|
|
6
6
|
import type { IRegion } from '../../region/interface';
|
|
7
7
|
import type { IGraphic } from '@visactor/vrender-core';
|
|
8
8
|
import type { ISeries } from '../../series/interface';
|
|
@@ -55,8 +55,6 @@ export declare class Brush<T extends IBrushSpec = IBrushSpec> extends BaseCompon
|
|
|
55
55
|
private _initRegionAxisMap;
|
|
56
56
|
private _initAxisDataZoomMap;
|
|
57
57
|
protected initEvent(): void;
|
|
58
|
-
onRender(ctx: IModelRenderOption): void;
|
|
59
|
-
changeRegions(regions: IRegion[]): void;
|
|
60
58
|
_compareSpec(spec: T, prevSpec: T): {
|
|
61
59
|
change: boolean;
|
|
62
60
|
reMake: boolean;
|
|
@@ -69,8 +69,6 @@ class Brush extends base_component_1.BaseComponent {
|
|
|
69
69
|
}));
|
|
70
70
|
}
|
|
71
71
|
initEvent() {}
|
|
72
|
-
onRender(ctx) {}
|
|
73
|
-
changeRegions(regions) {}
|
|
74
72
|
_compareSpec(spec, prevSpec) {
|
|
75
73
|
this._brushComponents && this._relativeRegions.forEach(((region, index) => {
|
|
76
74
|
this._updateBrushComponent(region, index);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/component/brush/brush.ts"],"names":[],"mappings":"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","file":"brush.js","sourcesContent":["import { ChartEvent } from '../../constant/event';\nimport { AttributeLevel } from '../../constant/attribute';\nimport { LayoutZIndex } from '../../constant/layout';\nimport { BaseComponent } from '../base/base-component';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../interface/type';\nimport { Brush as BrushComponent, IOperateType as BrushEvent } from '@visactor/vrender-components';\nimport type { IBounds, IPointLike, Maybe } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { array, polygonIntersectPolygon, isValid, last, cloneDeep } from '@visactor/vutils';\nimport type { IModelRenderOption, IModelSpecInfo } from '../../model/interface';\nimport type { IRegion } from '../../region/interface';\nimport type { IGraphic, IGroup, INode, IPolygon } from '@visactor/vrender-core';\nimport { transformToGraphic } from '../../util/style';\nimport type { ISeries } from '../../series/interface';\nimport type { IMark, IMarkGraphic } from '../../mark/interface';\nimport type { BrushInteractiveRangeAttr, IBrush, IBrushSpec, selectedItemStyle } from './interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { isEqual } from '@visactor/vutils';\nimport { Factory } from '../../core/factory';\nimport type { DataZoom } from '../data-zoom';\nimport type { AxisComponent } from '../axis/base-axis';\nimport { getSpecInfo } from '../util';\nimport { brush } from '../../theme/builtin/common/component/brush';\n\nconst IN_BRUSH_STATE = 'inBrush';\nconst OUT_BRUSH_STATE = 'outOfBrush';\n\nexport class Brush<T extends IBrushSpec = IBrushSpec> extends BaseComponent<T> implements IBrush {\n layoutType: 'none' = 'none';\n static type = ComponentTypeEnum.brush;\n type = ComponentTypeEnum.brush;\n name: string = ComponentTypeEnum.brush;\n\n static readonly builtInTheme = {\n brush\n };\n static specKey = 'brush';\n specKey = 'brush';\n\n layoutZIndex: number = LayoutZIndex.Brush;\n\n // brush组件\n protected _brushComponents!: BrushComponent[];\n protected _relativeRegions!: IRegion[];\n protected _linkedSeries: ISeries[] = [];\n\n private _itemMap: { [regionId: string | number]: IMark[] } = {};\n private _linkedItemMap: { [seriesId: string | number]: IMark[] } = {};\n\n // 用brushName做分组管理的原因是: 如果有多个brush, 某个图元A brush内, 但在B brush外, 该图元state会被B误变成out of brush。 但其实该图元只有在A brush外才能被判断out of brush\n // 用dict做存储因为方便查找和删减对应图元\n protected _inBrushElementsMap: { [brushName: string]: { [elementKey: string]: IMarkGraphic } } = {};\n protected _outOfBrushElementsMap: { [elementKey: string]: IMarkGraphic } = {};\n protected _linkedInBrushElementsMap: { [brushName: string]: { [elementKey: string]: IMarkGraphic } } = {};\n protected _linkedOutOfBrushElementsMap: { [elementKey: string]: IMarkGraphic } = {};\n\n private _cacheInteractiveRangeAttrs: BrushInteractiveRangeAttr[] = [];\n\n private _needDisablePickable: boolean = false;\n\n private _releatedAxes: AxisComponent[] = [];\n\n // 根据region找axis\n private _regionAxisMap: { [regionId: string]: AxisComponent[] } = {};\n // 根据axis找dataZoom\n private _axisDataZoomMap: { [axisId: string]: DataZoom } = {};\n // 记录当前操作的axis或dataZoom的状态\n private _zoomRecord: {\n operateComponent: AxisComponent | DataZoom;\n start: number;\n end: number;\n startValue: number | string;\n endValue: number | string;\n }[] = [];\n\n static getSpecInfo(chartSpec: any): Maybe<IModelSpecInfo[]> {\n return getSpecInfo<IBrushSpec>(chartSpec, this.specKey, this.type, (s: IBrushSpec) => {\n return s.visible !== false;\n });\n }\n\n /*** start: abstract pipe ***/\n init() {\n const inBrushMarkAttr = this._transformBrushedMarkAttr(this._spec.inBrush);\n const outOfBrushMarkAttr = this._transformBrushedMarkAttr(this._spec.outOfBrush);\n // 注册mark state, 便于后续state管理\n this._option.getAllSeries().forEach((s: ISeries) => {\n s.getActiveMarks().forEach((m: IMark) => {\n if (m) {\n s.setMarkStyle(\n m,\n {\n ...inBrushMarkAttr\n },\n IN_BRUSH_STATE,\n AttributeLevel.Series\n );\n s.setMarkStyle(\n m,\n {\n ...outOfBrushMarkAttr\n },\n OUT_BRUSH_STATE,\n AttributeLevel.Series\n );\n }\n });\n });\n }\n private _initNeedOperatedItem() {\n const seriesUserId = this._spec.seriesId;\n const seriesIndex = this._spec.seriesIndex;\n this._relativeRegions.forEach(r => {\n const allMarks: IMark[] = [];\n r.getSeries().forEach((s: ISeries) => {\n if (\n (seriesUserId && array(seriesUserId).includes(s.userId.toString())) ||\n (seriesIndex && array(seriesIndex).includes(s.getSpecIndex())) ||\n (!seriesIndex && !seriesUserId)\n ) {\n allMarks.push(...s.getMarksWithoutRoot());\n }\n this._itemMap[r.id] = allMarks;\n });\n });\n\n this._linkedSeries.forEach(s => {\n this._linkedItemMap[s.id] = s.getMarksWithoutRoot();\n });\n }\n\n created() {\n super.created();\n\n this.initEvent();\n this._bindRegions();\n this._bindLinkedSeries();\n this._initRegionAxisMap();\n this._initAxisDataZoomMap();\n this._initNeedOperatedItem();\n }\n\n protected _bindRegions() {\n if (!isValid(this._spec.regionId) && !isValid(this._spec.regionIndex)) {\n this._relativeRegions = this._option.getAllRegions();\n } else {\n this._relativeRegions = this._option.getRegionsInUserIdOrIndex(\n array(this._spec.regionId),\n array(this._spec.regionIndex)\n );\n }\n }\n\n protected _bindLinkedSeries() {\n if (!isValid(this._spec.brushLinkSeriesId) && !isValid(this._spec.brushLinkSeriesIndex)) {\n return;\n }\n this._linkedSeries = this._option.getSeriesInUserIdOrIndex(\n array(this._spec.brushLinkSeriesId),\n array(this._spec.brushLinkSeriesIndex)\n );\n }\n\n private _initRegionAxisMap() {\n // 如果配置了axis,则按配置\n // 如果没有配置axis,则默认所有axis\n if (isValid(this._spec.axisId)) {\n array(this._spec.axisId).forEach((axisId: string) => {\n this._releatedAxes.push(this._option.getComponentByUserId(axisId) as AxisComponent);\n });\n } else if (isValid(this._spec.axisIndex)) {\n array(this._spec.axisIndex).forEach((axisIndex: number) => {\n this._releatedAxes.push(this._option.getComponentByIndex('axes', axisIndex) as AxisComponent);\n });\n } else {\n this._releatedAxes = this._option.getComponentsByKey('axes') as AxisComponent[];\n }\n\n // 按照region进行分组,便于brush找到关联axis (brush -> region -> axis)\n this._releatedAxes.forEach((axis: AxisComponent) => {\n axis?.getRegions().forEach((region: IRegion) => {\n if (this._regionAxisMap['region_' + region.id]) {\n this._regionAxisMap['region_' + region.id].push(axis);\n } else {\n this._regionAxisMap['region_' + region.id] = [axis];\n }\n });\n });\n }\n\n private _initAxisDataZoomMap() {\n (this._option.getComponentsByKey('dataZoom') as DataZoom[]).forEach((dz: DataZoom) => {\n if (dz.relatedAxisComponent) {\n this._axisDataZoomMap[(dz.relatedAxisComponent as AxisComponent).id] = dz;\n }\n });\n }\n\n protected initEvent() {\n // do nothing\n }\n onRender(ctx: IModelRenderOption): void {\n // do nothing\n }\n changeRegions(regions: IRegion[]): void {\n // do nothing\n }\n\n _compareSpec(spec: T, prevSpec: T) {\n if (this._brushComponents) {\n // FIXME: 这个逻辑放在这个方法里不太妥当?\n this._relativeRegions.forEach((region: IRegion, index: number) => {\n this._updateBrushComponent(region, index);\n });\n }\n const result = super._compareSpec(spec, prevSpec);\n if (!isEqual(prevSpec, spec)) {\n result.reRender = true;\n result.reMake = true;\n }\n return result;\n }\n\n onLayoutEnd(): void {\n super.onLayoutEnd();\n if (this._option.disableTriggerEvent) {\n return;\n }\n const brushVisible = this._spec.visible ?? true;\n if (brushVisible) {\n if (!this._brushComponents) {\n this._brushComponents = [];\n this._relativeRegions.forEach((region: IRegion, index: number) => {\n this._createBrushComponent(region, index);\n });\n } else {\n this._relativeRegions.forEach((region: IRegion, index: number) => {\n this._updateBrushComponent(region, index);\n });\n }\n }\n }\n /*** end: abstract pipe ***/\n\n /*** start: brush component ***/\n protected _updateBrushComponent(region: IRegion, componentIndex: number) {\n const interactiveAttr = this._getBrushInteractiveAttr(region);\n // 布局变化后, 更新可交互范围\n const brushComponent = this._brushComponents[componentIndex];\n brushComponent.setAttributes(interactiveAttr as any);\n\n // 布局变化后,清空brushMask 和 重置图元高亮状态\n this._initMarkBrushState(componentIndex, '');\n brushComponent.children[0].removeAllChild();\n }\n\n protected _createBrushComponent(region: IRegion, componentIndex: number) {\n const interactiveAttr = this._getBrushInteractiveAttr(region);\n const brush = new BrushComponent({\n zIndex: this.layoutZIndex,\n brushStyle: transformToGraphic(this._spec?.style),\n ...interactiveAttr,\n ...this._spec,\n disableTriggerEvent: this._option.disableTriggerEvent\n });\n brush.id = this._spec.id ?? `brush-${this.id}`;\n this.getContainer().add(brush as unknown as INode);\n this._brushComponents.push(brush);\n this._cacheInteractiveRangeAttrs.push(interactiveAttr);\n\n brush.addEventListener(BrushEvent.brushActive, (e: any) => {\n this._initMarkBrushState(componentIndex, OUT_BRUSH_STATE);\n this._emitEvent(ChartEvent.brushActive, region);\n });\n\n brush.addEventListener(BrushEvent.drawStart, (e: any) => {\n this._emitEvent(ChartEvent.brushStart, region);\n });\n\n brush.addEventListener(BrushEvent.moveStart, (e: any) => {\n this._emitEvent(ChartEvent.brushStart, region);\n });\n\n brush.addEventListener(BrushEvent.drawing, (e: any) => {\n this._needDisablePickable = true;\n this._handleBrushChange(region, e);\n this._emitEvent(ChartEvent.brushChange, region);\n });\n\n brush.addEventListener(BrushEvent.moving, (e: any) => {\n this._handleBrushChange(region, e);\n this._emitEvent(ChartEvent.brushChange, region);\n });\n\n brush.addEventListener(BrushEvent.brushClear, (e: any) => {\n this._initMarkBrushState(componentIndex, '');\n this._needDisablePickable = false;\n this._emitEvent(ChartEvent.brushClear, region);\n });\n\n brush.addEventListener(BrushEvent.drawEnd, (e: any) => {\n this._needDisablePickable = false;\n const { operateMask } = e.detail as any;\n if (this._spec?.onBrushEnd) {\n // 如果onBrushEnd返回true,则清空brush, 并抛出clear事件\n if (this._spec.onBrushEnd(e) === true) {\n this.clearGraphic();\n this._initMarkBrushState(componentIndex, '');\n this._needDisablePickable = false;\n this._emitEvent(ChartEvent.brushClear, region);\n } else {\n this._spec.onBrushEnd(e);\n this._emitEvent(ChartEvent.brushEnd, region);\n }\n } else {\n const inBrushData = this._extendDataInBrush(this._inBrushElementsMap);\n if (!this._spec.zoomWhenEmpty && inBrushData.length > 0) {\n this._setAxisAndDataZoom(operateMask, region);\n }\n this._emitEvent(ChartEvent.brushEnd, region);\n }\n });\n\n brush.addEventListener(BrushEvent.moveEnd, (e: any) => {\n const { operateMask } = e.detail as any;\n const inBrushData = this._extendDataInBrush(this._inBrushElementsMap);\n if (!this._spec.zoomWhenEmpty && inBrushData.length > 0) {\n this._setAxisAndDataZoom(operateMask, region);\n }\n this._emitEvent(ChartEvent.brushEnd, region);\n });\n }\n\n protected _getBrushInteractiveAttr(region: IRegion) {\n const regionLayoutPosition = region.getLayoutStartPoint();\n const regionLayoutRect = region.getLayoutRect();\n const seriesRegionStartX = regionLayoutPosition.x;\n const seriesRegionEndX = seriesRegionStartX + regionLayoutRect.width;\n const seriesRegionStartY = regionLayoutPosition.y;\n const seriesRegionEndY = seriesRegionStartY + regionLayoutRect.height;\n return {\n interactiveRange: {\n minY: seriesRegionStartY,\n maxY: seriesRegionEndY,\n minX: seriesRegionStartX,\n maxX: seriesRegionEndX\n },\n xRange: [seriesRegionStartX, seriesRegionEndX],\n yRange: [seriesRegionStartY, seriesRegionEndY]\n } as BrushInteractiveRangeAttr;\n }\n\n private _transformBrushedMarkAttr(brushedStyle: selectedItemStyle) {\n const styleResult: any = {};\n if (brushedStyle?.symbol) {\n styleResult.symbolType = brushedStyle.symbol;\n }\n if (brushedStyle?.symbolSize) {\n styleResult.size = brushedStyle.symbolSize;\n }\n if (brushedStyle?.color) {\n styleResult.fill = brushedStyle.color;\n }\n if (brushedStyle?.colorAlpha) {\n styleResult.fillOpacity = brushedStyle.colorAlpha;\n }\n return {\n ...transformToGraphic(brushedStyle),\n ...styleResult\n };\n }\n /*** end: brush component ***/\n\n /*** start: event dispatch ***/\n private _handleBrushChange(region: IRegion, e: any) {\n const { operateMask } = e.detail as any;\n this._reconfigItem(operateMask, region);\n this._reconfigLinkedItem(operateMask, region);\n }\n\n protected _extendDataInBrush(elementsMap: { [brushName: string]: { [elementKey: string]: IMarkGraphic } }) {\n const data = [];\n for (const brushName in elementsMap) {\n for (const elementKey in elementsMap[brushName]) {\n data.push({\n ...elementsMap[brushName][elementKey].context?.data?.[0]\n });\n }\n }\n return data;\n }\n\n protected _extendDatumOutOfBrush(elementsMap: { [elementKey: string]: IMarkGraphic }) {\n const data = [];\n for (const elementKey in elementsMap) {\n // 图例筛选后, elementKey未更新, 导致data可能为null\n // FIXME: brush透出的map维护逻辑有待优化\n data.push(elementsMap[elementKey].context?.data?.[0]);\n }\n return data;\n }\n\n private _emitEvent(eventType: string, region: IRegion) {\n this.event.emit(eventType, {\n model: this,\n value: {\n // 操作类型\n operateType: eventType,\n // 正在操作的region\n operateRegion: region,\n // 在选框内的 element data\n inBrushData: this._extendDataInBrush(this._inBrushElementsMap),\n // 在选框外的 element data\n outOfBrushData: this._extendDatumOutOfBrush(this._outOfBrushElementsMap),\n // 被链接的系列中:在选框内的 element data\n linkInBrushData: this._extendDataInBrush(this._linkedInBrushElementsMap),\n // 被链接的系列中:在选框外的 element data\n linkOutOfBrushData: this._extendDatumOutOfBrush(this._linkedOutOfBrushElementsMap),\n // 在选框内的 图形\n inBrushElementsMap: this._inBrushElementsMap,\n // 在选框外的 图形\n outOfBrushElementsMap: this._outOfBrushElementsMap,\n // 被链接的系列中:在选框内的 图形\n linkedInBrushElementsMap: this._linkedInBrushElementsMap,\n // 被链接的系列中:在选框外的 图形\n linkedOutOfBrushElementsMap: this._linkedOutOfBrushElementsMap,\n // 缩放记录\n zoomRecord: this._zoomRecord\n },\n vchart: this._option?.globalInstance\n });\n }\n /*** end: event dispatch ***/\n\n /** start: set mark state ***/\n private _reconfigItem(operateMask: IPolygon, region: IRegion) {\n if (!operateMask?.globalTransMatrix || !operateMask?.attribute?.points) {\n return;\n }\n\n // 根据变换矩阵得到brushMask的实际坐标\n const points = operateMask?.attribute?.points ?? [];\n const { a, b, c, d, e, f } = operateMask.globalTransMatrix;\n const pointsCoord = points.map((p: IPointLike) => {\n return {\n x: a * p.x + c * p.y + e,\n y: b * p.x + d * p.y + f\n };\n });\n const { markTypeFilter = [] } = this._spec;\n\n // 遍历图元, 更新状态\n this._itemMap[region.id].forEach((mark: IMark) => {\n if (markTypeFilter.includes(mark.type)) {\n return;\n }\n const graphics = mark.getGraphics();\n\n if (!graphics || !graphics.length) {\n return;\n }\n graphics.forEach((graphicItem: IMarkGraphic) => {\n const elementKey = mark.id + '_' + graphicItem.context.key;\n // 判断逻辑:\n // 应该被置为inBrush状态的图元:\n // before: 在out brush elment map, 即不在任何brush中\n // now: 在当前brush图元中\n\n // 应该被置为outOfBrush状态的图元:\n // before: 在当前brush 的 in brush element map中, 即在当前brush中\n // now: 不在当前brush中\n const isBrushContainItem = this._isBrushContainItem(operateMask.globalAABBBounds, pointsCoord, graphicItem);\n if (this._outOfBrushElementsMap?.[elementKey] && isBrushContainItem) {\n graphicItem.addState(IN_BRUSH_STATE, true);\n if (!this._inBrushElementsMap[operateMask?.name]) {\n this._inBrushElementsMap[operateMask?.name] = {};\n }\n this._inBrushElementsMap[operateMask?.name][elementKey] = graphicItem;\n delete this._outOfBrushElementsMap[elementKey];\n } else if (this._inBrushElementsMap?.[operateMask?.name]?.[elementKey] && !isBrushContainItem) {\n graphicItem.removeState(IN_BRUSH_STATE);\n graphicItem.addState(OUT_BRUSH_STATE, true);\n this._outOfBrushElementsMap[elementKey] = graphicItem;\n delete this._inBrushElementsMap[operateMask.name][elementKey];\n }\n graphicItem.setAttribute('pickable', !this._needDisablePickable);\n });\n });\n }\n\n private _reconfigLinkedItem(operateMask: IPolygon, region: IRegion) {\n if (!operateMask?.globalTransMatrix || !operateMask?.attribute?.points) {\n return;\n }\n\n const regionLayoutPos = region.getLayoutStartPoint();\n const seriesId = region.getSeries().map(s => s.id);\n this._linkedSeries.forEach((s: ISeries) => {\n if (!seriesId.includes(s.id)) {\n const sRegionLayoutPos = s.getRegion().getLayoutStartPoint();\n\n const regionOffsetX = sRegionLayoutPos.x - regionLayoutPos.x;\n const regionOffsetY = sRegionLayoutPos.y - regionLayoutPos.y;\n\n // 根据变换矩阵得到brushMask的实际坐标\n const points = operateMask?.attribute?.points ?? [];\n const { a, b, c, d, e, f } = operateMask.globalTransMatrix;\n\n const dx = regionOffsetX || 0;\n const dy = regionOffsetY || 0;\n\n const pointsCoord = points.map((p: IPointLike) => {\n return {\n x: a * p.x + c * p.y + e + dx,\n y: b * p.x + d * p.y + f + dy\n };\n });\n\n operateMask.globalAABBBounds\n .clone()\n .set(\n operateMask.globalAABBBounds.x1 + dx,\n operateMask.globalAABBBounds.y1 + dy,\n operateMask.globalAABBBounds.x2 + dx,\n operateMask.globalAABBBounds.y2 + dy\n );\n\n const { markTypeFilter = [] } = this._spec;\n this._linkedItemMap[s.id].forEach((mark: IMark) => {\n if (markTypeFilter.includes(mark.type)) {\n return;\n }\n const graphics = mark.getGraphics();\n if (!graphics || !graphics.length) {\n return;\n }\n graphics.forEach((graphicItem: IMarkGraphic) => {\n const { key } = graphicItem.context;\n\n const elementKey = mark.id + '_' + graphicItem.context.key;\n // 判断逻辑:\n // 应该被置为inBrush状态的图元:\n // before: 在out brush elment map, 即不在任何brush中\n // now: 在当前brush图元中\n\n // 应该被置为outOfBrush状态的图元:\n // before: 在当前brush 的 in brush element map中, 即在当前brush中\n // now: 不在当前brush中\n if (\n this._linkedOutOfBrushElementsMap?.[elementKey] &&\n this._isBrushContainItem(operateMask.globalAABBBounds, pointsCoord, graphicItem)\n ) {\n graphicItem.addState(IN_BRUSH_STATE, true);\n if (!this._linkedInBrushElementsMap[operateMask?.name]) {\n this._linkedInBrushElementsMap[operateMask?.name] = {};\n }\n this._linkedInBrushElementsMap[operateMask?.name][elementKey] = graphicItem;\n delete this._linkedOutOfBrushElementsMap[elementKey];\n } else if (\n this._linkedInBrushElementsMap?.[operateMask?.name]?.[elementKey] &&\n !this._isBrushContainItem(operateMask.globalAABBBounds, pointsCoord, graphicItem)\n ) {\n graphicItem.removeState(IN_BRUSH_STATE);\n graphicItem.addState(OUT_BRUSH_STATE, true);\n this._linkedOutOfBrushElementsMap[elementKey] = graphicItem;\n }\n graphicItem.setAttribute('pickable', !this._needDisablePickable);\n });\n });\n }\n });\n }\n\n private _isBrushContainItem(brushMaskAABBBounds: IBounds, brushMaskPointsCoord: IPointLike[], item: IMarkGraphic) {\n // brush与图表图元进行相交 或 包含判断\n let itemBounds: { x: number; y: number }[] = [];\n if (['symbol', 'rect'].includes(item.type)) {\n const { x1, x2, y1, y2 } = item?.globalAABBBounds;\n itemBounds = [\n {\n x: x1,\n y: y1\n },\n {\n x: x2,\n y: y1\n },\n {\n x: x2,\n y: y2\n },\n {\n x: x1,\n y: y2\n }\n ];\n return polygonIntersectPolygon(brushMaskPointsCoord, itemBounds);\n }\n return brushMaskAABBBounds.intersects(item.globalAABBBounds);\n }\n\n protected _initItemMap(\n itemMap: Record<string, IMark[]>,\n elementMap: Record<string, IMarkGraphic>,\n stateName: string\n ) {\n const { markTypeFilter = [] } = this._spec;\n\n Object.entries(itemMap).forEach(([regionId, marks]) => {\n marks.forEach((mark: IMark) => {\n if (markTypeFilter.includes(mark.type)) {\n return;\n }\n const graphics = mark.getGraphics();\n if (!graphics || !graphics.length) {\n return;\n }\n graphics.forEach((el: IMarkGraphic) => {\n const elementKey = mark.id + '_' + el.context.key;\n el.removeState(IN_BRUSH_STATE);\n el.removeState(OUT_BRUSH_STATE);\n stateName && el.addState(stateName, true);\n elementMap[elementKey] = el;\n });\n });\n });\n }\n\n protected _initMarkBrushState(componentIndex: number, stateName: string) {\n this._brushComponents.forEach((brush, index) => {\n if (index !== componentIndex) {\n brush.children[0].removeAllChild();\n }\n });\n\n this._inBrushElementsMap = {};\n this._outOfBrushElementsMap = {};\n this._linkedInBrushElementsMap = {};\n this._linkedOutOfBrushElementsMap = {};\n\n this._initItemMap(this._itemMap, this._outOfBrushElementsMap, stateName);\n this._initItemMap(this._linkedItemMap, this._linkedOutOfBrushElementsMap, stateName);\n }\n /** end: set mark state ***/\n\n /** start: control data zoom ***/\n private _stateClamp(state: number) {\n return Math.min(Math.max(0, state), 1);\n }\n\n private _setAxisAndDataZoom(operateMask: IPolygon, region: IRegion) {\n this._zoomRecord = [];\n if (this._spec.zoomAfterBrush) {\n // step1: 拿到brush bounds, 计算 continuous axis/dataZoom新范围\n const operateMaskBounds = operateMask.AABBBounds;\n\n // step2:\n // 如果轴关联了dataZoom,则通过dataZoom更新轴\n // 如果轴没有关联dataZoom,则直接更改轴rangeFactor\n this._regionAxisMap['region_' + region.id]?.forEach(axis => {\n const isHorizontal = axis.layoutOrient === 'bottom' || axis.layoutOrient === 'top';\n const axisRangeExpand = this._spec.axisRangeExpand ?? 0;\n const { x1, x2, y1, y2 } = operateMaskBounds;\n const regionStartAttr = isHorizontal ? 'x' : 'y';\n const boundsStart = isHorizontal ? x1 : y1;\n const boundsEnd = isHorizontal ? x2 : y2;\n\n if (this._axisDataZoomMap[axis.id]) {\n const dataZoom = this._axisDataZoomMap[axis.id];\n const releatedAxis = dataZoom.relatedAxisComponent as AxisComponent;\n const startValue = releatedAxis\n .getScale()\n .invert(boundsStart - region.getLayoutStartPoint()[regionStartAttr]);\n const endValue = releatedAxis.getScale().invert(boundsEnd - region.getLayoutStartPoint()[regionStartAttr]);\n const startPercent = dataZoom.dataToStatePoint(startValue);\n const endPercent = dataZoom.dataToStatePoint(endValue);\n const newStartPercent = this._stateClamp(startPercent - axisRangeExpand);\n const newEndPercent = this._stateClamp(endPercent + axisRangeExpand);\n dataZoom.setStartAndEnd(Math.min(newStartPercent, newEndPercent), Math.max(newStartPercent, newEndPercent), [\n 'percent',\n 'percent'\n ]);\n\n this._zoomRecord.push({\n operateComponent: dataZoom,\n start: newStartPercent,\n end: newEndPercent,\n startValue: dataZoom.statePointToData(newStartPercent),\n endValue: dataZoom.statePointToData(newEndPercent)\n });\n } else {\n const range = axis.getScale().range();\n const rangeFactor = axis.scaleRangeFactor() ?? [0, 1];\n\n // 判断轴是否为反向轴(last(range) < range[0]),即从右到左, 或从下到上\n // 如果是反向轴, 计算start和end时, 也要保持 start < end\n const isAxisReverse = last(range) < range[0];\n const startPosTemp = boundsStart - region.getLayoutStartPoint()[regionStartAttr];\n const endPosTemp = boundsEnd - region.getLayoutStartPoint()[regionStartAttr];\n const endPos = isAxisReverse ? Math.min(startPosTemp, endPosTemp) : Math.max(startPosTemp, endPosTemp);\n const startPos = isAxisReverse ? Math.max(startPosTemp, endPosTemp) : Math.min(startPosTemp, endPosTemp);\n\n const start =\n ((startPos - range[0]) / (last(range) - range[0])) * (rangeFactor[1] - rangeFactor[0]) + rangeFactor[0];\n const end =\n ((endPos - range[0]) / (last(range) - range[0])) * (rangeFactor[1] - rangeFactor[0]) + rangeFactor[0];\n const newStart = this._stateClamp(start - axisRangeExpand);\n const newEnd = this._stateClamp(end + axisRangeExpand);\n axis.scaleRangeFactor([newStart, newEnd]);\n axis.effect.scaleUpdate();\n\n this._zoomRecord.push({\n operateComponent: axis,\n start: newStart,\n end: newEnd,\n startValue: axis.getScale().invert(startPos),\n endValue: axis.getScale().invert(endPos)\n });\n }\n });\n }\n }\n\n /** end: control data zoom ***/\n\n protected _getNeedClearVRenderComponents(): IGraphic[] {\n return this._brushComponents as unknown as IGroup[];\n }\n\n clearGraphic(): void {\n if (this._brushComponents) {\n this._brushComponents.forEach(brush => {\n (brush as any)._container.incrementalClearChild();\n });\n }\n }\n\n clear(): void {\n if (this._brushComponents) {\n const container = this.getContainer();\n this._brushComponents.forEach((brush, index) => {\n // 清空元素状态\n this._initMarkBrushState(index, '');\n this._needDisablePickable = false;\n\n brush.removeAllChild();\n brush.releaseBrushEvents();\n\n if (container) {\n container.removeChild(brush as unknown as INode);\n }\n });\n this._brushComponents = null;\n }\n }\n}\n\nexport const registerBrush = () => {\n Factory.registerComponent(Brush.type, Brush);\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/component/brush/brush.ts"],"names":[],"mappings":"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","file":"brush.js","sourcesContent":["import { ChartEvent } from '../../constant/event';\nimport { AttributeLevel } from '../../constant/attribute';\nimport { LayoutZIndex } from '../../constant/layout';\nimport { BaseComponent } from '../base/base-component';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../interface/type';\nimport { Brush as BrushComponent, IOperateType as BrushEvent } from '@visactor/vrender-components';\nimport type { IBounds, IPointLike, Maybe } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { array, polygonIntersectPolygon, isValid, last, cloneDeep } from '@visactor/vutils';\nimport type { IModelRenderOption, IModelSpecInfo } from '../../model/interface';\nimport type { IRegion } from '../../region/interface';\nimport type { IGraphic, IGroup, INode, IPolygon } from '@visactor/vrender-core';\nimport { transformToGraphic } from '../../util/style';\nimport type { ISeries } from '../../series/interface';\nimport type { IMark, IMarkGraphic } from '../../mark/interface';\nimport type { BrushInteractiveRangeAttr, IBrush, IBrushSpec, selectedItemStyle } from './interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { isEqual } from '@visactor/vutils';\nimport { Factory } from '../../core/factory';\nimport type { DataZoom } from '../data-zoom';\nimport type { AxisComponent } from '../axis/base-axis';\nimport { getSpecInfo } from '../util';\nimport { brush } from '../../theme/builtin/common/component/brush';\n\nconst IN_BRUSH_STATE = 'inBrush';\nconst OUT_BRUSH_STATE = 'outOfBrush';\n\nexport class Brush<T extends IBrushSpec = IBrushSpec> extends BaseComponent<T> implements IBrush {\n layoutType: 'none' = 'none';\n static type = ComponentTypeEnum.brush;\n type = ComponentTypeEnum.brush;\n name: string = ComponentTypeEnum.brush;\n\n static readonly builtInTheme = {\n brush\n };\n static specKey = 'brush';\n specKey = 'brush';\n\n layoutZIndex: number = LayoutZIndex.Brush;\n\n // brush组件\n protected _brushComponents!: BrushComponent[];\n protected _relativeRegions!: IRegion[];\n protected _linkedSeries: ISeries[] = [];\n\n private _itemMap: { [regionId: string | number]: IMark[] } = {};\n private _linkedItemMap: { [seriesId: string | number]: IMark[] } = {};\n\n // 用brushName做分组管理的原因是: 如果有多个brush, 某个图元A brush内, 但在B brush外, 该图元state会被B误变成out of brush。 但其实该图元只有在A brush外才能被判断out of brush\n // 用dict做存储因为方便查找和删减对应图元\n protected _inBrushElementsMap: { [brushName: string]: { [elementKey: string]: IMarkGraphic } } = {};\n protected _outOfBrushElementsMap: { [elementKey: string]: IMarkGraphic } = {};\n protected _linkedInBrushElementsMap: { [brushName: string]: { [elementKey: string]: IMarkGraphic } } = {};\n protected _linkedOutOfBrushElementsMap: { [elementKey: string]: IMarkGraphic } = {};\n\n private _cacheInteractiveRangeAttrs: BrushInteractiveRangeAttr[] = [];\n\n private _needDisablePickable: boolean = false;\n\n private _releatedAxes: AxisComponent[] = [];\n\n // 根据region找axis\n private _regionAxisMap: { [regionId: string]: AxisComponent[] } = {};\n // 根据axis找dataZoom\n private _axisDataZoomMap: { [axisId: string]: DataZoom } = {};\n // 记录当前操作的axis或dataZoom的状态\n private _zoomRecord: {\n operateComponent: AxisComponent | DataZoom;\n start: number;\n end: number;\n startValue: number | string;\n endValue: number | string;\n }[] = [];\n\n static getSpecInfo(chartSpec: any): Maybe<IModelSpecInfo[]> {\n return getSpecInfo<IBrushSpec>(chartSpec, this.specKey, this.type, (s: IBrushSpec) => {\n return s.visible !== false;\n });\n }\n\n /*** start: abstract pipe ***/\n init() {\n const inBrushMarkAttr = this._transformBrushedMarkAttr(this._spec.inBrush);\n const outOfBrushMarkAttr = this._transformBrushedMarkAttr(this._spec.outOfBrush);\n // 注册mark state, 便于后续state管理\n this._option.getAllSeries().forEach((s: ISeries) => {\n s.getActiveMarks().forEach((m: IMark) => {\n if (m) {\n s.setMarkStyle(\n m,\n {\n ...inBrushMarkAttr\n },\n IN_BRUSH_STATE,\n AttributeLevel.Series\n );\n s.setMarkStyle(\n m,\n {\n ...outOfBrushMarkAttr\n },\n OUT_BRUSH_STATE,\n AttributeLevel.Series\n );\n }\n });\n });\n }\n private _initNeedOperatedItem() {\n const seriesUserId = this._spec.seriesId;\n const seriesIndex = this._spec.seriesIndex;\n this._relativeRegions.forEach(r => {\n const allMarks: IMark[] = [];\n r.getSeries().forEach((s: ISeries) => {\n if (\n (seriesUserId && array(seriesUserId).includes(s.userId.toString())) ||\n (seriesIndex && array(seriesIndex).includes(s.getSpecIndex())) ||\n (!seriesIndex && !seriesUserId)\n ) {\n allMarks.push(...s.getMarksWithoutRoot());\n }\n this._itemMap[r.id] = allMarks;\n });\n });\n\n this._linkedSeries.forEach(s => {\n this._linkedItemMap[s.id] = s.getMarksWithoutRoot();\n });\n }\n\n created() {\n super.created();\n\n this.initEvent();\n this._bindRegions();\n this._bindLinkedSeries();\n this._initRegionAxisMap();\n this._initAxisDataZoomMap();\n this._initNeedOperatedItem();\n }\n\n protected _bindRegions() {\n if (!isValid(this._spec.regionId) && !isValid(this._spec.regionIndex)) {\n this._relativeRegions = this._option.getAllRegions();\n } else {\n this._relativeRegions = this._option.getRegionsInUserIdOrIndex(\n array(this._spec.regionId),\n array(this._spec.regionIndex)\n );\n }\n }\n\n protected _bindLinkedSeries() {\n if (!isValid(this._spec.brushLinkSeriesId) && !isValid(this._spec.brushLinkSeriesIndex)) {\n return;\n }\n this._linkedSeries = this._option.getSeriesInUserIdOrIndex(\n array(this._spec.brushLinkSeriesId),\n array(this._spec.brushLinkSeriesIndex)\n );\n }\n\n private _initRegionAxisMap() {\n // 如果配置了axis,则按配置\n // 如果没有配置axis,则默认所有axis\n if (isValid(this._spec.axisId)) {\n array(this._spec.axisId).forEach((axisId: string) => {\n this._releatedAxes.push(this._option.getComponentByUserId(axisId) as AxisComponent);\n });\n } else if (isValid(this._spec.axisIndex)) {\n array(this._spec.axisIndex).forEach((axisIndex: number) => {\n this._releatedAxes.push(this._option.getComponentByIndex('axes', axisIndex) as AxisComponent);\n });\n } else {\n this._releatedAxes = this._option.getComponentsByKey('axes') as AxisComponent[];\n }\n\n // 按照region进行分组,便于brush找到关联axis (brush -> region -> axis)\n this._releatedAxes.forEach((axis: AxisComponent) => {\n axis?.getRegions().forEach((region: IRegion) => {\n if (this._regionAxisMap['region_' + region.id]) {\n this._regionAxisMap['region_' + region.id].push(axis);\n } else {\n this._regionAxisMap['region_' + region.id] = [axis];\n }\n });\n });\n }\n\n private _initAxisDataZoomMap() {\n (this._option.getComponentsByKey('dataZoom') as DataZoom[]).forEach((dz: DataZoom) => {\n if (dz.relatedAxisComponent) {\n this._axisDataZoomMap[(dz.relatedAxisComponent as AxisComponent).id] = dz;\n }\n });\n }\n\n protected initEvent() {\n // do nothing\n }\n\n _compareSpec(spec: T, prevSpec: T) {\n if (this._brushComponents) {\n // FIXME: 这个逻辑放在这个方法里不太妥当?\n this._relativeRegions.forEach((region: IRegion, index: number) => {\n this._updateBrushComponent(region, index);\n });\n }\n const result = super._compareSpec(spec, prevSpec);\n if (!isEqual(prevSpec, spec)) {\n result.reRender = true;\n result.reMake = true;\n }\n return result;\n }\n\n onLayoutEnd(): void {\n super.onLayoutEnd();\n if (this._option.disableTriggerEvent) {\n return;\n }\n const brushVisible = this._spec.visible ?? true;\n if (brushVisible) {\n if (!this._brushComponents) {\n this._brushComponents = [];\n this._relativeRegions.forEach((region: IRegion, index: number) => {\n this._createBrushComponent(region, index);\n });\n } else {\n this._relativeRegions.forEach((region: IRegion, index: number) => {\n this._updateBrushComponent(region, index);\n });\n }\n }\n }\n /*** end: abstract pipe ***/\n\n /*** start: brush component ***/\n protected _updateBrushComponent(region: IRegion, componentIndex: number) {\n const interactiveAttr = this._getBrushInteractiveAttr(region);\n // 布局变化后, 更新可交互范围\n const brushComponent = this._brushComponents[componentIndex];\n brushComponent.setAttributes(interactiveAttr as any);\n\n // 布局变化后,清空brushMask 和 重置图元高亮状态\n this._initMarkBrushState(componentIndex, '');\n brushComponent.children[0].removeAllChild();\n }\n\n protected _createBrushComponent(region: IRegion, componentIndex: number) {\n const interactiveAttr = this._getBrushInteractiveAttr(region);\n const brush = new BrushComponent({\n zIndex: this.layoutZIndex,\n brushStyle: transformToGraphic(this._spec?.style),\n ...interactiveAttr,\n ...this._spec,\n disableTriggerEvent: this._option.disableTriggerEvent\n });\n brush.id = this._spec.id ?? `brush-${this.id}`;\n this.getContainer().add(brush as unknown as INode);\n this._brushComponents.push(brush);\n this._cacheInteractiveRangeAttrs.push(interactiveAttr);\n\n brush.addEventListener(BrushEvent.brushActive, (e: any) => {\n this._initMarkBrushState(componentIndex, OUT_BRUSH_STATE);\n this._emitEvent(ChartEvent.brushActive, region);\n });\n\n brush.addEventListener(BrushEvent.drawStart, (e: any) => {\n this._emitEvent(ChartEvent.brushStart, region);\n });\n\n brush.addEventListener(BrushEvent.moveStart, (e: any) => {\n this._emitEvent(ChartEvent.brushStart, region);\n });\n\n brush.addEventListener(BrushEvent.drawing, (e: any) => {\n this._needDisablePickable = true;\n this._handleBrushChange(region, e);\n this._emitEvent(ChartEvent.brushChange, region);\n });\n\n brush.addEventListener(BrushEvent.moving, (e: any) => {\n this._handleBrushChange(region, e);\n this._emitEvent(ChartEvent.brushChange, region);\n });\n\n brush.addEventListener(BrushEvent.brushClear, (e: any) => {\n this._initMarkBrushState(componentIndex, '');\n this._needDisablePickable = false;\n this._emitEvent(ChartEvent.brushClear, region);\n });\n\n brush.addEventListener(BrushEvent.drawEnd, (e: any) => {\n this._needDisablePickable = false;\n const { operateMask } = e.detail as any;\n if (this._spec?.onBrushEnd) {\n // 如果onBrushEnd返回true,则清空brush, 并抛出clear事件\n if (this._spec.onBrushEnd(e) === true) {\n this.clearGraphic();\n this._initMarkBrushState(componentIndex, '');\n this._needDisablePickable = false;\n this._emitEvent(ChartEvent.brushClear, region);\n } else {\n this._spec.onBrushEnd(e);\n this._emitEvent(ChartEvent.brushEnd, region);\n }\n } else {\n const inBrushData = this._extendDataInBrush(this._inBrushElementsMap);\n if (!this._spec.zoomWhenEmpty && inBrushData.length > 0) {\n this._setAxisAndDataZoom(operateMask, region);\n }\n this._emitEvent(ChartEvent.brushEnd, region);\n }\n });\n\n brush.addEventListener(BrushEvent.moveEnd, (e: any) => {\n const { operateMask } = e.detail as any;\n const inBrushData = this._extendDataInBrush(this._inBrushElementsMap);\n if (!this._spec.zoomWhenEmpty && inBrushData.length > 0) {\n this._setAxisAndDataZoom(operateMask, region);\n }\n this._emitEvent(ChartEvent.brushEnd, region);\n });\n }\n\n protected _getBrushInteractiveAttr(region: IRegion) {\n const regionLayoutPosition = region.getLayoutStartPoint();\n const regionLayoutRect = region.getLayoutRect();\n const seriesRegionStartX = regionLayoutPosition.x;\n const seriesRegionEndX = seriesRegionStartX + regionLayoutRect.width;\n const seriesRegionStartY = regionLayoutPosition.y;\n const seriesRegionEndY = seriesRegionStartY + regionLayoutRect.height;\n return {\n interactiveRange: {\n minY: seriesRegionStartY,\n maxY: seriesRegionEndY,\n minX: seriesRegionStartX,\n maxX: seriesRegionEndX\n },\n xRange: [seriesRegionStartX, seriesRegionEndX],\n yRange: [seriesRegionStartY, seriesRegionEndY]\n } as BrushInteractiveRangeAttr;\n }\n\n private _transformBrushedMarkAttr(brushedStyle: selectedItemStyle) {\n const styleResult: any = {};\n if (brushedStyle?.symbol) {\n styleResult.symbolType = brushedStyle.symbol;\n }\n if (brushedStyle?.symbolSize) {\n styleResult.size = brushedStyle.symbolSize;\n }\n if (brushedStyle?.color) {\n styleResult.fill = brushedStyle.color;\n }\n if (brushedStyle?.colorAlpha) {\n styleResult.fillOpacity = brushedStyle.colorAlpha;\n }\n return {\n ...transformToGraphic(brushedStyle),\n ...styleResult\n };\n }\n /*** end: brush component ***/\n\n /*** start: event dispatch ***/\n private _handleBrushChange(region: IRegion, e: any) {\n const { operateMask } = e.detail as any;\n this._reconfigItem(operateMask, region);\n this._reconfigLinkedItem(operateMask, region);\n }\n\n protected _extendDataInBrush(elementsMap: { [brushName: string]: { [elementKey: string]: IMarkGraphic } }) {\n const data = [];\n for (const brushName in elementsMap) {\n for (const elementKey in elementsMap[brushName]) {\n data.push({\n ...elementsMap[brushName][elementKey].context?.data?.[0]\n });\n }\n }\n return data;\n }\n\n protected _extendDatumOutOfBrush(elementsMap: { [elementKey: string]: IMarkGraphic }) {\n const data = [];\n for (const elementKey in elementsMap) {\n // 图例筛选后, elementKey未更新, 导致data可能为null\n // FIXME: brush透出的map维护逻辑有待优化\n data.push(elementsMap[elementKey].context?.data?.[0]);\n }\n return data;\n }\n\n private _emitEvent(eventType: string, region: IRegion) {\n this.event.emit(eventType, {\n model: this,\n value: {\n // 操作类型\n operateType: eventType,\n // 正在操作的region\n operateRegion: region,\n // 在选框内的 element data\n inBrushData: this._extendDataInBrush(this._inBrushElementsMap),\n // 在选框外的 element data\n outOfBrushData: this._extendDatumOutOfBrush(this._outOfBrushElementsMap),\n // 被链接的系列中:在选框内的 element data\n linkInBrushData: this._extendDataInBrush(this._linkedInBrushElementsMap),\n // 被链接的系列中:在选框外的 element data\n linkOutOfBrushData: this._extendDatumOutOfBrush(this._linkedOutOfBrushElementsMap),\n // 在选框内的 图形\n inBrushElementsMap: this._inBrushElementsMap,\n // 在选框外的 图形\n outOfBrushElementsMap: this._outOfBrushElementsMap,\n // 被链接的系列中:在选框内的 图形\n linkedInBrushElementsMap: this._linkedInBrushElementsMap,\n // 被链接的系列中:在选框外的 图形\n linkedOutOfBrushElementsMap: this._linkedOutOfBrushElementsMap,\n // 缩放记录\n zoomRecord: this._zoomRecord\n },\n vchart: this._option?.globalInstance\n });\n }\n /*** end: event dispatch ***/\n\n /** start: set mark state ***/\n private _reconfigItem(operateMask: IPolygon, region: IRegion) {\n if (!operateMask?.globalTransMatrix || !operateMask?.attribute?.points) {\n return;\n }\n\n // 根据变换矩阵得到brushMask的实际坐标\n const points = operateMask?.attribute?.points ?? [];\n const { a, b, c, d, e, f } = operateMask.globalTransMatrix;\n const pointsCoord = points.map((p: IPointLike) => {\n return {\n x: a * p.x + c * p.y + e,\n y: b * p.x + d * p.y + f\n };\n });\n const { markTypeFilter = [] } = this._spec;\n\n // 遍历图元, 更新状态\n this._itemMap[region.id].forEach((mark: IMark) => {\n if (markTypeFilter.includes(mark.type)) {\n return;\n }\n const graphics = mark.getGraphics();\n\n if (!graphics || !graphics.length) {\n return;\n }\n graphics.forEach((graphicItem: IMarkGraphic) => {\n const elementKey = mark.id + '_' + graphicItem.context.key;\n // 判断逻辑:\n // 应该被置为inBrush状态的图元:\n // before: 在out brush elment map, 即不在任何brush中\n // now: 在当前brush图元中\n\n // 应该被置为outOfBrush状态的图元:\n // before: 在当前brush 的 in brush element map中, 即在当前brush中\n // now: 不在当前brush中\n const isBrushContainItem = this._isBrushContainItem(operateMask.globalAABBBounds, pointsCoord, graphicItem);\n if (this._outOfBrushElementsMap?.[elementKey] && isBrushContainItem) {\n graphicItem.addState(IN_BRUSH_STATE, true);\n if (!this._inBrushElementsMap[operateMask?.name]) {\n this._inBrushElementsMap[operateMask?.name] = {};\n }\n this._inBrushElementsMap[operateMask?.name][elementKey] = graphicItem;\n delete this._outOfBrushElementsMap[elementKey];\n } else if (this._inBrushElementsMap?.[operateMask?.name]?.[elementKey] && !isBrushContainItem) {\n graphicItem.removeState(IN_BRUSH_STATE);\n graphicItem.addState(OUT_BRUSH_STATE, true);\n this._outOfBrushElementsMap[elementKey] = graphicItem;\n delete this._inBrushElementsMap[operateMask.name][elementKey];\n }\n graphicItem.setAttribute('pickable', !this._needDisablePickable);\n });\n });\n }\n\n private _reconfigLinkedItem(operateMask: IPolygon, region: IRegion) {\n if (!operateMask?.globalTransMatrix || !operateMask?.attribute?.points) {\n return;\n }\n\n const regionLayoutPos = region.getLayoutStartPoint();\n const seriesId = region.getSeries().map(s => s.id);\n this._linkedSeries.forEach((s: ISeries) => {\n if (!seriesId.includes(s.id)) {\n const sRegionLayoutPos = s.getRegion().getLayoutStartPoint();\n\n const regionOffsetX = sRegionLayoutPos.x - regionLayoutPos.x;\n const regionOffsetY = sRegionLayoutPos.y - regionLayoutPos.y;\n\n // 根据变换矩阵得到brushMask的实际坐标\n const points = operateMask?.attribute?.points ?? [];\n const { a, b, c, d, e, f } = operateMask.globalTransMatrix;\n\n const dx = regionOffsetX || 0;\n const dy = regionOffsetY || 0;\n\n const pointsCoord = points.map((p: IPointLike) => {\n return {\n x: a * p.x + c * p.y + e + dx,\n y: b * p.x + d * p.y + f + dy\n };\n });\n\n operateMask.globalAABBBounds\n .clone()\n .set(\n operateMask.globalAABBBounds.x1 + dx,\n operateMask.globalAABBBounds.y1 + dy,\n operateMask.globalAABBBounds.x2 + dx,\n operateMask.globalAABBBounds.y2 + dy\n );\n\n const { markTypeFilter = [] } = this._spec;\n this._linkedItemMap[s.id].forEach((mark: IMark) => {\n if (markTypeFilter.includes(mark.type)) {\n return;\n }\n const graphics = mark.getGraphics();\n if (!graphics || !graphics.length) {\n return;\n }\n graphics.forEach((graphicItem: IMarkGraphic) => {\n const { key } = graphicItem.context;\n\n const elementKey = mark.id + '_' + graphicItem.context.key;\n // 判断逻辑:\n // 应该被置为inBrush状态的图元:\n // before: 在out brush elment map, 即不在任何brush中\n // now: 在当前brush图元中\n\n // 应该被置为outOfBrush状态的图元:\n // before: 在当前brush 的 in brush element map中, 即在当前brush中\n // now: 不在当前brush中\n if (\n this._linkedOutOfBrushElementsMap?.[elementKey] &&\n this._isBrushContainItem(operateMask.globalAABBBounds, pointsCoord, graphicItem)\n ) {\n graphicItem.addState(IN_BRUSH_STATE, true);\n if (!this._linkedInBrushElementsMap[operateMask?.name]) {\n this._linkedInBrushElementsMap[operateMask?.name] = {};\n }\n this._linkedInBrushElementsMap[operateMask?.name][elementKey] = graphicItem;\n delete this._linkedOutOfBrushElementsMap[elementKey];\n } else if (\n this._linkedInBrushElementsMap?.[operateMask?.name]?.[elementKey] &&\n !this._isBrushContainItem(operateMask.globalAABBBounds, pointsCoord, graphicItem)\n ) {\n graphicItem.removeState(IN_BRUSH_STATE);\n graphicItem.addState(OUT_BRUSH_STATE, true);\n this._linkedOutOfBrushElementsMap[elementKey] = graphicItem;\n }\n graphicItem.setAttribute('pickable', !this._needDisablePickable);\n });\n });\n }\n });\n }\n\n private _isBrushContainItem(brushMaskAABBBounds: IBounds, brushMaskPointsCoord: IPointLike[], item: IMarkGraphic) {\n // brush与图表图元进行相交 或 包含判断\n let itemBounds: { x: number; y: number }[] = [];\n if (['symbol', 'rect'].includes(item.type)) {\n const { x1, x2, y1, y2 } = item?.globalAABBBounds;\n itemBounds = [\n {\n x: x1,\n y: y1\n },\n {\n x: x2,\n y: y1\n },\n {\n x: x2,\n y: y2\n },\n {\n x: x1,\n y: y2\n }\n ];\n return polygonIntersectPolygon(brushMaskPointsCoord, itemBounds);\n }\n return brushMaskAABBBounds.intersects(item.globalAABBBounds);\n }\n\n protected _initItemMap(\n itemMap: Record<string, IMark[]>,\n elementMap: Record<string, IMarkGraphic>,\n stateName: string\n ) {\n const { markTypeFilter = [] } = this._spec;\n\n Object.entries(itemMap).forEach(([regionId, marks]) => {\n marks.forEach((mark: IMark) => {\n if (markTypeFilter.includes(mark.type)) {\n return;\n }\n const graphics = mark.getGraphics();\n if (!graphics || !graphics.length) {\n return;\n }\n graphics.forEach((el: IMarkGraphic) => {\n const elementKey = mark.id + '_' + el.context.key;\n el.removeState(IN_BRUSH_STATE);\n el.removeState(OUT_BRUSH_STATE);\n stateName && el.addState(stateName, true);\n elementMap[elementKey] = el;\n });\n });\n });\n }\n\n protected _initMarkBrushState(componentIndex: number, stateName: string) {\n this._brushComponents.forEach((brush, index) => {\n if (index !== componentIndex) {\n brush.children[0].removeAllChild();\n }\n });\n\n this._inBrushElementsMap = {};\n this._outOfBrushElementsMap = {};\n this._linkedInBrushElementsMap = {};\n this._linkedOutOfBrushElementsMap = {};\n\n this._initItemMap(this._itemMap, this._outOfBrushElementsMap, stateName);\n this._initItemMap(this._linkedItemMap, this._linkedOutOfBrushElementsMap, stateName);\n }\n /** end: set mark state ***/\n\n /** start: control data zoom ***/\n private _stateClamp(state: number) {\n return Math.min(Math.max(0, state), 1);\n }\n\n private _setAxisAndDataZoom(operateMask: IPolygon, region: IRegion) {\n this._zoomRecord = [];\n if (this._spec.zoomAfterBrush) {\n // step1: 拿到brush bounds, 计算 continuous axis/dataZoom新范围\n const operateMaskBounds = operateMask.AABBBounds;\n\n // step2:\n // 如果轴关联了dataZoom,则通过dataZoom更新轴\n // 如果轴没有关联dataZoom,则直接更改轴rangeFactor\n this._regionAxisMap['region_' + region.id]?.forEach(axis => {\n const isHorizontal = axis.layoutOrient === 'bottom' || axis.layoutOrient === 'top';\n const axisRangeExpand = this._spec.axisRangeExpand ?? 0;\n const { x1, x2, y1, y2 } = operateMaskBounds;\n const regionStartAttr = isHorizontal ? 'x' : 'y';\n const boundsStart = isHorizontal ? x1 : y1;\n const boundsEnd = isHorizontal ? x2 : y2;\n\n if (this._axisDataZoomMap[axis.id]) {\n const dataZoom = this._axisDataZoomMap[axis.id];\n const releatedAxis = dataZoom.relatedAxisComponent as AxisComponent;\n const startValue = releatedAxis\n .getScale()\n .invert(boundsStart - region.getLayoutStartPoint()[regionStartAttr]);\n const endValue = releatedAxis.getScale().invert(boundsEnd - region.getLayoutStartPoint()[regionStartAttr]);\n const startPercent = dataZoom.dataToStatePoint(startValue);\n const endPercent = dataZoom.dataToStatePoint(endValue);\n const newStartPercent = this._stateClamp(startPercent - axisRangeExpand);\n const newEndPercent = this._stateClamp(endPercent + axisRangeExpand);\n dataZoom.setStartAndEnd(Math.min(newStartPercent, newEndPercent), Math.max(newStartPercent, newEndPercent), [\n 'percent',\n 'percent'\n ]);\n\n this._zoomRecord.push({\n operateComponent: dataZoom,\n start: newStartPercent,\n end: newEndPercent,\n startValue: dataZoom.statePointToData(newStartPercent),\n endValue: dataZoom.statePointToData(newEndPercent)\n });\n } else {\n const range = axis.getScale().range();\n const rangeFactor = axis.scaleRangeFactor() ?? [0, 1];\n\n // 判断轴是否为反向轴(last(range) < range[0]),即从右到左, 或从下到上\n // 如果是反向轴, 计算start和end时, 也要保持 start < end\n const isAxisReverse = last(range) < range[0];\n const startPosTemp = boundsStart - region.getLayoutStartPoint()[regionStartAttr];\n const endPosTemp = boundsEnd - region.getLayoutStartPoint()[regionStartAttr];\n const endPos = isAxisReverse ? Math.min(startPosTemp, endPosTemp) : Math.max(startPosTemp, endPosTemp);\n const startPos = isAxisReverse ? Math.max(startPosTemp, endPosTemp) : Math.min(startPosTemp, endPosTemp);\n\n const start =\n ((startPos - range[0]) / (last(range) - range[0])) * (rangeFactor[1] - rangeFactor[0]) + rangeFactor[0];\n const end =\n ((endPos - range[0]) / (last(range) - range[0])) * (rangeFactor[1] - rangeFactor[0]) + rangeFactor[0];\n const newStart = this._stateClamp(start - axisRangeExpand);\n const newEnd = this._stateClamp(end + axisRangeExpand);\n axis.scaleRangeFactor([newStart, newEnd]);\n axis.effect.scaleUpdate();\n\n this._zoomRecord.push({\n operateComponent: axis,\n start: newStart,\n end: newEnd,\n startValue: axis.getScale().invert(startPos),\n endValue: axis.getScale().invert(endPos)\n });\n }\n });\n }\n }\n\n /** end: control data zoom ***/\n\n protected _getNeedClearVRenderComponents(): IGraphic[] {\n return this._brushComponents as unknown as IGroup[];\n }\n\n clearGraphic(): void {\n if (this._brushComponents) {\n this._brushComponents.forEach(brush => {\n (brush as any)._container.incrementalClearChild();\n });\n }\n }\n\n clear(): void {\n if (this._brushComponents) {\n const container = this.getContainer();\n this._brushComponents.forEach((brush, index) => {\n // 清空元素状态\n this._initMarkBrushState(index, '');\n this._needDisablePickable = false;\n\n brush.removeAllChild();\n brush.releaseBrushEvents();\n\n if (container) {\n container.removeChild(brush as unknown as INode);\n }\n });\n this._brushComponents = null;\n }\n }\n}\n\nexport const registerBrush = () => {\n Factory.registerComponent(Brush.type, Brush);\n};\n"]}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import type { IBoundsLike } from '@visactor/vutils';
|
|
2
2
|
import { Tag } from '@visactor/vrender-components';
|
|
3
3
|
import type { IGraphic } from '@visactor/vrender-core';
|
|
4
|
-
import type { IModelRenderOption } from '../../model/interface';
|
|
5
|
-
import type { IRegion } from '../../region/interface';
|
|
6
4
|
import { BaseComponent } from '../base/base-component';
|
|
7
5
|
import type { IPoint, StringOrNumber, TooltipActiveType, TooltipData } from '../../typings';
|
|
8
6
|
import type { IComponentOption } from '../interface';
|
|
@@ -67,9 +65,7 @@ export declare abstract class BaseCrossHair<T extends ICartesianCrosshairSpec |
|
|
|
67
65
|
private _handleTooltipShow;
|
|
68
66
|
private _handleTooltipHideOrRelease;
|
|
69
67
|
protected _getAxisInfoByField<T = IAxis>(field: 'x' | 'y' | 'category' | 'value'): IAxisInfo<T>;
|
|
70
|
-
changeRegions(regions: IRegion[]): void;
|
|
71
68
|
onLayoutEnd(): void;
|
|
72
|
-
onRender(ctx: IModelRenderOption): void;
|
|
73
69
|
protected _releaseEvent(): void;
|
|
74
70
|
protected _parseFieldInfo(): void;
|
|
75
71
|
protected _parseCrosshairSpec(): void;
|
|
@@ -230,13 +230,11 @@ class BaseCrossHair extends base_component_1.BaseComponent {
|
|
|
230
230
|
});
|
|
231
231
|
})), map;
|
|
232
232
|
}
|
|
233
|
-
changeRegions(regions) {}
|
|
234
233
|
onLayoutEnd() {
|
|
235
234
|
const region = this._regions[0];
|
|
236
235
|
this.setLayoutRect(region.getLayoutRect()), this.setLayoutStartPosition(region.getLayoutStartPoint()),
|
|
237
236
|
super.onLayoutEnd();
|
|
238
237
|
}
|
|
239
|
-
onRender(ctx) {}
|
|
240
238
|
_releaseEvent() {
|
|
241
239
|
this.clearOutEvent();
|
|
242
240
|
const triggerConfig = this._getTriggerEvent();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/component/crosshair/base.ts"],"names":[],"mappings":"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","file":"base.js","sourcesContent":["import type { IBoundsLike } from '@visactor/vutils';\nimport { Tag } from '@visactor/vrender-components';\nimport type { IGraphic, INode } from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { throttle, PointService, isEqual, isArray, isNumber, get, isBoolean, isObject, array } from '@visactor/vutils';\nimport { RenderModeEnum } from '../../typings/spec/common';\nimport type { BaseEventParams, EventType } from '../../event/interface';\nimport type { IModelLayoutOption, IModelRenderOption } from '../../model/interface';\nimport type { IRegion } from '../../region/interface';\nimport { BaseComponent } from '../base/base-component';\nimport type { IPoint, Maybe, StringOrNumber, TooltipActiveType, TooltipData } from '../../typings';\nimport { outOfBounds } from '../../util/math';\nimport type { IComponentOption } from '../interface';\nimport type {\n ICrossHair,\n CrossHairTrigger,\n ICartesianCrosshairSpec,\n IPolarCrosshairSpec,\n ICrosshairCategoryFieldSpec,\n IAxisInfo,\n CrossHairStateByField\n} from './interface';\nimport { ChartEvent, Event_Bubble_Level, Event_Source_Type } from '../../constant/event';\nimport { LayoutZIndex } from '../../constant/layout';\nimport { getDefaultCrosshairTriggerEventByMode } from './config';\nimport type { IPolarAxis } from '../axis/polar/interface';\nimport type { IAxis } from '../axis/interface';\nimport type { TooltipEventParams } from '../tooltip/interface/event';\nimport { limitTagInBounds } from './utils/common';\nimport { isDiscrete } from '@visactor/vscale';\n\nconst ORIENT_MAP = {\n x: ['top', 'bottom'],\n y: ['left', 'right'],\n category: ['angle'],\n value: ['radius']\n};\n\nexport abstract class BaseCrossHair<T extends ICartesianCrosshairSpec | IPolarCrosshairSpec>\n extends BaseComponent<T>\n implements ICrossHair\n{\n static specKey = 'crosshair';\n specKey = 'crosshair';\n\n layoutType: 'none' = 'none';\n gridZIndex: number = LayoutZIndex.CrossHair_Grid;\n labelZIndex: number = LayoutZIndex.CrossHair;\n trigger: CrossHairTrigger = 'hover';\n enable: boolean;\n showDefault: boolean;\n triggerOff: 'none' | number; // 为none则不消失\n\n protected _stateByField!: CrossHairStateByField;\n\n private _timer?: number;\n private _clickLock?: boolean;\n private _hasActive?: boolean;\n private _onlyLockClick?: boolean;\n\n get enableRemain(): boolean {\n return this.triggerOff === 'none';\n }\n\n private _limitBounds: Maybe<IBoundsLike>;\n\n constructor(spec: T, options: IComponentOption) {\n super(spec, options);\n this.enable = true;\n this.showDefault = true;\n }\n\n protected abstract _layoutCrosshair(\n x: number,\n y: number,\n tooltipData?: TooltipData,\n activeType?: TooltipActiveType\n ): void;\n\n abstract setAxisValue(v: StringOrNumber, axis: IAxis): void;\n abstract layoutByValue(enableRemain?: boolean): void;\n protected abstract _getDatumAtPoint(axis: IAxis, point: IPoint): number | string;\n\n /**\n * 根据位置获取所有轴上的value\n * @param axisMap\n * @param p\n * @returns\n */\n protected _setAllAxisValues(axisMap: IAxisInfo<IAxis>, point: IPoint, field: string): boolean {\n // 首先不能存在两个离散轴\n let discrete = false;\n axisMap.forEach(item => {\n if (isDiscrete(item.axis.getScale().type)) {\n if (!discrete) {\n discrete = true;\n } else {\n this.enable = false;\n }\n }\n });\n if (!this.enable) {\n return false;\n }\n const { currentValue } = this._stateByField[field];\n // 获取所有的value\n axisMap.forEach((item, id) => {\n const axis = item.axis;\n currentValue.set(id, {\n datum: this._getDatumAtPoint(axis, point),\n axis\n });\n });\n return true;\n }\n /**\n * clear axis value of crosshair\n */\n clearAxisValue() {\n Object.keys(this._stateByField).forEach(field => {\n this._stateByField[field].currentValue.clear();\n });\n }\n\n hideCrosshair() {\n this.clearAxisValue();\n this.hide();\n }\n\n showCrosshair(dimInfo: { axis: IAxis; value: string | number }[]) {\n if (!dimInfo || !dimInfo.length) {\n return;\n }\n\n this.showDefault = false;\n this.clearAxisValue();\n dimInfo.forEach((d: { axis: IAxis; value: string | number }) => {\n const { axis, value } = d;\n this.setAxisValue(value, axis);\n });\n this.layoutByValue(false);\n }\n\n protected _getLimitBounds() {\n if (!this._limitBounds) {\n const { width, height } = this._option.globalInstance.getChart()?.getViewRect() ?? {\n width: 0,\n height: 0\n };\n this._limitBounds = {\n x1: 0,\n y1: 0,\n x2: width,\n y2: height\n };\n }\n return this._limitBounds;\n }\n\n protected _showDefaultCrosshairBySpec() {\n Object.keys(this._stateByField).forEach(field => {\n const fieldSpec = (this._spec as any)[field];\n\n if (fieldSpec && fieldSpec.visible && fieldSpec.defaultSelect) {\n const { axisIndex = 0, datum } = fieldSpec.defaultSelect;\n const axis = this._option.getComponentsByKey('axes').find(c => c.getSpecIndex() === axisIndex) as IAxis;\n\n if (axis) {\n this._stateByField[field].currentValue.clear();\n this._stateByField[field].currentValue.set(axisIndex, { axis, datum });\n }\n }\n });\n }\n\n protected _updateVisibleCrosshair() {\n let hasVisible = false;\n\n Object.keys(this._stateByField).forEach(field => {\n const fieldSpec = (this._spec as any)[field];\n\n if (fieldSpec && fieldSpec.visible && this._stateByField[field].currentValue.size) {\n hasVisible = true;\n } else {\n this._hideByField(field);\n }\n });\n\n if (hasVisible) {\n this.layoutByValue(false);\n }\n }\n\n protected _showDefaultCrosshair() {\n if (this.showDefault) {\n this._showDefaultCrosshairBySpec();\n this.layoutByValue(false);\n } else {\n this._updateVisibleCrosshair();\n }\n }\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n this._parseCrosshairSpec();\n }\n\n created() {\n super.created();\n // event\n this._initEvent();\n }\n\n /**\n * updateSpec\n */\n _compareSpec(spec: T, prevSpec: T) {\n const result = super._compareSpec(spec, prevSpec);\n if (!result.reMake && !isEqual(prevSpec, spec)) {\n result.reRender = true;\n result.reMake = true;\n }\n return result;\n }\n\n protected _initEvent() {\n if (this._option.disableTriggerEvent) {\n return;\n }\n\n if (this._spec.followTooltip) {\n this._registerTooltipEvent();\n } else {\n const triggerConfig = this._getTriggerEvent();\n\n if (triggerConfig) {\n triggerConfig.forEach(cfg => {\n this._registerEvent(cfg.in, false, cfg.click);\n cfg.out && this._registerEvent(cfg.out, true);\n });\n }\n }\n }\n\n private _registerEvent(eventName: EventType | EventType[], isOut?: boolean, click?: boolean) {\n const handler = isOut ? this._handleOutEvent : click ? this._handleClickInEvent : this._handleHoverInEvent;\n const cfg = isOut ? { level: Event_Bubble_Level.chart } : { source: Event_Source_Type.chart };\n\n if (isArray(eventName)) {\n (eventName as EventType[]).forEach(evt => {\n this.event.on(evt, cfg, handler);\n });\n } else {\n this.event.on(eventName as EventType, cfg, handler);\n }\n }\n\n private _eventOff(eventName: EventType | EventType[], isOut?: boolean, click?: boolean) {\n const handler = isOut ? this._handleOutEvent : click ? this._handleClickInEvent : this._handleHoverInEvent;\n if (isArray(eventName)) {\n (eventName as EventType[]).forEach(evt => {\n this.event.off(evt, handler);\n });\n } else {\n this.event.off(eventName as EventType, handler);\n }\n }\n\n updateLayoutAttribute() {\n this._limitBounds = null;\n this._showDefaultCrosshair();\n }\n\n protected calculateTriggerPoint(params: any) {\n const { event } = params as BaseEventParams;\n // compute layer offset\n const layer = this._option.getCompiler().getStage().getLayer(undefined);\n const point = { x: event.viewX, y: event.viewY };\n layer.globalTransMatrix.transformPoint({ x: event.viewX, y: event.viewY }, point);\n\n return {\n x: point.x - this.getLayoutStartPoint().x,\n y: point.y - this.getLayoutStartPoint().y\n };\n }\n\n private _handleIn = (params: any) => {\n if (!this._option) {\n return;\n }\n\n const { x, y } = this.calculateTriggerPoint(params);\n this.showDefault = false;\n this._layoutCrosshair(x, y);\n\n const components = this._getNeedClearVRenderComponents();\n this._hasActive = components.some(comp => comp && comp.attribute.visible !== false);\n };\n\n private _handleClickInEvent = (params: any) => {\n if (this._hasActive && this._spec.lockAfterClick && !this._clickLock) {\n this._clickLock = true;\n return;\n } else if (this._clickLock) {\n this._clickLock = false;\n this._handleOutEvent();\n return;\n }\n\n if (this._onlyLockClick) {\n return;\n }\n\n this._handleIn(params);\n\n if (isNumber(this.triggerOff)) {\n if (this._timer) {\n clearTimeout(this._timer);\n }\n\n this._timer = setTimeout(() => {\n this._handleOutEvent();\n }, this.triggerOff as number) as unknown as number;\n }\n };\n\n private _handleHoverInEvent = throttle((params: any) => {\n if (this._clickLock) {\n return;\n }\n\n this._handleIn(params);\n }, 10);\n\n private _handleOutEvent = () => {\n if (this.enableRemain || this._clickLock || !this._hasActive) {\n return;\n }\n this.clearOutEvent();\n\n this.hide();\n };\n\n private _getTriggerEvent() {\n const { mode = RenderModeEnum['desktop-browser'] } = this._option;\n const triggerConfig = getDefaultCrosshairTriggerEventByMode(mode);\n if (triggerConfig) {\n const trigger: string[] = array(this.trigger || 'hover');\n const outTrigger = (inTrigger: CrossHairTrigger) => {\n if (inTrigger === 'click') {\n return this.triggerOff === 'none' ? null : triggerConfig.clickOut;\n }\n return triggerConfig.hoverOut;\n };\n\n if (this._spec.lockAfterClick && !trigger.includes('click')) {\n trigger.push('click');\n this._onlyLockClick = true;\n } else {\n this._onlyLockClick = false;\n }\n // 同时配置了多个触发事件\n const res: { in: EventType | EventType[]; out: EventType | EventType[]; click: boolean }[] = [];\n (trigger as ['click', 'hover']).forEach(item => {\n res.push({\n click: item === 'click',\n in: triggerConfig[item],\n out: outTrigger(item)\n });\n });\n return res;\n }\n return null;\n }\n\n private _registerTooltipEvent() {\n this.event.on(ChartEvent.tooltipHide, { source: Event_Source_Type.chart }, this._handleTooltipHideOrRelease);\n this.event.on(ChartEvent.tooltipShow, { source: Event_Source_Type.chart }, this._handleTooltipShow);\n this.event.on(ChartEvent.tooltipRelease, { source: Event_Source_Type.chart }, this._handleTooltipHideOrRelease);\n }\n\n private _handleTooltipShow = (params: TooltipEventParams) => {\n const tooltipData = params.tooltipData;\n\n if (params.isEmptyTooltip || !tooltipData || !tooltipData.length) {\n this._handleTooltipHideOrRelease();\n return;\n }\n\n if (isObject(this._spec.followTooltip)) {\n if (this._spec.followTooltip[params.activeType] === false) {\n this._handleTooltipHideOrRelease();\n return;\n }\n }\n\n const { x, y } = this.calculateTriggerPoint(params);\n this.showDefault = false;\n this._layoutCrosshair(x, y, tooltipData, params.activeType);\n\n const components = this._getNeedClearVRenderComponents();\n this._hasActive = components.some(comp => comp && comp.attribute.visible !== false);\n };\n\n private _handleTooltipHideOrRelease = () => {\n this.clearOutEvent();\n\n this.hide();\n };\n\n protected _getAxisInfoByField<T = IAxis>(field: 'x' | 'y' | 'category' | 'value') {\n // 加判空防止某些特殊时刻(如 updateSpec 时)鼠标滑过图表导致报错\n const axesComponents = this._option.getComponentsByKey?.('axes') as IAxis[];\n if (!axesComponents?.length) {\n return null;\n }\n let bindingAxesIndex: number[] = get(this._spec, `${field}Field.bindingAxesIndex`);\n if (!bindingAxesIndex) {\n bindingAxesIndex = [];\n axesComponents.forEach((item, index) => {\n if (ORIENT_MAP[field].includes(item.getOrient())) {\n bindingAxesIndex.push(index);\n }\n });\n }\n if (!bindingAxesIndex.length) {\n return null;\n }\n\n const map: IAxisInfo<T> = new Map();\n let x1 = Infinity;\n let y1 = Infinity;\n let x2 = -Infinity;\n let y2 = -Infinity;\n const { x: sx, y: sy } = this.getLayoutStartPoint();\n bindingAxesIndex.forEach(idx => {\n (x1 = Infinity), (y1 = Infinity), (x2 = -Infinity), (y2 = -Infinity);\n const axis = axesComponents.find(axis => axis.getSpecIndex() === idx);\n if (!axis) {\n return;\n }\n const regions = axis.getRegions();\n regions.forEach(r => {\n const { x: regionStartX, y: regionStartY } = r.getLayoutStartPoint();\n x1 = Math.min(x1, regionStartX - sx);\n y1 = Math.min(y1, regionStartY - sy);\n x2 = Math.max(x2, regionStartX + r.getLayoutRect().width - sx);\n y2 = Math.max(y2, regionStartY + r.getLayoutRect().height - sy);\n });\n map.set(idx, { x1, y1, x2, y2, axis: axis as unknown as T });\n });\n\n return map;\n }\n\n changeRegions(regions: IRegion[]): void {\n // do nothing\n }\n\n onLayoutEnd(): void {\n const region = this._regions[0];\n this.setLayoutRect(region.getLayoutRect());\n this.setLayoutStartPosition(region.getLayoutStartPoint());\n\n super.onLayoutEnd();\n }\n\n onRender(ctx: IModelRenderOption): void {\n // do nothing\n }\n\n protected _releaseEvent(): void {\n this.clearOutEvent();\n\n const triggerConfig = this._getTriggerEvent();\n if (triggerConfig) {\n triggerConfig.forEach(cfg => {\n this._eventOff(cfg.in, false, cfg.click);\n cfg.out && this._eventOff(cfg.out, true);\n });\n }\n }\n\n protected _parseFieldInfo() {\n Object.keys(this._stateByField).forEach(field => {\n const fieldSpec = (this._spec as any)[field];\n const { crosshairComp } = this._stateByField[field];\n\n if (fieldSpec && fieldSpec.visible) {\n this._stateByField[field].attributes = this._parseField(fieldSpec, field);\n\n if (crosshairComp) {\n const { style, type } = this._stateByField[field].attributes;\n const styleKey = type === 'rect' ? 'rectStyle' : 'lineStyle';\n\n crosshairComp.setAttributes({\n [styleKey]: style\n });\n }\n } else if (crosshairComp && crosshairComp.parent) {\n crosshairComp.parent.removeChild(crosshairComp);\n }\n });\n }\n\n protected _parseCrosshairSpec() {\n this._parseFieldInfo();\n\n const { trigger, triggerOff, labelZIndex, gridZIndex } = this._spec;\n if (trigger) {\n this.trigger = trigger;\n }\n if (triggerOff === 'none' || (isNumber(triggerOff) && triggerOff > 0)) {\n this.triggerOff = triggerOff;\n }\n if (labelZIndex !== undefined) {\n this.labelZIndex = labelZIndex;\n }\n if (gridZIndex !== undefined) {\n this.gridZIndex = gridZIndex;\n }\n }\n\n protected _parseField(field: ICrosshairCategoryFieldSpec, fieldName: string) {\n const hair = {} as any;\n const { line = {}, label = {}, visible } = field;\n\n hair.visible = visible;\n hair.type = line.type || 'line';\n\n if (line.visible === false) {\n hair.style = { visible: false };\n } else {\n const style = line.style || {};\n const { stroke, fill, lineWidth } = style as any;\n const { strokeOpacity, fillOpacity, opacity, ...restStyle } = style as any;\n const isLineType = hair.type === 'line';\n let finalOpacity = isLineType ? strokeOpacity : fillOpacity;\n if (isNumber(opacity)) {\n // FIXME: 之前的兼容逻辑,去掉可能会影响现有 crosshair 的展示效果\n finalOpacity = (finalOpacity ?? 1) * opacity;\n }\n hair.style = {\n opacity: finalOpacity,\n pickable: false,\n visible: true,\n ...restStyle\n };\n\n if (isLineType) {\n hair.style.stroke = stroke || fill;\n hair.style.lineWidth = get(line, 'width', lineWidth || 2);\n } else {\n hair.style.fill = fill || stroke;\n if (field?.line?.style?.stroke) {\n hair.style.stroke = field.line.style.stroke;\n }\n const rectSize = get(line, 'width');\n if (typeof rectSize === 'string') {\n const percent = parseInt(rectSize.substring(0, rectSize.length - 1), 10) / 100;\n hair.style.sizePercent = percent;\n } else if (typeof rectSize === 'number' || typeof rectSize === 'function') {\n hair.style.size = rectSize;\n }\n }\n }\n\n if (!!label.visible) {\n const labelBackground = label.labelBackground || {};\n const labelStyle = label.style || {};\n const {\n fill: rectFill = 'rgba(47, 59, 82, 0.9)',\n stroke: rectStroke,\n outerBorder,\n ...rectStyle\n } = labelBackground.style || {};\n hair.label = {\n visible: true,\n formatMethod: label.formatMethod,\n formatter: label.formatter,\n minWidth: labelBackground.minWidth,\n maxWidth: labelBackground.maxWidth,\n padding: labelBackground.padding,\n textStyle: {\n fontSize: 14,\n pickable: false,\n ...labelStyle,\n fill: labelStyle.fill || '#fff',\n stroke: get(labelStyle, 'stroke')\n },\n panel: (isBoolean(labelBackground.visible) ? labelBackground.visible : !!labelBackground)\n ? {\n visible: true,\n pickable: false,\n fill: rectFill,\n stroke: rectStroke,\n // Note: 通过这个配置可以保证 label 和 轴 label 对齐\n outerBorder: {\n stroke: rectFill,\n distance: 0,\n lineWidth: 3,\n ...outerBorder\n },\n ...rectStyle\n }\n : { visible: false },\n zIndex: this.labelZIndex,\n childrenPickable: false,\n pickable: false\n };\n } else {\n hair.label = { visible: false };\n }\n\n return hair;\n }\n\n protected _filterAxisByPoint<T>(axisMap: IAxisInfo<T>, relativeX: number, relativeY: number) {\n axisMap &&\n axisMap.forEach(item => {\n const axis = item.axis as unknown as IAxis | IPolarAxis;\n if (outOfBounds(item, relativeX, relativeY)) {\n axisMap.delete(axis.getSpecIndex());\n }\n if ((axis as IPolarAxis).type.startsWith('polarAxis')) {\n // 极坐标下需要判断是否在半径内\n const center = (axis as IPolarAxis).getCenter();\n const innerRadius = (axis as IPolarAxis).getInnerRadius();\n const outerRadius = (axis as IPolarAxis).getOuterRadius();\n const distance = PointService.distancePP({ x: relativeX, y: relativeY }, center);\n if (distance > outerRadius || distance < innerRadius) {\n axisMap.delete((axis as IPolarAxis).getSpecIndex());\n }\n }\n });\n return axisMap;\n }\n\n protected _updateCrosshairLabel(label: Tag, labelAttrs: any, callback: (label: Tag) => void) {\n // 文本\n const container = this.getContainer();\n if (label) {\n label.setAttributes(labelAttrs);\n } else {\n label = new Tag(labelAttrs);\n container?.add(label as unknown as INode);\n callback(label);\n }\n limitTagInBounds(label, this._getLimitBounds());\n }\n\n protected clearOutEvent() {\n if (this._timer) {\n clearTimeout(this._timer);\n this._timer = null;\n }\n if (this._clickLock) {\n this._clickLock = null;\n }\n\n if (this._hasActive) {\n this._hasActive = null;\n }\n }\n\n protected _hideByField(field: string) {\n const { crosshairComp, labelsComp } = this._stateByField[field];\n\n crosshairComp && crosshairComp.hideAll();\n\n if (labelsComp) {\n Object.keys(labelsComp).forEach(key => {\n labelsComp[key] && labelsComp[key].hideAll();\n });\n }\n }\n\n hide() {\n // 隐藏\n Object.keys(this._stateByField).forEach(field => {\n this._hideByField(field);\n });\n }\n\n protected _getNeedClearVRenderComponents(): IGraphic[] {\n return Object.keys(this._stateByField).reduce((res, field) => {\n const { crosshairComp, labelsComp } = this._stateByField[field];\n\n if (crosshairComp) {\n res.push(crosshairComp);\n }\n\n if (labelsComp) {\n Object.keys(labelsComp).forEach(key => {\n labelsComp[key] && res.push(labelsComp[key]);\n });\n }\n return res;\n }, []);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/component/crosshair/base.ts"],"names":[],"mappings":"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","file":"base.js","sourcesContent":["import type { IBoundsLike } from '@visactor/vutils';\nimport { Tag } from '@visactor/vrender-components';\nimport type { IGraphic, INode } from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { throttle, PointService, isEqual, isArray, isNumber, get, isBoolean, isObject, array } from '@visactor/vutils';\nimport { RenderModeEnum } from '../../typings/spec/common';\nimport type { BaseEventParams, EventType } from '../../event/interface';\nimport type { IModelLayoutOption, IModelRenderOption } from '../../model/interface';\nimport type { IRegion } from '../../region/interface';\nimport { BaseComponent } from '../base/base-component';\nimport type { IPoint, Maybe, StringOrNumber, TooltipActiveType, TooltipData } from '../../typings';\nimport { outOfBounds } from '../../util/math';\nimport type { IComponentOption } from '../interface';\nimport type {\n ICrossHair,\n CrossHairTrigger,\n ICartesianCrosshairSpec,\n IPolarCrosshairSpec,\n ICrosshairCategoryFieldSpec,\n IAxisInfo,\n CrossHairStateByField\n} from './interface';\nimport { ChartEvent, Event_Bubble_Level, Event_Source_Type } from '../../constant/event';\nimport { LayoutZIndex } from '../../constant/layout';\nimport { getDefaultCrosshairTriggerEventByMode } from './config';\nimport type { IPolarAxis } from '../axis/polar/interface';\nimport type { IAxis } from '../axis/interface';\nimport type { TooltipEventParams } from '../tooltip/interface/event';\nimport { limitTagInBounds } from './utils/common';\nimport { isDiscrete } from '@visactor/vscale';\n\nconst ORIENT_MAP = {\n x: ['top', 'bottom'],\n y: ['left', 'right'],\n category: ['angle'],\n value: ['radius']\n};\n\nexport abstract class BaseCrossHair<T extends ICartesianCrosshairSpec | IPolarCrosshairSpec>\n extends BaseComponent<T>\n implements ICrossHair\n{\n static specKey = 'crosshair';\n specKey = 'crosshair';\n\n layoutType: 'none' = 'none';\n gridZIndex: number = LayoutZIndex.CrossHair_Grid;\n labelZIndex: number = LayoutZIndex.CrossHair;\n trigger: CrossHairTrigger = 'hover';\n enable: boolean;\n showDefault: boolean;\n triggerOff: 'none' | number; // 为none则不消失\n\n protected _stateByField!: CrossHairStateByField;\n\n private _timer?: number;\n private _clickLock?: boolean;\n private _hasActive?: boolean;\n private _onlyLockClick?: boolean;\n\n get enableRemain(): boolean {\n return this.triggerOff === 'none';\n }\n\n private _limitBounds: Maybe<IBoundsLike>;\n\n constructor(spec: T, options: IComponentOption) {\n super(spec, options);\n this.enable = true;\n this.showDefault = true;\n }\n\n protected abstract _layoutCrosshair(\n x: number,\n y: number,\n tooltipData?: TooltipData,\n activeType?: TooltipActiveType\n ): void;\n\n abstract setAxisValue(v: StringOrNumber, axis: IAxis): void;\n abstract layoutByValue(enableRemain?: boolean): void;\n protected abstract _getDatumAtPoint(axis: IAxis, point: IPoint): number | string;\n\n /**\n * 根据位置获取所有轴上的value\n * @param axisMap\n * @param p\n * @returns\n */\n protected _setAllAxisValues(axisMap: IAxisInfo<IAxis>, point: IPoint, field: string): boolean {\n // 首先不能存在两个离散轴\n let discrete = false;\n axisMap.forEach(item => {\n if (isDiscrete(item.axis.getScale().type)) {\n if (!discrete) {\n discrete = true;\n } else {\n this.enable = false;\n }\n }\n });\n if (!this.enable) {\n return false;\n }\n const { currentValue } = this._stateByField[field];\n // 获取所有的value\n axisMap.forEach((item, id) => {\n const axis = item.axis;\n currentValue.set(id, {\n datum: this._getDatumAtPoint(axis, point),\n axis\n });\n });\n return true;\n }\n /**\n * clear axis value of crosshair\n */\n clearAxisValue() {\n Object.keys(this._stateByField).forEach(field => {\n this._stateByField[field].currentValue.clear();\n });\n }\n\n hideCrosshair() {\n this.clearAxisValue();\n this.hide();\n }\n\n showCrosshair(dimInfo: { axis: IAxis; value: string | number }[]) {\n if (!dimInfo || !dimInfo.length) {\n return;\n }\n\n this.showDefault = false;\n this.clearAxisValue();\n dimInfo.forEach((d: { axis: IAxis; value: string | number }) => {\n const { axis, value } = d;\n this.setAxisValue(value, axis);\n });\n this.layoutByValue(false);\n }\n\n protected _getLimitBounds() {\n if (!this._limitBounds) {\n const { width, height } = this._option.globalInstance.getChart()?.getViewRect() ?? {\n width: 0,\n height: 0\n };\n this._limitBounds = {\n x1: 0,\n y1: 0,\n x2: width,\n y2: height\n };\n }\n return this._limitBounds;\n }\n\n protected _showDefaultCrosshairBySpec() {\n Object.keys(this._stateByField).forEach(field => {\n const fieldSpec = (this._spec as any)[field];\n\n if (fieldSpec && fieldSpec.visible && fieldSpec.defaultSelect) {\n const { axisIndex = 0, datum } = fieldSpec.defaultSelect;\n const axis = this._option.getComponentsByKey('axes').find(c => c.getSpecIndex() === axisIndex) as IAxis;\n\n if (axis) {\n this._stateByField[field].currentValue.clear();\n this._stateByField[field].currentValue.set(axisIndex, { axis, datum });\n }\n }\n });\n }\n\n protected _updateVisibleCrosshair() {\n let hasVisible = false;\n\n Object.keys(this._stateByField).forEach(field => {\n const fieldSpec = (this._spec as any)[field];\n\n if (fieldSpec && fieldSpec.visible && this._stateByField[field].currentValue.size) {\n hasVisible = true;\n } else {\n this._hideByField(field);\n }\n });\n\n if (hasVisible) {\n this.layoutByValue(false);\n }\n }\n\n protected _showDefaultCrosshair() {\n if (this.showDefault) {\n this._showDefaultCrosshairBySpec();\n this.layoutByValue(false);\n } else {\n this._updateVisibleCrosshair();\n }\n }\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n this._parseCrosshairSpec();\n }\n\n created() {\n super.created();\n // event\n this._initEvent();\n }\n\n /**\n * updateSpec\n */\n _compareSpec(spec: T, prevSpec: T) {\n const result = super._compareSpec(spec, prevSpec);\n if (!result.reMake && !isEqual(prevSpec, spec)) {\n result.reRender = true;\n result.reMake = true;\n }\n return result;\n }\n\n protected _initEvent() {\n if (this._option.disableTriggerEvent) {\n return;\n }\n\n if (this._spec.followTooltip) {\n this._registerTooltipEvent();\n } else {\n const triggerConfig = this._getTriggerEvent();\n\n if (triggerConfig) {\n triggerConfig.forEach(cfg => {\n this._registerEvent(cfg.in, false, cfg.click);\n cfg.out && this._registerEvent(cfg.out, true);\n });\n }\n }\n }\n\n private _registerEvent(eventName: EventType | EventType[], isOut?: boolean, click?: boolean) {\n const handler = isOut ? this._handleOutEvent : click ? this._handleClickInEvent : this._handleHoverInEvent;\n const cfg = isOut ? { level: Event_Bubble_Level.chart } : { source: Event_Source_Type.chart };\n\n if (isArray(eventName)) {\n (eventName as EventType[]).forEach(evt => {\n this.event.on(evt, cfg, handler);\n });\n } else {\n this.event.on(eventName as EventType, cfg, handler);\n }\n }\n\n private _eventOff(eventName: EventType | EventType[], isOut?: boolean, click?: boolean) {\n const handler = isOut ? this._handleOutEvent : click ? this._handleClickInEvent : this._handleHoverInEvent;\n if (isArray(eventName)) {\n (eventName as EventType[]).forEach(evt => {\n this.event.off(evt, handler);\n });\n } else {\n this.event.off(eventName as EventType, handler);\n }\n }\n\n updateLayoutAttribute() {\n this._limitBounds = null;\n this._showDefaultCrosshair();\n }\n\n protected calculateTriggerPoint(params: any) {\n const { event } = params as BaseEventParams;\n // compute layer offset\n const layer = this._option.getCompiler().getStage().getLayer(undefined);\n const point = { x: event.viewX, y: event.viewY };\n layer.globalTransMatrix.transformPoint({ x: event.viewX, y: event.viewY }, point);\n\n return {\n x: point.x - this.getLayoutStartPoint().x,\n y: point.y - this.getLayoutStartPoint().y\n };\n }\n\n private _handleIn = (params: any) => {\n if (!this._option) {\n return;\n }\n\n const { x, y } = this.calculateTriggerPoint(params);\n this.showDefault = false;\n this._layoutCrosshair(x, y);\n\n const components = this._getNeedClearVRenderComponents();\n this._hasActive = components.some(comp => comp && comp.attribute.visible !== false);\n };\n\n private _handleClickInEvent = (params: any) => {\n if (this._hasActive && this._spec.lockAfterClick && !this._clickLock) {\n this._clickLock = true;\n return;\n } else if (this._clickLock) {\n this._clickLock = false;\n this._handleOutEvent();\n return;\n }\n\n if (this._onlyLockClick) {\n return;\n }\n\n this._handleIn(params);\n\n if (isNumber(this.triggerOff)) {\n if (this._timer) {\n clearTimeout(this._timer);\n }\n\n this._timer = setTimeout(() => {\n this._handleOutEvent();\n }, this.triggerOff as number) as unknown as number;\n }\n };\n\n private _handleHoverInEvent = throttle((params: any) => {\n if (this._clickLock) {\n return;\n }\n\n this._handleIn(params);\n }, 10);\n\n private _handleOutEvent = () => {\n if (this.enableRemain || this._clickLock || !this._hasActive) {\n return;\n }\n this.clearOutEvent();\n\n this.hide();\n };\n\n private _getTriggerEvent() {\n const { mode = RenderModeEnum['desktop-browser'] } = this._option;\n const triggerConfig = getDefaultCrosshairTriggerEventByMode(mode);\n if (triggerConfig) {\n const trigger: string[] = array(this.trigger || 'hover');\n const outTrigger = (inTrigger: CrossHairTrigger) => {\n if (inTrigger === 'click') {\n return this.triggerOff === 'none' ? null : triggerConfig.clickOut;\n }\n return triggerConfig.hoverOut;\n };\n\n if (this._spec.lockAfterClick && !trigger.includes('click')) {\n trigger.push('click');\n this._onlyLockClick = true;\n } else {\n this._onlyLockClick = false;\n }\n // 同时配置了多个触发事件\n const res: { in: EventType | EventType[]; out: EventType | EventType[]; click: boolean }[] = [];\n (trigger as ['click', 'hover']).forEach(item => {\n res.push({\n click: item === 'click',\n in: triggerConfig[item],\n out: outTrigger(item)\n });\n });\n return res;\n }\n return null;\n }\n\n private _registerTooltipEvent() {\n this.event.on(ChartEvent.tooltipHide, { source: Event_Source_Type.chart }, this._handleTooltipHideOrRelease);\n this.event.on(ChartEvent.tooltipShow, { source: Event_Source_Type.chart }, this._handleTooltipShow);\n this.event.on(ChartEvent.tooltipRelease, { source: Event_Source_Type.chart }, this._handleTooltipHideOrRelease);\n }\n\n private _handleTooltipShow = (params: TooltipEventParams) => {\n const tooltipData = params.tooltipData;\n\n if (params.isEmptyTooltip || !tooltipData || !tooltipData.length) {\n this._handleTooltipHideOrRelease();\n return;\n }\n\n if (isObject(this._spec.followTooltip)) {\n if (this._spec.followTooltip[params.activeType] === false) {\n this._handleTooltipHideOrRelease();\n return;\n }\n }\n\n const { x, y } = this.calculateTriggerPoint(params);\n this.showDefault = false;\n this._layoutCrosshair(x, y, tooltipData, params.activeType);\n\n const components = this._getNeedClearVRenderComponents();\n this._hasActive = components.some(comp => comp && comp.attribute.visible !== false);\n };\n\n private _handleTooltipHideOrRelease = () => {\n this.clearOutEvent();\n\n this.hide();\n };\n\n protected _getAxisInfoByField<T = IAxis>(field: 'x' | 'y' | 'category' | 'value') {\n // 加判空防止某些特殊时刻(如 updateSpec 时)鼠标滑过图表导致报错\n const axesComponents = this._option.getComponentsByKey?.('axes') as IAxis[];\n if (!axesComponents?.length) {\n return null;\n }\n let bindingAxesIndex: number[] = get(this._spec, `${field}Field.bindingAxesIndex`);\n if (!bindingAxesIndex) {\n bindingAxesIndex = [];\n axesComponents.forEach((item, index) => {\n if (ORIENT_MAP[field].includes(item.getOrient())) {\n bindingAxesIndex.push(index);\n }\n });\n }\n if (!bindingAxesIndex.length) {\n return null;\n }\n\n const map: IAxisInfo<T> = new Map();\n let x1 = Infinity;\n let y1 = Infinity;\n let x2 = -Infinity;\n let y2 = -Infinity;\n const { x: sx, y: sy } = this.getLayoutStartPoint();\n bindingAxesIndex.forEach(idx => {\n (x1 = Infinity), (y1 = Infinity), (x2 = -Infinity), (y2 = -Infinity);\n const axis = axesComponents.find(axis => axis.getSpecIndex() === idx);\n if (!axis) {\n return;\n }\n const regions = axis.getRegions();\n regions.forEach(r => {\n const { x: regionStartX, y: regionStartY } = r.getLayoutStartPoint();\n x1 = Math.min(x1, regionStartX - sx);\n y1 = Math.min(y1, regionStartY - sy);\n x2 = Math.max(x2, regionStartX + r.getLayoutRect().width - sx);\n y2 = Math.max(y2, regionStartY + r.getLayoutRect().height - sy);\n });\n map.set(idx, { x1, y1, x2, y2, axis: axis as unknown as T });\n });\n\n return map;\n }\n\n onLayoutEnd(): void {\n const region = this._regions[0];\n this.setLayoutRect(region.getLayoutRect());\n this.setLayoutStartPosition(region.getLayoutStartPoint());\n\n super.onLayoutEnd();\n }\n\n protected _releaseEvent(): void {\n this.clearOutEvent();\n\n const triggerConfig = this._getTriggerEvent();\n if (triggerConfig) {\n triggerConfig.forEach(cfg => {\n this._eventOff(cfg.in, false, cfg.click);\n cfg.out && this._eventOff(cfg.out, true);\n });\n }\n }\n\n protected _parseFieldInfo() {\n Object.keys(this._stateByField).forEach(field => {\n const fieldSpec = (this._spec as any)[field];\n const { crosshairComp } = this._stateByField[field];\n\n if (fieldSpec && fieldSpec.visible) {\n this._stateByField[field].attributes = this._parseField(fieldSpec, field);\n\n if (crosshairComp) {\n const { style, type } = this._stateByField[field].attributes;\n const styleKey = type === 'rect' ? 'rectStyle' : 'lineStyle';\n\n crosshairComp.setAttributes({\n [styleKey]: style\n });\n }\n } else if (crosshairComp && crosshairComp.parent) {\n crosshairComp.parent.removeChild(crosshairComp);\n }\n });\n }\n\n protected _parseCrosshairSpec() {\n this._parseFieldInfo();\n\n const { trigger, triggerOff, labelZIndex, gridZIndex } = this._spec;\n if (trigger) {\n this.trigger = trigger;\n }\n if (triggerOff === 'none' || (isNumber(triggerOff) && triggerOff > 0)) {\n this.triggerOff = triggerOff;\n }\n if (labelZIndex !== undefined) {\n this.labelZIndex = labelZIndex;\n }\n if (gridZIndex !== undefined) {\n this.gridZIndex = gridZIndex;\n }\n }\n\n protected _parseField(field: ICrosshairCategoryFieldSpec, fieldName: string) {\n const hair = {} as any;\n const { line = {}, label = {}, visible } = field;\n\n hair.visible = visible;\n hair.type = line.type || 'line';\n\n if (line.visible === false) {\n hair.style = { visible: false };\n } else {\n const style = line.style || {};\n const { stroke, fill, lineWidth } = style as any;\n const { strokeOpacity, fillOpacity, opacity, ...restStyle } = style as any;\n const isLineType = hair.type === 'line';\n let finalOpacity = isLineType ? strokeOpacity : fillOpacity;\n if (isNumber(opacity)) {\n // FIXME: 之前的兼容逻辑,去掉可能会影响现有 crosshair 的展示效果\n finalOpacity = (finalOpacity ?? 1) * opacity;\n }\n hair.style = {\n opacity: finalOpacity,\n pickable: false,\n visible: true,\n ...restStyle\n };\n\n if (isLineType) {\n hair.style.stroke = stroke || fill;\n hair.style.lineWidth = get(line, 'width', lineWidth || 2);\n } else {\n hair.style.fill = fill || stroke;\n if (field?.line?.style?.stroke) {\n hair.style.stroke = field.line.style.stroke;\n }\n const rectSize = get(line, 'width');\n if (typeof rectSize === 'string') {\n const percent = parseInt(rectSize.substring(0, rectSize.length - 1), 10) / 100;\n hair.style.sizePercent = percent;\n } else if (typeof rectSize === 'number' || typeof rectSize === 'function') {\n hair.style.size = rectSize;\n }\n }\n }\n\n if (!!label.visible) {\n const labelBackground = label.labelBackground || {};\n const labelStyle = label.style || {};\n const {\n fill: rectFill = 'rgba(47, 59, 82, 0.9)',\n stroke: rectStroke,\n outerBorder,\n ...rectStyle\n } = labelBackground.style || {};\n hair.label = {\n visible: true,\n formatMethod: label.formatMethod,\n formatter: label.formatter,\n minWidth: labelBackground.minWidth,\n maxWidth: labelBackground.maxWidth,\n padding: labelBackground.padding,\n textStyle: {\n fontSize: 14,\n pickable: false,\n ...labelStyle,\n fill: labelStyle.fill || '#fff',\n stroke: get(labelStyle, 'stroke')\n },\n panel: (isBoolean(labelBackground.visible) ? labelBackground.visible : !!labelBackground)\n ? {\n visible: true,\n pickable: false,\n fill: rectFill,\n stroke: rectStroke,\n // Note: 通过这个配置可以保证 label 和 轴 label 对齐\n outerBorder: {\n stroke: rectFill,\n distance: 0,\n lineWidth: 3,\n ...outerBorder\n },\n ...rectStyle\n }\n : { visible: false },\n zIndex: this.labelZIndex,\n childrenPickable: false,\n pickable: false\n };\n } else {\n hair.label = { visible: false };\n }\n\n return hair;\n }\n\n protected _filterAxisByPoint<T>(axisMap: IAxisInfo<T>, relativeX: number, relativeY: number) {\n axisMap &&\n axisMap.forEach(item => {\n const axis = item.axis as unknown as IAxis | IPolarAxis;\n if (outOfBounds(item, relativeX, relativeY)) {\n axisMap.delete(axis.getSpecIndex());\n }\n if ((axis as IPolarAxis).type.startsWith('polarAxis')) {\n // 极坐标下需要判断是否在半径内\n const center = (axis as IPolarAxis).getCenter();\n const innerRadius = (axis as IPolarAxis).getInnerRadius();\n const outerRadius = (axis as IPolarAxis).getOuterRadius();\n const distance = PointService.distancePP({ x: relativeX, y: relativeY }, center);\n if (distance > outerRadius || distance < innerRadius) {\n axisMap.delete((axis as IPolarAxis).getSpecIndex());\n }\n }\n });\n return axisMap;\n }\n\n protected _updateCrosshairLabel(label: Tag, labelAttrs: any, callback: (label: Tag) => void) {\n // 文本\n const container = this.getContainer();\n if (label) {\n label.setAttributes(labelAttrs);\n } else {\n label = new Tag(labelAttrs);\n container?.add(label as unknown as INode);\n callback(label);\n }\n limitTagInBounds(label, this._getLimitBounds());\n }\n\n protected clearOutEvent() {\n if (this._timer) {\n clearTimeout(this._timer);\n this._timer = null;\n }\n if (this._clickLock) {\n this._clickLock = null;\n }\n\n if (this._hasActive) {\n this._hasActive = null;\n }\n }\n\n protected _hideByField(field: string) {\n const { crosshairComp, labelsComp } = this._stateByField[field];\n\n crosshairComp && crosshairComp.hideAll();\n\n if (labelsComp) {\n Object.keys(labelsComp).forEach(key => {\n labelsComp[key] && labelsComp[key].hideAll();\n });\n }\n }\n\n hide() {\n // 隐藏\n Object.keys(this._stateByField).forEach(field => {\n this._hideByField(field);\n });\n }\n\n protected _getNeedClearVRenderComponents(): IGraphic[] {\n return Object.keys(this._stateByField).reduce((res, field) => {\n const { crosshairComp, labelsComp } = this._stateByField[field];\n\n if (crosshairComp) {\n res.push(crosshairComp);\n }\n\n if (labelsComp) {\n Object.keys(labelsComp).forEach(key => {\n labelsComp[key] && res.push(labelsComp[key]);\n });\n }\n return res;\n }, []);\n }\n}\n"]}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import { BaseComponent } from '../base/base-component';
|
|
2
2
|
import { ComponentTypeEnum } from '../interface/type';
|
|
3
|
-
import type { IRegion } from '../../region/interface';
|
|
4
|
-
import type { IModelRenderOption } from '../../model/interface';
|
|
5
3
|
import type { EnableMarkType, ICustomMarkGroupSpec, ICustomMarkSpec, ILayoutRect } from '../../typings';
|
|
6
|
-
import type { IGraphic } from '@visactor/vrender-core';
|
|
7
4
|
import type { IModelMarkAttributeContext } from '../../compile/mark/interface';
|
|
8
5
|
export declare class CustomMark extends BaseComponent<ICustomMarkSpec<EnableMarkType>> {
|
|
9
6
|
static type: ComponentTypeEnum;
|
|
@@ -28,9 +25,6 @@ export declare class CustomMark extends BaseComponent<ICustomMarkSpec<EnableMark
|
|
|
28
25
|
reSize: boolean;
|
|
29
26
|
reCompile: boolean;
|
|
30
27
|
};
|
|
31
|
-
changeRegions(regions: IRegion[]): void;
|
|
32
|
-
protected _getNeedClearVRenderComponents(): IGraphic[];
|
|
33
|
-
onRender(ctx: IModelRenderOption): void;
|
|
34
28
|
private _getMarkAttributeContext;
|
|
35
29
|
private _getLayoutRect;
|
|
36
30
|
getBoundsInRect(rect: ILayoutRect): {
|
|
@@ -73,11 +73,6 @@ class CustomMark extends base_component_1.BaseComponent {
|
|
|
73
73
|
return (0, vutils_1.isEqual)(prevSpec, spec) || (result.reMake = !0), result.change = !0,
|
|
74
74
|
result.reRender = !0, result;
|
|
75
75
|
}
|
|
76
|
-
changeRegions(regions) {}
|
|
77
|
-
_getNeedClearVRenderComponents() {
|
|
78
|
-
return [];
|
|
79
|
-
}
|
|
80
|
-
onRender(ctx) {}
|
|
81
76
|
_getMarkAttributeContext() {
|
|
82
77
|
return {
|
|
83
78
|
vchart: this._option.globalInstance,
|