@visactor/vchart 2.0.23-alpha.7 → 2.1.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/es5/index.js +3 -3
- package/build/index.es.js +21481 -16992
- package/build/index.js +21483 -16994
- package/build/index.min.js +2 -2
- package/build/tsconfig.tsbuildinfo +1 -1
- package/cjs/animation/index.js +1 -2
- package/cjs/chart/base/base-chart.js +13 -7
- package/cjs/chart/base/base-chart.js.map +1 -1
- package/cjs/chart/radar/radar-transformer.js +4 -4
- package/cjs/chart/radar/radar-transformer.js.map +1 -1
- package/cjs/compile/compiler.d.ts +4 -0
- package/cjs/compile/compiler.js +66 -41
- package/cjs/compile/compiler.js.map +1 -1
- package/cjs/compile/interface/compiler.d.ts +2 -1
- package/cjs/compile/interface/compiler.js.map +1 -1
- package/cjs/compile/stage-app.d.ts +9 -0
- package/cjs/compile/stage-app.js +39 -0
- package/cjs/compile/stage-app.js.map +1 -0
- package/cjs/compile/state-manager.js +2 -1
- package/cjs/component/brush/brush.js +13 -12
- package/cjs/component/brush/brush.js.map +1 -1
- package/cjs/component/util.js +2 -1
- package/cjs/constant/attribute.js +1 -2
- package/cjs/constant/scroll-bar.js +2 -1
- package/cjs/constant/waterfall.js +1 -2
- 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/env/env.js +1 -1
- package/cjs/env/index.js +1 -1
- package/cjs/interaction/interaction.js +11 -8
- package/cjs/interaction/interaction.js.map +1 -1
- package/cjs/interaction/triggers/element-active-by-legend.js +3 -2
- package/cjs/interaction/triggers/element-active-by-legend.js.map +1 -1
- package/cjs/interaction/triggers/element-active.js +5 -3
- package/cjs/interaction/triggers/element-active.js.map +1 -1
- package/cjs/interaction/triggers/element-highlight-by-group.js +3 -2
- package/cjs/interaction/triggers/element-highlight-by-group.js.map +1 -1
- package/cjs/interaction/triggers/element-highlight-by-legend.js +2 -2
- package/cjs/interaction/triggers/element-highlight-by-legend.js.map +1 -1
- package/cjs/interaction/triggers/element-highlight-by-name.js +2 -2
- package/cjs/interaction/triggers/element-highlight-by-name.js.map +1 -1
- package/cjs/interaction/triggers/element-highlight.js +2 -2
- package/cjs/interaction/triggers/element-highlight.js.map +1 -1
- package/cjs/interaction/triggers/element-select.js +3 -3
- package/cjs/interaction/triggers/element-select.js.map +1 -1
- package/cjs/mark/base/base-mark.d.ts +1 -0
- package/cjs/mark/base/base-mark.js +29 -15
- package/cjs/mark/base/base-mark.js.map +1 -1
- package/cjs/mark/utils/glyph.js +3 -2
- package/cjs/mark/utils/glyph.js.map +1 -1
- package/cjs/series/bar/bar.js +1 -1
- package/cjs/series/bar/bar.js.map +1 -1
- package/cjs/series/sankey/sankey.js +32 -24
- package/cjs/series/sankey/sankey.js.map +1 -1
- package/cjs/series/scatter/scatter.d.ts +0 -3
- package/cjs/series/scatter/scatter.js +6 -24
- package/cjs/series/scatter/scatter.js.map +1 -1
- package/cjs/util/graphic-state.d.ts +3 -0
- package/cjs/util/graphic-state.js +25 -0
- package/cjs/util/graphic-state.js.map +1 -0
- package/esm/animation/index.js +1 -2
- package/esm/chart/base/base-chart.js +12 -7
- package/esm/chart/base/base-chart.js.map +1 -1
- package/esm/chart/radar/radar-transformer.js +4 -4
- package/esm/chart/radar/radar-transformer.js.map +1 -1
- package/esm/compile/compiler.d.ts +4 -0
- package/esm/compile/compiler.js +68 -40
- package/esm/compile/compiler.js.map +1 -1
- package/esm/compile/interface/compiler.d.ts +2 -1
- package/esm/compile/interface/compiler.js.map +1 -1
- package/esm/compile/stage-app.d.ts +9 -0
- package/esm/compile/stage-app.js +35 -0
- package/esm/compile/stage-app.js.map +1 -0
- package/esm/compile/state-manager.js +2 -1
- package/esm/component/brush/brush.js +9 -7
- package/esm/component/brush/brush.js.map +1 -1
- package/esm/component/util.js +2 -1
- package/esm/constant/attribute.js +1 -2
- package/esm/constant/scroll-bar.js +2 -1
- package/esm/constant/waterfall.js +1 -2
- 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/env/env.js +1 -1
- package/esm/env/index.js +1 -1
- package/esm/interaction/interaction.js +10 -8
- package/esm/interaction/interaction.js.map +1 -1
- package/esm/interaction/triggers/element-active-by-legend.js +3 -1
- package/esm/interaction/triggers/element-active-by-legend.js.map +1 -1
- package/esm/interaction/triggers/element-active.js +5 -2
- package/esm/interaction/triggers/element-active.js.map +1 -1
- package/esm/interaction/triggers/element-highlight-by-group.js +4 -1
- package/esm/interaction/triggers/element-highlight-by-group.js.map +1 -1
- package/esm/interaction/triggers/element-highlight-by-legend.js +3 -1
- package/esm/interaction/triggers/element-highlight-by-legend.js.map +1 -1
- package/esm/interaction/triggers/element-highlight-by-name.js +3 -1
- package/esm/interaction/triggers/element-highlight-by-name.js.map +1 -1
- package/esm/interaction/triggers/element-highlight.js +3 -1
- package/esm/interaction/triggers/element-highlight.js.map +1 -1
- package/esm/interaction/triggers/element-select.js +4 -2
- package/esm/interaction/triggers/element-select.js.map +1 -1
- package/esm/mark/base/base-mark.d.ts +1 -0
- package/esm/mark/base/base-mark.js +29 -14
- package/esm/mark/base/base-mark.js.map +1 -1
- package/esm/mark/utils/glyph.js +3 -1
- package/esm/mark/utils/glyph.js.map +1 -1
- package/esm/series/bar/bar.js +1 -1
- package/esm/series/bar/bar.js.map +1 -1
- package/esm/series/sankey/sankey.js +25 -21
- package/esm/series/sankey/sankey.js.map +1 -1
- package/esm/series/scatter/scatter.d.ts +0 -3
- package/esm/series/scatter/scatter.js +5 -27
- package/esm/series/scatter/scatter.js.map +1 -1
- package/esm/util/graphic-state.d.ts +3 -0
- package/esm/util/graphic-state.js +17 -0
- package/esm/util/graphic-state.js.map +1 -0
- package/package.json +10 -9
|
@@ -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 } from '@visactor/vutils';\nimport type { 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';\nimport { isReverse, statePointToData } from '../data-zoom/util';\nimport type { CartesianAxis } from '../axis/cartesian';\nimport type { IRenderOption } from '../../compile/interface';\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 protected _operateMask: IPolygon;\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 _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 _shouldEnableInteractive() {\n return (this.getOption().getCompiler().getOption() as IRenderOption).interactive !== false;\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, e);\n });\n\n brush.addEventListener(BrushEvent.drawStart, (e: any) => {\n if (this._spec.disableDimensionHoverWhenBrushing) {\n this._option.globalInstance.disableDimensionHoverEvent(true);\n }\n this._setRegionMarkPickable(region, true);\n this._emitEvent(ChartEvent.brushStart, region, e);\n });\n\n brush.addEventListener(BrushEvent.moveStart, (e: any) => {\n if (this._spec.disableDimensionHoverWhenBrushing) {\n this._option.globalInstance.disableDimensionHoverEvent(true);\n }\n this._setRegionMarkPickable(region, true);\n this._emitEvent(ChartEvent.brushStart, region, e);\n });\n\n brush.addEventListener(BrushEvent.drawing, (e: any) => {\n this._setRegionMarkPickable(region, false);\n this._handleBrushChange(region, e);\n this._emitEvent(ChartEvent.brushChange, region, e);\n });\n\n brush.addEventListener(BrushEvent.moving, (e: any) => {\n this._setRegionMarkPickable(region, false);\n this._handleBrushChange(region, e);\n this._emitEvent(ChartEvent.brushChange, region, e);\n });\n\n brush.addEventListener(BrushEvent.brushClear, (e: any) => {\n if (this._spec.disableDimensionHoverWhenBrushing) {\n this._option.globalInstance.disableDimensionHoverEvent(false);\n }\n this._setRegionMarkPickable(region, true);\n this._initMarkBrushState(componentIndex, '');\n this._emitEvent(ChartEvent.brushClear, region, e);\n });\n\n brush.addEventListener(BrushEvent.drawEnd, (e: any) => {\n if (this._spec.disableDimensionHoverWhenBrushing) {\n this._option.globalInstance.disableDimensionHoverEvent(false);\n }\n this._setRegionMarkPickable(region, true);\n const { operateMask } = e.detail as any;\n const { updateElementsState = true } = this._spec;\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._emitEvent(ChartEvent.brushClear, region, e);\n } else {\n this._spec.onBrushEnd(e);\n this._emitEvent(ChartEvent.brushEnd, region, e);\n }\n } else {\n const inBrushData = this._extendDataInBrush(this._inBrushElementsMap);\n if ((!this._spec.zoomWhenEmpty && inBrushData.length > 0) || !updateElementsState) {\n this._setAxisAndDataZoom(operateMask, region);\n }\n this._emitEvent(ChartEvent.brushEnd, region, e);\n }\n });\n\n brush.addEventListener(BrushEvent.moveEnd, (e: any) => {\n if (this._spec.disableDimensionHoverWhenBrushing) {\n this._option.globalInstance.disableDimensionHoverEvent(false);\n }\n this._setRegionMarkPickable(region, true);\n const { operateMask } = e.detail as any;\n const { updateElementsState = true } = this._spec;\n const inBrushData = this._extendDataInBrush(this._inBrushElementsMap);\n if ((!this._spec.zoomWhenEmpty && inBrushData.length > 0) || updateElementsState) {\n this._setAxisAndDataZoom(operateMask, region);\n }\n this._emitEvent(ChartEvent.brushEnd, region, e);\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 interactive: this._shouldEnableInteractive()\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._operateMask = operateMask;\n const { updateElementsState = true } = this._spec;\n if (updateElementsState) {\n this._reconfigItem(operateMask, region);\n this._reconfigLinkedItem(operateMask, region);\n }\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, e: any) {\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 event: e\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 });\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 });\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\n // 绘制brush的时候, 避免brush与图元交互冲突\n private _setRegionMarkPickable(region: IRegion, pickable: boolean) {\n region\n .getGroupMark()\n .getGraphics()\n .forEach(g => g.setAttribute('childrenPickable', pickable));\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 regionSizeAttr = isHorizontal ? 'width' : 'height';\n const boundsStart = isHorizontal ? x1 : y1;\n const boundsEnd = isHorizontal ? x2 : y2;\n\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\n if (this._axisDataZoomMap[axis.id]) {\n const dataZoom = this._axisDataZoomMap[axis.id];\n\n const newStartPercent = isAxisReverse ? 1 - newStart : newStart;\n const newEndPercent = isAxisReverse ? 1 - newEnd : newEnd;\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: statePointToData(\n newStartPercent,\n dataZoom.stateScale,\n isReverse(dataZoom.relatedAxisComponent as CartesianAxis<any>, dataZoom.isHorizontal)\n ),\n endValue: statePointToData(\n newEndPercent,\n dataZoom.stateScale,\n isReverse(dataZoom.relatedAxisComponent as CartesianAxis<any>, dataZoom.isHorizontal)\n )\n });\n } else {\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\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 clearBrushStateAndMask() {\n this._relativeRegions.forEach((region: IRegion, componentIndex: number) => {\n this._initMarkBrushState(componentIndex, '');\n this._brushComponents[componentIndex].children[0].removeAllChild();\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":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,KAAK,IAAI,cAAc,EAAE,YAAY,IAAI,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAGnG,OAAO,EAAE,KAAK,EAAE,uBAAuB,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAIjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAKtD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAG7C,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,4CAA4C,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGhE,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE/E,MAAM,cAAc,GAAG,SAAS,CAAC;AACjC,MAAM,eAAe,GAAG,YAAY,CAAC;AAErC,MAAM,OAAO,KAAyC,SAAQ,aAAgB;IAA9E;;QACE,eAAU,GAAW,MAAM,CAAC;QAE5B,SAAI,GAAG,iBAAiB,CAAC,KAAK,CAAC;QAC/B,SAAI,GAAW,iBAAiB,CAAC,KAAK,CAAC;QAMvC,YAAO,GAAG,OAAO,CAAC;QAElB,iBAAY,GAAW,YAAY,CAAC,KAAK,CAAC;QAKhC,kBAAa,GAAc,EAAE,CAAC;QAIhC,aAAQ,GAA6C,EAAE,CAAC;QACxD,mBAAc,GAA6C,EAAE,CAAC;QAI5D,wBAAmB,GAAoE,EAAE,CAAC;QAC1F,2BAAsB,GAA2C,EAAE,CAAC;QACpE,8BAAyB,GAAoE,EAAE,CAAC;QAChG,iCAA4B,GAA2C,EAAE,CAAC;QAE5E,gCAA2B,GAAgC,EAAE,CAAC;QAE9D,kBAAa,GAAoB,EAAE,CAAC;QAGpC,mBAAc,GAA4C,EAAE,CAAC;QAE7D,qBAAgB,GAAmC,EAAE,CAAC;QAEtD,gBAAW,GAMb,EAAE,CAAC;IAgtBX,CAAC;IA9sBC,MAAM,CAAC,WAAW,CAAC,SAAc;QAC/B,OAAO,WAAW,CAAa,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAa,EAAE,EAAE;YACnF,OAAO,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC;IAGD,IAAI;QACF,MAAM,eAAe,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3E,MAAM,kBAAkB,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAEjF,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,CAAC,CAAU,EAAE,EAAE;YACjD,CAAC,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,CAAC,CAAQ,EAAE,EAAE;gBACtC,IAAI,CAAC,EAAE;oBACL,CAAC,CAAC,YAAY,CACZ,CAAC,oBAEI,eAAe,GAEpB,cAAc,EACd,cAAc,CAAC,MAAM,CACtB,CAAC;oBACF,CAAC,CAAC,YAAY,CACZ,CAAC,oBAEI,kBAAkB,GAEvB,eAAe,EACf,cAAc,CAAC,MAAM,CACtB,CAAC;iBACH;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IACO,qBAAqB;QAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QACzC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;QAC3C,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAChC,MAAM,QAAQ,GAAY,EAAE,CAAC;YAC7B,CAAC,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,CAAU,EAAE,EAAE;gBACnC,IACE,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;oBACnE,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;oBAC9D,CAAC,CAAC,WAAW,IAAI,CAAC,YAAY,CAAC,EAC/B;oBACA,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC;iBAC3C;gBACD,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;YACjC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAC7B,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,mBAAmB,EAAE,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,KAAK,CAAC,OAAO,EAAE,CAAC;QAEhB,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAES,YAAY;QACpB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;YACrE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;SACtD;aAAM;YACL,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAC5D,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAC1B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAC9B,CAAC;SACH;IACH,CAAC;IAES,iBAAiB;QACzB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE;YACvF,OAAO;SACR;QACD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,wBAAwB,CACxD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,EACnC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CACvC,CAAC;IACJ,CAAC;IAEO,kBAAkB;QAGxB,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;YAC9B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,MAAc,EAAE,EAAE;gBAClD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,MAAM,CAAkB,CAAC,CAAC;YACtF,CAAC,CAAC,CAAC;SACJ;aAAM,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;YACxC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,SAAiB,EAAE,EAAE;gBACxD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAkB,CAAC,CAAC;YAChG,CAAC,CAAC,CAAC;SACJ;aAAM;YACL,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAoB,CAAC;SACjF;QAGD,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAmB,EAAE,EAAE;YACjD,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,UAAU,GAAG,OAAO,CAAC,CAAC,MAAe,EAAE,EAAE;gBAC7C,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC,EAAE;oBAC9C,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACvD;qBAAM;oBACL,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;iBACrD;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,oBAAoB;QACzB,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,UAAU,CAAgB,CAAC,OAAO,CAAC,CAAC,EAAY,EAAE,EAAE;YACnF,IAAI,EAAE,CAAC,oBAAoB,EAAE;gBAC3B,IAAI,CAAC,gBAAgB,CAAE,EAAE,CAAC,oBAAsC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;aAC3E;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAES,SAAS;IAEnB,CAAC;IAED,YAAY,CAAC,IAAO,EAAE,QAAW;QAC/B,IAAI,IAAI,CAAC,gBAAgB,EAAE;YAEzB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,MAAe,EAAE,KAAa,EAAE,EAAE;gBAC/D,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC5C,CAAC,CAAC,CAAC;SACJ;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE;YAC5B,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;YACvB,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;SACtB;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,WAAW;;QACT,KAAK,CAAC,WAAW,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;YACpC,OAAO;SACR;QACD,MAAM,YAAY,GAAG,MAAA,IAAI,CAAC,KAAK,CAAC,OAAO,mCAAI,IAAI,CAAC;QAChD,IAAI,YAAY,EAAE;YAChB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;gBAC1B,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;gBAC3B,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,MAAe,EAAE,KAAa,EAAE,EAAE;oBAC/D,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAC5C,CAAC,CAAC,CAAC;aACJ;iBAAM;gBACL,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,MAAe,EAAE,KAAa,EAAE,EAAE;oBAC/D,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAC5C,CAAC,CAAC,CAAC;aACJ;SACF;IACH,CAAC;IAIS,qBAAqB,CAAC,MAAe,EAAE,cAAsB;QACrE,MAAM,eAAe,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;QAE9D,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;QAC7D,cAAc,CAAC,aAAa,CAAC,eAAsB,CAAC,CAAC;QAGrD,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAC7C,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;IAC9C,CAAC;IAES,wBAAwB;QAChC,OAAQ,IAAI,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE,CAAC,SAAS,EAAoB,CAAC,WAAW,KAAK,KAAK,CAAC;IAC7F,CAAC;IAES,qBAAqB,CAAC,MAAe,EAAE,cAAsB;;QACrE,MAAM,eAAe,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAG,IAAI,cAAc,6CAC9B,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,UAAU,EAAE,kBAAkB,CAAC,MAAA,IAAI,CAAC,KAAK,0CAAE,KAAK,CAAC,IAC9C,eAAe,GACf,IAAI,CAAC,KAAK,KACb,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB,IACrD,CAAC;QACH,KAAK,CAAC,EAAE,GAAG,MAAA,IAAI,CAAC,KAAK,CAAC,EAAE,mCAAI,SAAS,IAAI,CAAC,EAAE,EAAE,CAAC;QAC/C,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,KAAyB,CAAC,CAAC;QACnD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAEvD,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAM,EAAE,EAAE;YACxD,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;YAC1D,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,CAAM,EAAE,EAAE;YACtD,IAAI,IAAI,CAAC,KAAK,CAAC,iCAAiC,EAAE;gBAChD,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;aAC9D;YACD,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,CAAM,EAAE,EAAE;YACtD,IAAI,IAAI,CAAC,KAAK,CAAC,iCAAiC,EAAE;gBAChD,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;aAC9D;YACD,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAM,EAAE,EAAE;YACpD,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC3C,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACnC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAM,EAAE,EAAE;YACnD,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC3C,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACnC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAM,EAAE,EAAE;YACvD,IAAI,IAAI,CAAC,KAAK,CAAC,iCAAiC,EAAE;gBAChD,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;aAC/D;YACD,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;YAC7C,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAM,EAAE,EAAE;;YACpD,IAAI,IAAI,CAAC,KAAK,CAAC,iCAAiC,EAAE;gBAChD,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;aAC/D;YACD,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC1C,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC,MAAa,CAAC;YACxC,MAAM,EAAE,mBAAmB,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;YAClD,IAAI,MAAA,IAAI,CAAC,KAAK,0CAAE,UAAU,EAAE;gBAE1B,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;oBACrC,IAAI,CAAC,YAAY,EAAE,CAAC;oBACpB,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;oBAC7C,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;iBACnD;qBAAM;oBACL,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;oBACzB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;iBACjD;aACF;iBAAM;gBACL,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;gBACtE,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE;oBACjF,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;iBAC/C;gBACD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;aACjD;QACH,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAM,EAAE,EAAE;YACpD,IAAI,IAAI,CAAC,KAAK,CAAC,iCAAiC,EAAE;gBAChD,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;aAC/D;YACD,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC1C,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC,MAAa,CAAC;YACxC,MAAM,EAAE,mBAAmB,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;YAClD,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACtE,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,mBAAmB,EAAE;gBAChF,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;aAC/C;YACD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC;IAES,wBAAwB,CAAC,MAAe;QAChD,MAAM,oBAAoB,GAAG,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAC1D,MAAM,gBAAgB,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;QAChD,MAAM,kBAAkB,GAAG,oBAAoB,CAAC,CAAC,CAAC;QAClD,MAAM,gBAAgB,GAAG,kBAAkB,GAAG,gBAAgB,CAAC,KAAK,CAAC;QACrE,MAAM,kBAAkB,GAAG,oBAAoB,CAAC,CAAC,CAAC;QAClD,MAAM,gBAAgB,GAAG,kBAAkB,GAAG,gBAAgB,CAAC,MAAM,CAAC;QACtE,OAAO;YACL,gBAAgB,EAAE;gBAChB,IAAI,EAAE,kBAAkB;gBACxB,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,kBAAkB;gBACxB,IAAI,EAAE,gBAAgB;aACvB;YACD,MAAM,EAAE,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;YAC9C,MAAM,EAAE,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;YAC9C,WAAW,EAAE,IAAI,CAAC,wBAAwB,EAAE;SAChB,CAAC;IACjC,CAAC;IAEO,yBAAyB,CAAC,YAA+B;QAC/D,MAAM,WAAW,GAAQ,EAAE,CAAC;QAC5B,IAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,EAAE;YACxB,WAAW,CAAC,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC;SAC9C;QACD,IAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,UAAU,EAAE;YAC5B,WAAW,CAAC,IAAI,GAAG,YAAY,CAAC,UAAU,CAAC;SAC5C;QACD,IAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,KAAK,EAAE;YACvB,WAAW,CAAC,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC;SACvC;QACD,IAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,UAAU,EAAE;YAC5B,WAAW,CAAC,WAAW,GAAG,YAAY,CAAC,UAAU,CAAC;SACnD;QACD,uCACK,kBAAkB,CAAC,YAAY,CAAC,GAChC,WAAW,EACd;IACJ,CAAC;IAIO,kBAAkB,CAAC,MAAe,EAAE,CAAM;QAChD,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC,MAAa,CAAC;QACxC,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,MAAM,EAAE,mBAAmB,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAClD,IAAI,mBAAmB,EAAE;YACvB,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YACxC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;SAC/C;IACH,CAAC;IAES,kBAAkB,CAAC,WAA4E;;QACvG,MAAM,IAAI,GAAG,EAAE,CAAC;QAChB,KAAK,MAAM,SAAS,IAAI,WAAW,EAAE;YACnC,KAAK,MAAM,UAAU,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE;gBAC/C,IAAI,CAAC,IAAI,mBACJ,MAAA,MAAA,WAAW,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,0CAAE,IAAI,0CAAG,CAAC,CAAC,EACxD,CAAC;aACJ;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAES,sBAAsB,CAAC,WAAmD;;QAClF,MAAM,IAAI,GAAG,EAAE,CAAC;QAChB,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;YAGpC,IAAI,CAAC,IAAI,CAAC,MAAA,MAAA,WAAW,CAAC,UAAU,CAAC,CAAC,OAAO,0CAAE,IAAI,0CAAG,CAAC,CAAC,CAAC,CAAC;SACvD;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,UAAU,CAAC,SAAiB,EAAE,MAAe,EAAE,CAAM;;QAC3D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE;YACzB,KAAK,EAAE,IAAI;YACX,KAAK,EAAE;gBAEL,WAAW,EAAE,SAAS;gBAEtB,aAAa,EAAE,MAAM;gBAErB,WAAW,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,mBAAmB,CAAC;gBAE9D,cAAc,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,sBAAsB,CAAC;gBAExE,eAAe,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,yBAAyB,CAAC;gBAExE,kBAAkB,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,4BAA4B,CAAC;gBAElF,kBAAkB,EAAE,IAAI,CAAC,mBAAmB;gBAE5C,qBAAqB,EAAE,IAAI,CAAC,sBAAsB;gBAElD,wBAAwB,EAAE,IAAI,CAAC,yBAAyB;gBAExD,2BAA2B,EAAE,IAAI,CAAC,4BAA4B;gBAE9D,UAAU,EAAE,IAAI,CAAC,WAAW;aAC7B;YACD,MAAM,EAAE,MAAA,IAAI,CAAC,OAAO,0CAAE,cAAc;YACpC,KAAK,EAAE,CAAC;SACT,CAAC,CAAC;IACL,CAAC;IAIO,aAAa,CAAC,WAAqB,EAAE,MAAe;;QAC1D,IAAI,CAAC,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,iBAAiB,CAAA,IAAI,CAAC,CAAA,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,SAAS,0CAAE,MAAM,CAAA,EAAE;YACtE,OAAO;SACR;QAGD,MAAM,MAAM,GAAG,MAAA,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,SAAS,0CAAE,MAAM,mCAAI,EAAE,CAAC;QACpD,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,WAAW,CAAC,iBAAiB,CAAC;QAC3D,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAa,EAAE,EAAE;YAC/C,OAAO;gBACL,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBACxB,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;aACzB,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,MAAM,EAAE,cAAc,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAG3C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAW,EAAE,EAAE;YAC/C,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACtC,OAAO;aACR;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAEpC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;gBACjC,OAAO;aACR;YACD,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAyB,EAAE,EAAE;;gBAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC;gBAS3D,MAAM,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,gBAAgB,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;gBAC5G,IAAI,CAAA,MAAA,IAAI,CAAC,sBAAsB,0CAAG,UAAU,CAAC,KAAI,kBAAkB,EAAE;oBACnE,eAAe,CAAC,WAAW,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;oBACnD,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,IAAI,CAAC,EAAE;wBAChD,IAAI,CAAC,mBAAmB,CAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,IAAI,CAAC,GAAG,EAAE,CAAC;qBAClD;oBACD,IAAI,CAAC,mBAAmB,CAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC;oBACtE,OAAO,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;iBAChD;qBAAM,IAAI,CAAA,MAAA,MAAA,IAAI,CAAC,mBAAmB,0CAAG,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,IAAI,CAAC,0CAAG,UAAU,CAAC,KAAI,CAAC,kBAAkB,EAAE;oBAC7F,kBAAkB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;oBAChD,eAAe,CAAC,WAAW,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;oBACpD,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC;oBACtD,OAAO,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC;iBAC/D;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,mBAAmB,CAAC,WAAqB,EAAE,MAAe;;QAChE,IAAI,CAAC,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,iBAAiB,CAAA,IAAI,CAAC,CAAA,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,SAAS,0CAAE,MAAM,CAAA,EAAE;YACtE,OAAO;SACR;QAED,MAAM,eAAe,GAAG,MAAM,CAAC,mBAAmB,EAAE,CAAC;QACrD,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAU,EAAE,EAAE;;YACxC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;gBAC5B,MAAM,gBAAgB,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,mBAAmB,EAAE,CAAC;gBAE7D,MAAM,aAAa,GAAG,gBAAgB,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;gBAC7D,MAAM,aAAa,GAAG,gBAAgB,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;gBAG7D,MAAM,MAAM,GAAG,MAAA,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,SAAS,0CAAE,MAAM,mCAAI,EAAE,CAAC;gBACpD,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,WAAW,CAAC,iBAAiB,CAAC;gBAE3D,MAAM,EAAE,GAAG,aAAa,IAAI,CAAC,CAAC;gBAC9B,MAAM,EAAE,GAAG,aAAa,IAAI,CAAC,CAAC;gBAE9B,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAa,EAAE,EAAE;oBAC/C,OAAO;wBACL,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;wBAC7B,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;qBAC9B,CAAC;gBACJ,CAAC,CAAC,CAAC;gBAEH,WAAW,CAAC,gBAAgB;qBACzB,KAAK,EAAE;qBACP,GAAG,CACF,WAAW,CAAC,gBAAgB,CAAC,EAAE,GAAG,EAAE,EACpC,WAAW,CAAC,gBAAgB,CAAC,EAAE,GAAG,EAAE,EACpC,WAAW,CAAC,gBAAgB,CAAC,EAAE,GAAG,EAAE,EACpC,WAAW,CAAC,gBAAgB,CAAC,EAAE,GAAG,EAAE,CACrC,CAAC;gBAEJ,MAAM,EAAE,cAAc,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;gBAC3C,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAW,EAAE,EAAE;oBAChD,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;wBACtC,OAAO;qBACR;oBACD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;oBACpC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;wBACjC,OAAO;qBACR;oBACD,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAyB,EAAE,EAAE;;wBAC7C,MAAM,EAAE,GAAG,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC;wBAEpC,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC;wBAS3D,IACE,CAAA,MAAA,IAAI,CAAC,4BAA4B,0CAAG,UAAU,CAAC;4BAC/C,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,gBAAgB,EAAE,WAAW,EAAE,WAAW,CAAC,EAChF;4BACA,eAAe,CAAC,WAAW,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;4BACnD,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,IAAI,CAAC,EAAE;gCACtD,IAAI,CAAC,yBAAyB,CAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,IAAI,CAAC,GAAG,EAAE,CAAC;6BACxD;4BACD,IAAI,CAAC,yBAAyB,CAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC;4BAC5E,OAAO,IAAI,CAAC,4BAA4B,CAAC,UAAU,CAAC,CAAC;yBACtD;6BAAM,IACL,CAAA,MAAA,MAAA,IAAI,CAAC,yBAAyB,0CAAG,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,IAAI,CAAC,0CAAG,UAAU,CAAC;4BACjE,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,gBAAgB,EAAE,WAAW,EAAE,WAAW,CAAC,EACjF;4BACA,kBAAkB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;4BAChD,eAAe,CAAC,WAAW,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;4BACpD,IAAI,CAAC,4BAA4B,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC;yBAC7D;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,mBAAmB,CAAC,mBAA4B,EAAE,oBAAkC,EAAE,IAAkB;QAE9G,IAAI,UAAU,GAA+B,EAAE,CAAC;QAChD,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC1C,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,gBAAgB,CAAC;YAClD,UAAU,GAAG;gBACX;oBACE,CAAC,EAAE,EAAE;oBACL,CAAC,EAAE,EAAE;iBACN;gBACD;oBACE,CAAC,EAAE,EAAE;oBACL,CAAC,EAAE,EAAE;iBACN;gBACD;oBACE,CAAC,EAAE,EAAE;oBACL,CAAC,EAAE,EAAE;iBACN;gBACD;oBACE,CAAC,EAAE,EAAE;oBACL,CAAC,EAAE,EAAE;iBACN;aACF,CAAC;YACF,OAAO,uBAAuB,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC;SAClE;QACD,OAAO,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC/D,CAAC;IAES,YAAY,CACpB,OAAgC,EAChC,UAAwC,EACxC,SAAiB;QAEjB,MAAM,EAAE,cAAc,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAE3C,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE;YACpD,KAAK,CAAC,OAAO,CAAC,CAAC,IAAW,EAAE,EAAE;gBAC5B,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBACtC,OAAO;iBACR;gBACD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;gBACpC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;oBACjC,OAAO;iBACR;gBACD,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAgB,EAAE,EAAE;oBACpC,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;oBAClD,kBAAkB,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC,CAAC;oBAC1D,SAAS,IAAI,eAAe,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;oBAClD,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;gBAC9B,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAES,mBAAmB,CAAC,cAAsB,EAAE,SAAiB;QACrE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC7C,IAAI,KAAK,KAAK,cAAc,EAAE;gBAC5B,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;aACpC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;QACjC,IAAI,CAAC,yBAAyB,GAAG,EAAE,CAAC;QACpC,IAAI,CAAC,4BAA4B,GAAG,EAAE,CAAC;QAEvC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,sBAAsB,EAAE,SAAS,CAAC,CAAC;QACzE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,4BAA4B,EAAE,SAAS,CAAC,CAAC;IACvF,CAAC;IAGO,sBAAsB,CAAC,MAAe,EAAE,QAAiB;QAC/D,MAAM;aACH,YAAY,EAAE;aACd,WAAW,EAAE;aACb,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChE,CAAC;IAIO,WAAW,CAAC,KAAa;QAC/B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACzC,CAAC;IAEO,mBAAmB,CAAC,WAAqB,EAAE,MAAe;;QAChE,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;YAE7B,MAAM,iBAAiB,GAAG,WAAW,CAAC,UAAU,CAAC;YAKjD,MAAA,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC,0CAAE,OAAO,CAAC,IAAI,CAAC,EAAE;;gBACzD,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,CAAC;gBACnF,MAAM,eAAe,GAAG,MAAA,IAAI,CAAC,KAAK,CAAC,eAAe,mCAAI,CAAC,CAAC;gBACxD,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,iBAAiB,CAAC;gBAC7C,MAAM,eAAe,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBACjD,MAAM,cAAc,GAAG,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;gBACzD,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3C,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAEzC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC;gBACtC,MAAM,WAAW,GAAG,MAAA,IAAI,CAAC,gBAAgB,EAAE,mCAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAItD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC7C,MAAM,YAAY,GAAG,WAAW,GAAG,MAAM,CAAC,mBAAmB,EAAE,CAAC,eAAe,CAAC,CAAC;gBACjF,MAAM,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC,mBAAmB,EAAE,CAAC,eAAe,CAAC,CAAC;gBAC7E,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;gBACvG,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;gBAEzG,MAAM,KAAK,GACT,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;gBAC1G,MAAM,GAAG,GACP,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;gBACxG,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,eAAe,CAAC,CAAC;gBAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,eAAe,CAAC,CAAC;gBAEvD,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;oBAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAEhD,MAAM,eAAe,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;oBAChE,MAAM,aAAa,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;oBAC1D,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,aAAa,CAAC,EAAE;wBAC1G,SAAS;wBACT,SAAS;qBACV,CAAC,CAAC;oBAEH,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;wBACpB,gBAAgB,EAAE,QAAQ;wBAC1B,KAAK,EAAE,eAAe;wBACtB,GAAG,EAAE,aAAa;wBAClB,UAAU,EAAE,gBAAgB,CAC1B,eAAe,EACf,QAAQ,CAAC,UAAU,EACnB,SAAS,CAAC,QAAQ,CAAC,oBAA0C,EAAE,QAAQ,CAAC,YAAY,CAAC,CACtF;wBACD,QAAQ,EAAE,gBAAgB,CACxB,aAAa,EACb,QAAQ,CAAC,UAAU,EACnB,SAAS,CAAC,QAAQ,CAAC,oBAA0C,EAAE,QAAQ,CAAC,YAAY,CAAC,CACtF;qBACF,CAAC,CAAC;iBACJ;qBAAM;oBACL,IAAI,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;oBAC1C,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;oBAE1B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;wBACpB,gBAAgB,EAAE,IAAI;wBACtB,KAAK,EAAE,QAAQ;wBACf,GAAG,EAAE,MAAM;wBACX,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;wBAC5C,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;qBACzC,CAAC,CAAC;iBACJ;YACH,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAIS,8BAA8B;QACtC,OAAO,IAAI,CAAC,gBAAuC,CAAC;IACtD,CAAC;IAED,YAAY;QACV,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACnC,KAAa,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC;YACpD,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACtC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBAE7C,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBAEpC,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,KAAK,CAAC,kBAAkB,EAAE,CAAC;gBAE3B,IAAI,SAAS,EAAE;oBACb,SAAS,CAAC,WAAW,CAAC,KAAyB,CAAC,CAAC;iBAClD;YACH,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;SAC9B;IACH,CAAC;IACD,sBAAsB;QACpB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,MAAe,EAAE,cAAsB,EAAE,EAAE;YACxE,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;YAC7C,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;QACrE,CAAC,CAAC,CAAC;IACL,CAAC;;AA3vBM,UAAI,GAAG,iBAAiB,CAAC,KAAK,CAAC;AAItB,kBAAY,GAAG;IAC7B,KAAK;CACN,CAAC;AACK,aAAO,GAAG,OAAO,CAAC;AAuvB3B,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,EAAE;IAChC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC/C,CAAC,CAAC","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 } from '@visactor/vutils';\nimport type { 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';\nimport { isReverse, statePointToData } from '../data-zoom/util';\nimport type { CartesianAxis } from '../axis/cartesian';\nimport type { IRenderOption } from '../../compile/interface';\nimport { addGraphicState, removeGraphicState } from '../../util/graphic-state';\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 protected _operateMask: IPolygon;\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 _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 _shouldEnableInteractive() {\n return (this.getOption().getCompiler().getOption() as IRenderOption).interactive !== false;\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, e);\n });\n\n brush.addEventListener(BrushEvent.drawStart, (e: any) => {\n if (this._spec.disableDimensionHoverWhenBrushing) {\n this._option.globalInstance.disableDimensionHoverEvent(true);\n }\n this._setRegionMarkPickable(region, true);\n this._emitEvent(ChartEvent.brushStart, region, e);\n });\n\n brush.addEventListener(BrushEvent.moveStart, (e: any) => {\n if (this._spec.disableDimensionHoverWhenBrushing) {\n this._option.globalInstance.disableDimensionHoverEvent(true);\n }\n this._setRegionMarkPickable(region, true);\n this._emitEvent(ChartEvent.brushStart, region, e);\n });\n\n brush.addEventListener(BrushEvent.drawing, (e: any) => {\n this._setRegionMarkPickable(region, false);\n this._handleBrushChange(region, e);\n this._emitEvent(ChartEvent.brushChange, region, e);\n });\n\n brush.addEventListener(BrushEvent.moving, (e: any) => {\n this._setRegionMarkPickable(region, false);\n this._handleBrushChange(region, e);\n this._emitEvent(ChartEvent.brushChange, region, e);\n });\n\n brush.addEventListener(BrushEvent.brushClear, (e: any) => {\n if (this._spec.disableDimensionHoverWhenBrushing) {\n this._option.globalInstance.disableDimensionHoverEvent(false);\n }\n this._setRegionMarkPickable(region, true);\n this._initMarkBrushState(componentIndex, '');\n this._emitEvent(ChartEvent.brushClear, region, e);\n });\n\n brush.addEventListener(BrushEvent.drawEnd, (e: any) => {\n if (this._spec.disableDimensionHoverWhenBrushing) {\n this._option.globalInstance.disableDimensionHoverEvent(false);\n }\n this._setRegionMarkPickable(region, true);\n const { operateMask } = e.detail as any;\n const { updateElementsState = true } = this._spec;\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._emitEvent(ChartEvent.brushClear, region, e);\n } else {\n this._spec.onBrushEnd(e);\n this._emitEvent(ChartEvent.brushEnd, region, e);\n }\n } else {\n const inBrushData = this._extendDataInBrush(this._inBrushElementsMap);\n if ((!this._spec.zoomWhenEmpty && inBrushData.length > 0) || !updateElementsState) {\n this._setAxisAndDataZoom(operateMask, region);\n }\n this._emitEvent(ChartEvent.brushEnd, region, e);\n }\n });\n\n brush.addEventListener(BrushEvent.moveEnd, (e: any) => {\n if (this._spec.disableDimensionHoverWhenBrushing) {\n this._option.globalInstance.disableDimensionHoverEvent(false);\n }\n this._setRegionMarkPickable(region, true);\n const { operateMask } = e.detail as any;\n const { updateElementsState = true } = this._spec;\n const inBrushData = this._extendDataInBrush(this._inBrushElementsMap);\n if ((!this._spec.zoomWhenEmpty && inBrushData.length > 0) || updateElementsState) {\n this._setAxisAndDataZoom(operateMask, region);\n }\n this._emitEvent(ChartEvent.brushEnd, region, e);\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 interactive: this._shouldEnableInteractive()\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._operateMask = operateMask;\n const { updateElementsState = true } = this._spec;\n if (updateElementsState) {\n this._reconfigItem(operateMask, region);\n this._reconfigLinkedItem(operateMask, region);\n }\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, e: any) {\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 event: e\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 addGraphicState(graphicItem, 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 removeGraphicState(graphicItem, IN_BRUSH_STATE);\n addGraphicState(graphicItem, OUT_BRUSH_STATE, true);\n this._outOfBrushElementsMap[elementKey] = graphicItem;\n delete this._inBrushElementsMap[operateMask.name][elementKey];\n }\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 addGraphicState(graphicItem, 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 removeGraphicState(graphicItem, IN_BRUSH_STATE);\n addGraphicState(graphicItem, OUT_BRUSH_STATE, true);\n this._linkedOutOfBrushElementsMap[elementKey] = graphicItem;\n }\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 removeGraphicState(el, [IN_BRUSH_STATE, OUT_BRUSH_STATE]);\n stateName && addGraphicState(el, 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\n // 绘制brush的时候, 避免brush与图元交互冲突\n private _setRegionMarkPickable(region: IRegion, pickable: boolean) {\n region\n .getGroupMark()\n .getGraphics()\n .forEach(g => g.setAttribute('childrenPickable', pickable));\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 regionSizeAttr = isHorizontal ? 'width' : 'height';\n const boundsStart = isHorizontal ? x1 : y1;\n const boundsEnd = isHorizontal ? x2 : y2;\n\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\n if (this._axisDataZoomMap[axis.id]) {\n const dataZoom = this._axisDataZoomMap[axis.id];\n\n const newStartPercent = isAxisReverse ? 1 - newStart : newStart;\n const newEndPercent = isAxisReverse ? 1 - newEnd : newEnd;\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: statePointToData(\n newStartPercent,\n dataZoom.stateScale,\n isReverse(dataZoom.relatedAxisComponent as CartesianAxis<any>, dataZoom.isHorizontal)\n ),\n endValue: statePointToData(\n newEndPercent,\n dataZoom.stateScale,\n isReverse(dataZoom.relatedAxisComponent as CartesianAxis<any>, dataZoom.isHorizontal)\n )\n });\n } else {\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\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 clearBrushStateAndMask() {\n this._relativeRegions.forEach((region: IRegion, componentIndex: number) => {\n this._initMarkBrushState(componentIndex, '');\n this._brushComponents[componentIndex].children[0].removeAllChild();\n });\n }\n}\n\nexport const registerBrush = () => {\n Factory.registerComponent(Brush.type, Brush);\n};\n"]}
|
package/esm/component/util.js
CHANGED
|
@@ -7,5 +7,4 @@ export var AttributeLevel;
|
|
|
7
7
|
AttributeLevel[AttributeLevel.User_Chart = 6] = "User_Chart", AttributeLevel[AttributeLevel.User_Series = 7] = "User_Series",
|
|
8
8
|
AttributeLevel[AttributeLevel.User_Mark = 8] = "User_Mark", AttributeLevel[AttributeLevel.User_SeriesStyle = 9] = "User_SeriesStyle",
|
|
9
9
|
AttributeLevel[AttributeLevel.Built_In = 99] = "Built_In";
|
|
10
|
-
}(AttributeLevel || (AttributeLevel = {}));
|
|
11
|
-
//# sourceMappingURL=attribute.js.map
|
|
10
|
+
}(AttributeLevel || (AttributeLevel = {}));
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export const SCROLL_BAR_DEFAULT_SIZE = 12;
|
|
1
|
+
export const SCROLL_BAR_DEFAULT_SIZE = 12;
|
|
2
|
+
//# sourceMappingURL=scroll-bar.js.map
|
package/esm/core/factory.js
CHANGED
package/esm/core/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { VChart } from './vchart';
|
|
2
2
|
import { Factory } from './factory';
|
|
3
3
|
export { VChart, Factory };
|
|
4
|
-
export declare const version = "2.0.
|
|
4
|
+
export declare const version = "2.0.22";
|
|
5
5
|
export type { IVChart } from './interface';
|
|
6
6
|
export type { IStateSpec, StateValueType } from '../compile/mark';
|
|
7
7
|
export type { IRegion } from '../region/interface';
|
package/esm/core/index.js
CHANGED
|
@@ -4,7 +4,7 @@ import { Factory } from "./factory";
|
|
|
4
4
|
|
|
5
5
|
export { VChart, Factory };
|
|
6
6
|
|
|
7
|
-
export const version = "2.0.
|
|
7
|
+
export const version = "2.0.22";
|
|
8
8
|
|
|
9
9
|
export * from "../event/interface";
|
|
10
10
|
|
|
@@ -55,4 +55,4 @@ export { lookup } from "../data/transforms/lookup";
|
|
|
55
55
|
export { warn } from "../util/debug";
|
|
56
56
|
|
|
57
57
|
export { measureText } from "../util/text";
|
|
58
|
-
//# sourceMappingURL=index.js.map
|
|
58
|
+
//# sourceMappingURL=index.js.map
|
package/esm/core/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAG3B,MAAM,CAAC,MAAM,OAAO,GAAG,
|
|
1
|
+
{"version":3,"sources":["../src/core/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAG3B,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAOhC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AAEnC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAI3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAK/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,gBAAgB,CAAC;AAG/B,OAAO,EACL,OAAO,EACP,WAAW,EACX,cAAc,EACd,UAAU,EACV,SAAS,EACT,UAAU,EACV,UAAU,EACV,UAAU,EACV,YAAY,EACb,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAGtE,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,6BAA6B,EAAE,gCAAgC,EAAE,MAAM,kBAAkB,CAAC;AACnG,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC","file":"index.js","sourcesContent":["/**\n * @description The core module of VChart, containing the necessary interfaces for using VChart.\n */\n\nimport { VChart } from './vchart';\nimport { Factory } from './factory';\n\nexport { VChart, Factory };\n\n// export the version\nexport const version = \"2.0.22\";\n\n// export necessary types\nexport type { IVChart } from './interface';\nexport type { IStateSpec, StateValueType } from '../compile/mark';\nexport type { IRegion } from '../region/interface';\n\nexport * from '../event/interface';\nexport * from '../theme/interface';\nexport * from '../model/interface';\n\nexport * from './interface';\nexport * from '../typings';\nexport type { IMarkGraphic, IGraphicContext } from '../mark/interface/';\n\n// some constants\nexport * from '../constant/base';\nexport * from '../constant/data';\nexport * from '../constant/layout';\nexport { AttributeLevel } from '../constant/attribute';\nexport { TransformLevel } from '../data/initialize';\nexport { STATE_VALUE_ENUM } from '../compile/mark/interface';\nexport { ChartEvent } from '../constant/event';\n\n/**\n * spec\n */\nexport * from '../typings/spec/index';\nexport * from '../typings/visual';\n\n// tooltip\nexport * from '../typings/tooltip';\n\n// theme\nexport * from '../theme/index';\n\n// vrender\nexport {\n vglobal,\n createGroup,\n createRichText,\n createText,\n createArc,\n createArea,\n createRect,\n createLine,\n createSymbol\n} from '@visactor/vrender-core';\nexport { ManualTicker, StreamLight } from '@visactor/vrender-animate';\n\n// utils\nexport * from '../util/space';\nexport { transformToGraphic } from '../util/style';\nexport { getSpecInfo } from '../component/util';\nexport { registerDataSetInstanceParser, registerDataSetInstanceTransform } from '../data/register';\nexport { lookup } from '../data/transforms/lookup';\nexport { warn } from '../util/debug';\nexport { measureText } from '../util/text';\n"]}
|
package/esm/env/env.js
CHANGED
package/esm/env/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export * from "./env";
|
|
2
|
-
//# sourceMappingURL=index.js.map
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { addGraphicState, removeGraphicState } from "../util/graphic-state";
|
|
2
|
+
|
|
1
3
|
export class Interaction {
|
|
2
4
|
constructor() {
|
|
3
5
|
this._stateGraphicsByTrigger = new Map, this._disableTriggerEvent = !1, this._triggerMapByState = new Map;
|
|
@@ -32,13 +34,13 @@ export class Interaction {
|
|
|
32
34
|
var _a;
|
|
33
35
|
if (reverseState && markIdByState[reverseState] && markIdByState[reverseState].includes(g.context.markId)) {
|
|
34
36
|
const m = null === (_a = g.parent) || void 0 === _a ? void 0 : _a.mark, hasAnimation = m.hasAnimationByState && m.hasAnimationByState("state");
|
|
35
|
-
g
|
|
37
|
+
addGraphicState(g, reverseState, !0, hasAnimation);
|
|
36
38
|
}
|
|
37
39
|
})), newStatedGraphics.forEach((g => {
|
|
38
40
|
var _a;
|
|
39
41
|
if (reverseState && markIdByState[reverseState] && markIdByState[reverseState].includes(g.context.markId)) {
|
|
40
42
|
const m = null === (_a = g.parent) || void 0 === _a ? void 0 : _a.mark, hasAnimation = m.hasAnimationByState && m.hasAnimationByState("state");
|
|
41
|
-
g
|
|
43
|
+
removeGraphicState(g, reverseState, hasAnimation);
|
|
42
44
|
}
|
|
43
45
|
}));
|
|
44
46
|
}
|
|
@@ -48,13 +50,13 @@ export class Interaction {
|
|
|
48
50
|
var _a;
|
|
49
51
|
if (state && markIdByState[state] && markIdByState[state].includes(g.context.markId)) {
|
|
50
52
|
const m = null === (_a = g.parent) || void 0 === _a ? void 0 : _a.mark, hasAnimation = m.hasAnimationByState && m.hasAnimationByState("state");
|
|
51
|
-
g
|
|
53
|
+
removeGraphicState(g, state, hasAnimation);
|
|
52
54
|
}
|
|
53
55
|
})), newStatedGraphics.forEach((g => {
|
|
54
56
|
var _a;
|
|
55
57
|
if (state && markIdByState[state] && markIdByState[state].includes(g.context.markId)) {
|
|
56
58
|
const m = null === (_a = g.parent) || void 0 === _a ? void 0 : _a.mark, hasAnimation = m.hasAnimationByState && m.hasAnimationByState("state");
|
|
57
|
-
g
|
|
59
|
+
addGraphicState(g, state, !0, hasAnimation);
|
|
58
60
|
}
|
|
59
61
|
}));
|
|
60
62
|
}
|
|
@@ -66,7 +68,7 @@ export class Interaction {
|
|
|
66
68
|
if (!hasReverse && !hasState) return;
|
|
67
69
|
const hasAnimation = m.hasAnimationByState && m.hasAnimationByState("state");
|
|
68
70
|
null === (_a = m.getGraphics()) || void 0 === _a || _a.forEach((g => {
|
|
69
|
-
statedGraphics && statedGraphics.includes(g) ? hasState && g
|
|
71
|
+
statedGraphics && statedGraphics.includes(g) ? hasState && addGraphicState(g, state, !0, hasAnimation) : hasReverse && addGraphicState(g, reverseState, !0, hasAnimation);
|
|
70
72
|
}));
|
|
71
73
|
}));
|
|
72
74
|
}
|
|
@@ -78,7 +80,7 @@ export class Interaction {
|
|
|
78
80
|
if (!hasState) return;
|
|
79
81
|
const hasAnimation = mark.hasAnimationByState && mark.hasAnimationByState("state");
|
|
80
82
|
null === (_a = mark.getGraphics()) || void 0 === _a || _a.forEach((g => {
|
|
81
|
-
statedGraphics && statedGraphics.includes(g) && hasState && g
|
|
83
|
+
statedGraphics && statedGraphics.includes(g) && hasState && addGraphicState(g, state, !0, hasAnimation);
|
|
82
84
|
}));
|
|
83
85
|
}));
|
|
84
86
|
}
|
|
@@ -91,9 +93,9 @@ export class Interaction {
|
|
|
91
93
|
if (mark) {
|
|
92
94
|
const graphics = mark.getGraphics(), hasAnimation = mark.hasAnimationByState && mark.hasAnimationByState("state");
|
|
93
95
|
graphics && graphics.length && (reverseState && markIdByState[reverseState] && markIdByState[reverseState].includes(mark.id) && graphics.forEach((g => {
|
|
94
|
-
g
|
|
96
|
+
removeGraphicState(g, reverseState, hasAnimation);
|
|
95
97
|
})), state && markIdByState[state] && markIdByState[state].includes(mark.id) && graphics.forEach((g => {
|
|
96
|
-
statedGraphics.includes(g) && g
|
|
98
|
+
statedGraphics.includes(g) && removeGraphicState(g, state, hasAnimation);
|
|
97
99
|
})));
|
|
98
100
|
}
|
|
99
101
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/interaction/interaction.ts"],"names":[],"mappings":"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","file":"interaction.js","sourcesContent":["import type { StateValue } from '../compile/mark';\nimport type { IMarkGraphic } from '../mark/interface';\nimport type { IInteraction } from './interface/common';\nimport type { ITrigger } from './interface/trigger';\n\nexport class Interaction implements IInteraction {\n private _stateGraphicsByTrigger: Map<ITrigger, IMarkGraphic[]> = new Map();\n\n private _disableTriggerEvent: boolean = false;\n\n setDisableActiveEffect(disable: boolean) {\n this._disableTriggerEvent = disable;\n }\n\n private _triggerMapByState: Map<StateValue, ITrigger[]> = new Map();\n addTrigger(trigger: ITrigger) {\n if (trigger) {\n const startState = trigger.getStartState();\n const resetState = trigger.getResetState();\n\n [startState, resetState].forEach(state => {\n if (state) {\n const stateTrigger = this._triggerMapByState.get(state);\n\n if (stateTrigger) {\n !stateTrigger.includes(trigger) && stateTrigger.push(trigger);\n } else {\n this._triggerMapByState.set(state, [trigger]);\n }\n }\n });\n }\n }\n\n setStatedGraphics(trigger: ITrigger, graphics: IMarkGraphic[]) {\n this._stateGraphicsByTrigger.set(trigger, graphics);\n }\n\n getStatedGraphics(trigger: ITrigger) {\n return this._stateGraphicsByTrigger.get(trigger);\n }\n\n updateStates(\n trigger: ITrigger,\n newStatedGraphics: IMarkGraphic[],\n prevStatedGraphics?: IMarkGraphic[],\n state?: string,\n reverseState?: string\n ) {\n if (this._disableTriggerEvent) {\n return [];\n }\n\n if (!newStatedGraphics || !newStatedGraphics.length) {\n return [];\n }\n if (state && reverseState) {\n if (prevStatedGraphics && prevStatedGraphics.length) {\n // toggle\n this.toggleReverseStateOfGraphics(trigger, newStatedGraphics, prevStatedGraphics, reverseState);\n this.toggleStateOfGraphics(trigger, newStatedGraphics, prevStatedGraphics, state);\n } else {\n // update all the elements\n this.addBothStateOfGraphics(trigger, newStatedGraphics, state, reverseState);\n }\n } else if (state) {\n if (prevStatedGraphics && prevStatedGraphics.length) {\n this.toggleStateOfGraphics(trigger, newStatedGraphics, prevStatedGraphics, state);\n } else {\n this.addStateOfGraphics(trigger, newStatedGraphics, state);\n }\n }\n\n return newStatedGraphics;\n }\n\n protected toggleReverseStateOfGraphics(\n trigger: ITrigger,\n newStatedGraphics: IMarkGraphic[],\n prevStatedGraphics: IMarkGraphic[],\n reverseState: string\n ) {\n const markIdByState = trigger.getMarkIdByState();\n\n prevStatedGraphics.forEach(g => {\n const hasReverse =\n reverseState && markIdByState[reverseState] && markIdByState[reverseState].includes(g.context.markId);\n\n if (hasReverse) {\n const m = g.parent?.mark;\n const hasAnimation = (m as any).hasAnimationByState && (m as any).hasAnimationByState('state');\n g.addState(reverseState, true, hasAnimation);\n }\n });\n\n newStatedGraphics.forEach(g => {\n const hasReverse =\n reverseState && markIdByState[reverseState] && markIdByState[reverseState].includes(g.context.markId);\n\n if (hasReverse) {\n const m = g.parent?.mark;\n const hasAnimation = (m as any).hasAnimationByState && (m as any).hasAnimationByState('state');\n g.removeState(reverseState, hasAnimation);\n }\n });\n }\n\n protected toggleStateOfGraphics(\n trigger: ITrigger,\n newStatedGraphics: IMarkGraphic[],\n prevStatedGraphics: IMarkGraphic[],\n state: string\n ) {\n const markIdByState = trigger.getMarkIdByState();\n\n prevStatedGraphics.forEach(g => {\n const hasState = state && markIdByState[state] && markIdByState[state].includes(g.context.markId);\n\n if (hasState) {\n const m = g.parent?.mark;\n const hasAnimation = (m as any).hasAnimationByState && (m as any).hasAnimationByState('state');\n g.removeState(state, hasAnimation);\n }\n });\n\n newStatedGraphics.forEach(g => {\n const hasState = state && markIdByState[state] && markIdByState[state].includes(g.context.markId);\n if (hasState) {\n const m = g.parent?.mark;\n const hasAnimation = (m as any).hasAnimationByState && (m as any).hasAnimationByState('state');\n g.addState(state, true, hasAnimation);\n }\n });\n }\n\n protected addBothStateOfGraphics(\n trigger: ITrigger,\n statedGraphics: IMarkGraphic[],\n state: string,\n reverseState: string\n ) {\n const marks = trigger.getMarks();\n const markIdByState = trigger.getMarkIdByState();\n\n marks.forEach(m => {\n const hasReverse = reverseState && markIdByState[reverseState] && markIdByState[reverseState].includes(m.id);\n const hasState = state && markIdByState[state] && markIdByState[state].includes(m.id);\n\n if (!hasReverse && !hasState) {\n return;\n }\n\n const hasAnimation = (m as any).hasAnimationByState && (m as any).hasAnimationByState('state');\n m.getGraphics()?.forEach(g => {\n const isStated = statedGraphics && statedGraphics.includes(g);\n if (isStated) {\n if (hasState) {\n g.addState(state, true, hasAnimation);\n }\n } else {\n if (hasReverse) {\n g.addState(reverseState, true, hasAnimation);\n }\n }\n });\n });\n }\n\n protected addStateOfGraphics(trigger: ITrigger, statedGraphics: IMarkGraphic[], state: string) {\n const marks = trigger.getMarks();\n const markIdByState = trigger.getMarkIdByState();\n\n marks.forEach(mark => {\n const hasState = state && markIdByState[state] && markIdByState[state].includes(mark.id);\n\n if (!hasState) {\n return;\n }\n\n const hasAnimation = (mark as any).hasAnimationByState && (mark as any).hasAnimationByState('state');\n\n mark.getGraphics()?.forEach(g => {\n const isStated = statedGraphics && statedGraphics.includes(g);\n\n if (isStated) {\n if (hasState) {\n g.addState(state, true, hasAnimation);\n }\n }\n });\n });\n }\n\n clearAllStatesOfTrigger(trigger: ITrigger, state?: string, reverseState?: string) {\n if (this._disableTriggerEvent) {\n return;\n }\n\n const statedGraphics = this.getStatedGraphics(trigger);\n\n if (!statedGraphics || !statedGraphics.length) {\n return;\n }\n const marks = trigger.getMarks();\n const markIdByState = trigger.getMarkIdByState();\n\n marks.forEach(mark => {\n if (mark) {\n const graphics = mark.getGraphics();\n const hasAnimation = (mark as any).hasAnimationByState && (mark as any).hasAnimationByState('state');\n if (graphics && graphics.length) {\n if (reverseState && markIdByState[reverseState] && markIdByState[reverseState].includes(mark.id)) {\n graphics.forEach(g => {\n g.removeState(reverseState, hasAnimation);\n });\n }\n\n if (state && markIdByState[state] && markIdByState[state].includes(mark.id)) {\n graphics.forEach(g => {\n if (statedGraphics.includes(g)) {\n g.removeState(state, hasAnimation);\n }\n });\n }\n }\n }\n });\n }\n\n clearAllStates() {\n if (this._disableTriggerEvent) {\n return;\n }\n\n this._triggerMapByState.forEach((triggers, state) => {\n triggers.forEach(trigger => {\n this.clearAllStatesOfTrigger(trigger, state, trigger.getResetState());\n });\n });\n }\n\n clearByState(stateValue: string) {\n if (this._disableTriggerEvent) {\n return;\n }\n\n const triggers = this._triggerMapByState.get(stateValue);\n\n if (triggers && triggers.length) {\n triggers.forEach(t => {\n this.clearAllStatesOfTrigger(t, stateValue, t.getResetState());\n\n // 更新缓存\n this.setStatedGraphics(t, []);\n });\n }\n }\n\n updateStateOfGraphics(stateValue: string, markGraphics: IMarkGraphic[]) {\n if (this._disableTriggerEvent) {\n return;\n }\n const triggers = this._triggerMapByState.get(stateValue);\n\n if (triggers && triggers.length) {\n triggers.forEach(t => {\n const newStatedGraphics = markGraphics.filter(mg => {\n return t.getMarks().some(m => {\n const graphics = m && m.getGraphics();\n\n return graphics && graphics.includes(mg);\n });\n });\n\n this.updateStates(t, newStatedGraphics, this.getStatedGraphics(t), t.getStartState(), t.getResetState());\n\n this.setStatedGraphics(t, newStatedGraphics);\n });\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/interaction/interaction.ts"],"names":[],"mappings":"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","file":"interaction.js","sourcesContent":["import type { StateValue } from '../compile/mark';\nimport type { IMarkGraphic } from '../mark/interface';\nimport type { IInteraction } from './interface/common';\nimport type { ITrigger } from './interface/trigger';\nimport { addGraphicState, removeGraphicState } from '../util/graphic-state';\n\nexport class Interaction implements IInteraction {\n private _stateGraphicsByTrigger: Map<ITrigger, IMarkGraphic[]> = new Map();\n\n private _disableTriggerEvent: boolean = false;\n\n setDisableActiveEffect(disable: boolean) {\n this._disableTriggerEvent = disable;\n }\n\n private _triggerMapByState: Map<StateValue, ITrigger[]> = new Map();\n addTrigger(trigger: ITrigger) {\n if (trigger) {\n const startState = trigger.getStartState();\n const resetState = trigger.getResetState();\n\n [startState, resetState].forEach(state => {\n if (state) {\n const stateTrigger = this._triggerMapByState.get(state);\n\n if (stateTrigger) {\n !stateTrigger.includes(trigger) && stateTrigger.push(trigger);\n } else {\n this._triggerMapByState.set(state, [trigger]);\n }\n }\n });\n }\n }\n\n setStatedGraphics(trigger: ITrigger, graphics: IMarkGraphic[]) {\n this._stateGraphicsByTrigger.set(trigger, graphics);\n }\n\n getStatedGraphics(trigger: ITrigger) {\n return this._stateGraphicsByTrigger.get(trigger);\n }\n\n updateStates(\n trigger: ITrigger,\n newStatedGraphics: IMarkGraphic[],\n prevStatedGraphics?: IMarkGraphic[],\n state?: string,\n reverseState?: string\n ) {\n if (this._disableTriggerEvent) {\n return [];\n }\n\n if (!newStatedGraphics || !newStatedGraphics.length) {\n return [];\n }\n if (state && reverseState) {\n if (prevStatedGraphics && prevStatedGraphics.length) {\n // toggle\n this.toggleReverseStateOfGraphics(trigger, newStatedGraphics, prevStatedGraphics, reverseState);\n this.toggleStateOfGraphics(trigger, newStatedGraphics, prevStatedGraphics, state);\n } else {\n // update all the elements\n this.addBothStateOfGraphics(trigger, newStatedGraphics, state, reverseState);\n }\n } else if (state) {\n if (prevStatedGraphics && prevStatedGraphics.length) {\n this.toggleStateOfGraphics(trigger, newStatedGraphics, prevStatedGraphics, state);\n } else {\n this.addStateOfGraphics(trigger, newStatedGraphics, state);\n }\n }\n\n return newStatedGraphics;\n }\n\n protected toggleReverseStateOfGraphics(\n trigger: ITrigger,\n newStatedGraphics: IMarkGraphic[],\n prevStatedGraphics: IMarkGraphic[],\n reverseState: string\n ) {\n const markIdByState = trigger.getMarkIdByState();\n\n prevStatedGraphics.forEach(g => {\n const hasReverse =\n reverseState && markIdByState[reverseState] && markIdByState[reverseState].includes(g.context.markId);\n\n if (hasReverse) {\n const m = g.parent?.mark;\n const hasAnimation = (m as any).hasAnimationByState && (m as any).hasAnimationByState('state');\n addGraphicState(g, reverseState, true, hasAnimation);\n }\n });\n\n newStatedGraphics.forEach(g => {\n const hasReverse =\n reverseState && markIdByState[reverseState] && markIdByState[reverseState].includes(g.context.markId);\n\n if (hasReverse) {\n const m = g.parent?.mark;\n const hasAnimation = (m as any).hasAnimationByState && (m as any).hasAnimationByState('state');\n removeGraphicState(g, reverseState, hasAnimation);\n }\n });\n }\n\n protected toggleStateOfGraphics(\n trigger: ITrigger,\n newStatedGraphics: IMarkGraphic[],\n prevStatedGraphics: IMarkGraphic[],\n state: string\n ) {\n const markIdByState = trigger.getMarkIdByState();\n\n prevStatedGraphics.forEach(g => {\n const hasState = state && markIdByState[state] && markIdByState[state].includes(g.context.markId);\n\n if (hasState) {\n const m = g.parent?.mark;\n const hasAnimation = (m as any).hasAnimationByState && (m as any).hasAnimationByState('state');\n removeGraphicState(g, state, hasAnimation);\n }\n });\n\n newStatedGraphics.forEach(g => {\n const hasState = state && markIdByState[state] && markIdByState[state].includes(g.context.markId);\n if (hasState) {\n const m = g.parent?.mark;\n const hasAnimation = (m as any).hasAnimationByState && (m as any).hasAnimationByState('state');\n addGraphicState(g, state, true, hasAnimation);\n }\n });\n }\n\n protected addBothStateOfGraphics(\n trigger: ITrigger,\n statedGraphics: IMarkGraphic[],\n state: string,\n reverseState: string\n ) {\n const marks = trigger.getMarks();\n const markIdByState = trigger.getMarkIdByState();\n\n marks.forEach(m => {\n const hasReverse = reverseState && markIdByState[reverseState] && markIdByState[reverseState].includes(m.id);\n const hasState = state && markIdByState[state] && markIdByState[state].includes(m.id);\n\n if (!hasReverse && !hasState) {\n return;\n }\n\n const hasAnimation = (m as any).hasAnimationByState && (m as any).hasAnimationByState('state');\n m.getGraphics()?.forEach(g => {\n const isStated = statedGraphics && statedGraphics.includes(g);\n if (isStated) {\n if (hasState) {\n addGraphicState(g, state, true, hasAnimation);\n }\n } else {\n if (hasReverse) {\n addGraphicState(g, reverseState, true, hasAnimation);\n }\n }\n });\n });\n }\n\n protected addStateOfGraphics(trigger: ITrigger, statedGraphics: IMarkGraphic[], state: string) {\n const marks = trigger.getMarks();\n const markIdByState = trigger.getMarkIdByState();\n\n marks.forEach(mark => {\n const hasState = state && markIdByState[state] && markIdByState[state].includes(mark.id);\n\n if (!hasState) {\n return;\n }\n\n const hasAnimation = (mark as any).hasAnimationByState && (mark as any).hasAnimationByState('state');\n\n mark.getGraphics()?.forEach(g => {\n const isStated = statedGraphics && statedGraphics.includes(g);\n\n if (isStated) {\n if (hasState) {\n addGraphicState(g, state, true, hasAnimation);\n }\n }\n });\n });\n }\n\n clearAllStatesOfTrigger(trigger: ITrigger, state?: string, reverseState?: string) {\n if (this._disableTriggerEvent) {\n return;\n }\n\n const statedGraphics = this.getStatedGraphics(trigger);\n\n if (!statedGraphics || !statedGraphics.length) {\n return;\n }\n const marks = trigger.getMarks();\n const markIdByState = trigger.getMarkIdByState();\n\n marks.forEach(mark => {\n if (mark) {\n const graphics = mark.getGraphics();\n const hasAnimation = (mark as any).hasAnimationByState && (mark as any).hasAnimationByState('state');\n if (graphics && graphics.length) {\n if (reverseState && markIdByState[reverseState] && markIdByState[reverseState].includes(mark.id)) {\n graphics.forEach(g => {\n removeGraphicState(g, reverseState, hasAnimation);\n });\n }\n\n if (state && markIdByState[state] && markIdByState[state].includes(mark.id)) {\n graphics.forEach(g => {\n if (statedGraphics.includes(g)) {\n removeGraphicState(g, state, hasAnimation);\n }\n });\n }\n }\n }\n });\n }\n\n clearAllStates() {\n if (this._disableTriggerEvent) {\n return;\n }\n\n this._triggerMapByState.forEach((triggers, state) => {\n triggers.forEach(trigger => {\n this.clearAllStatesOfTrigger(trigger, state, trigger.getResetState());\n });\n });\n }\n\n clearByState(stateValue: string) {\n if (this._disableTriggerEvent) {\n return;\n }\n\n const triggers = this._triggerMapByState.get(stateValue);\n\n if (triggers && triggers.length) {\n triggers.forEach(t => {\n this.clearAllStatesOfTrigger(t, stateValue, t.getResetState());\n\n // 更新缓存\n this.setStatedGraphics(t, []);\n });\n }\n }\n\n updateStateOfGraphics(stateValue: string, markGraphics: IMarkGraphic[]) {\n if (this._disableTriggerEvent) {\n return;\n }\n const triggers = this._triggerMapByState.get(stateValue);\n\n if (triggers && triggers.length) {\n triggers.forEach(t => {\n const newStatedGraphics = markGraphics.filter(mg => {\n return t.getMarks().some(m => {\n const graphics = m && m.getGraphics();\n\n return graphics && graphics.includes(mg);\n });\n });\n\n this.updateStates(t, newStatedGraphics, this.getStatedGraphics(t), t.getStartState(), t.getResetState());\n\n this.setStatedGraphics(t, newStatedGraphics);\n });\n }\n }\n}\n"]}
|
|
@@ -10,6 +10,8 @@ import { generateFilterValue } from "./util";
|
|
|
10
10
|
|
|
11
11
|
import { STATE_VALUE_ENUM } from "../../compile/mark/interface";
|
|
12
12
|
|
|
13
|
+
import { removeGraphicState } from "../../util/graphic-state";
|
|
14
|
+
|
|
13
15
|
const type = "element-active-by-legend", defaultOptions = {
|
|
14
16
|
state: STATE_VALUE_ENUM.STATE_ACTIVE,
|
|
15
17
|
filterType: "groupKey"
|
|
@@ -55,7 +57,7 @@ export class ElementActiveByLegend extends BaseTrigger {
|
|
|
55
57
|
const {state: state, interaction: interaction} = this.options;
|
|
56
58
|
if (g) {
|
|
57
59
|
const statedGraphics = interaction.getStatedGraphics(this);
|
|
58
|
-
statedGraphics && statedGraphics.includes(g) && (g
|
|
60
|
+
statedGraphics && statedGraphics.includes(g) && (removeGraphicState(g, state), interaction.setStatedGraphics(this, statedGraphics.filter((sg => sg !== g))));
|
|
59
61
|
} else this.resetAll();
|
|
60
62
|
}
|
|
61
63
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/interaction/triggers/element-active-by-legend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAG7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"sources":["../src/interaction/triggers/element-active-by-legend.ts"],"names":[],"mappings":"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","file":"element-active-by-legend.js","sourcesContent":["import { Factory } from '../../core/factory';\nimport { BaseTrigger } from './base';\nimport type { IElementActiveByLegendOptions, ITrigger, ITriggerEventHandler } from '../interface/trigger';\nimport { ChartEvent } from '../../constant/event';\nimport { isNil } from '@visactor/vutils';\nimport { generateFilterValue } from './util';\nimport type { IMarkGraphic } from '../../mark/interface';\nimport type { BaseEventParams } from '../../core';\nimport { STATE_VALUE_ENUM } from '../../compile/mark/interface';\nimport { removeGraphicState } from '../../util/graphic-state';\n\nconst type = 'element-active-by-legend';\nconst defaultOptions: Partial<IElementActiveByLegendOptions> = {\n state: STATE_VALUE_ENUM.STATE_ACTIVE,\n filterType: 'groupKey'\n};\n\nexport class ElementActiveByLegend\n extends BaseTrigger<IElementActiveByLegendOptions>\n implements ITrigger<IElementActiveByLegendOptions>\n{\n static type: string = type;\n type: string = type;\n\n static defaultOptions = defaultOptions;\n\n constructor(options?: IElementActiveByLegendOptions) {\n super(options);\n this.options = Object.assign({}, defaultOptions, options);\n\n this.updateMarkIdByState([this.options.state]);\n }\n protected getEvents(): Array<{ type: string | string[]; handler: ITriggerEventHandler }> {\n return [\n {\n type: ChartEvent.legendItemHover,\n handler: this.handleStart\n },\n {\n type: ChartEvent.legendItemUnHover,\n handler: this.handleReset\n }\n ];\n }\n\n getStartState(): string {\n return this.options.state;\n }\n start(itemKey: string) {\n if (isNil(itemKey)) {\n return;\n }\n const { interaction, state } = this.options;\n const filterValue = generateFilterValue(this.options);\n const statedGraphics = interaction.getStatedGraphics(this);\n const newStatedGraphics: IMarkGraphic[] = [];\n\n this.getMarks().forEach(m => {\n m.getGraphics()?.forEach(g => {\n if (filterValue(g) === itemKey) {\n newStatedGraphics.push(g);\n }\n });\n });\n\n interaction.updateStates(this, newStatedGraphics, statedGraphics, state);\n interaction.setStatedGraphics(this, newStatedGraphics);\n }\n\n resetAll() {\n const { interaction, state } = this.options;\n\n interaction.clearAllStatesOfTrigger(this, state);\n\n interaction.setStatedGraphics(this, []);\n }\n\n reset(g?: IMarkGraphic) {\n const { state, interaction } = this.options;\n\n if (g) {\n const statedGraphics = interaction.getStatedGraphics(this);\n if (statedGraphics && statedGraphics.includes(g)) {\n removeGraphicState(g, state);\n interaction.setStatedGraphics(\n this,\n statedGraphics.filter(sg => sg !== g)\n );\n }\n } else {\n this.resetAll();\n }\n }\n\n handleStart = (e: BaseEventParams) => {\n const event = e.event;\n\n if (event) {\n this.start(event.detail?.data?.id);\n }\n };\n\n handleReset = (e: BaseEventParams) => {\n this.resetAll();\n };\n}\n\nexport const registerElementActiveByLegend = () => {\n Factory.registerInteractionTrigger(type, ElementActiveByLegend);\n};\n"]}
|
|
@@ -4,6 +4,8 @@ import { BaseTrigger } from "./base";
|
|
|
4
4
|
|
|
5
5
|
import { STATE_VALUE_ENUM } from "../../compile/mark/interface";
|
|
6
6
|
|
|
7
|
+
import { addGraphicState, removeGraphicState } from "../../util/graphic-state";
|
|
8
|
+
|
|
7
9
|
const defaultOptions = {
|
|
8
10
|
state: STATE_VALUE_ENUM.STATE_ACTIVE,
|
|
9
11
|
trigger: "pointerover",
|
|
@@ -33,12 +35,13 @@ export class ElementActive extends BaseTrigger {
|
|
|
33
35
|
start(g) {
|
|
34
36
|
if (g) {
|
|
35
37
|
const {state: state, interaction: interaction} = this.options;
|
|
36
|
-
this.isGraphicInStateMark(g, state) && (g
|
|
38
|
+
this.isGraphicInStateMark(g, state) && (addGraphicState(g, state, !0), interaction.setStatedGraphics(this, [ g ]));
|
|
37
39
|
}
|
|
38
40
|
}
|
|
39
41
|
reset(graphic) {
|
|
40
42
|
const {interaction: interaction, state: state} = this.options, statedGraphics = interaction.getStatedGraphics(this), g = null != graphic ? graphic : null == statedGraphics ? void 0 : statedGraphics[0];
|
|
41
|
-
g && statedGraphics.includes(g) && (g
|
|
43
|
+
g && (null == statedGraphics ? void 0 : statedGraphics.includes(g)) && (removeGraphicState(g, state),
|
|
44
|
+
interaction.setStatedGraphics(this, statedGraphics.filter((sg => sg !== g))));
|
|
42
45
|
}
|
|
43
46
|
}
|
|
44
47
|
|