@visactor/vchart 2.0.9 → 2.0.10-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/build/es5/index.js +1 -1
  2. package/build/index.es.js +269 -55
  3. package/build/index.js +269 -55
  4. package/build/index.min.js +2 -2
  5. package/build/tsconfig.tsbuildinfo +1 -1
  6. package/cjs/chart/box-plot/box-plot-transformer.js +1 -1
  7. package/cjs/chart/box-plot/box-plot-transformer.js.map +1 -1
  8. package/cjs/component/custom-mark/custom-mark.js +2 -2
  9. package/cjs/component/custom-mark/custom-mark.js.map +1 -1
  10. package/cjs/component/tooltip/utils/show-tooltip.js +3 -3
  11. package/cjs/component/tooltip/utils/show-tooltip.js.map +1 -1
  12. package/cjs/core/index.d.ts +1 -1
  13. package/cjs/core/index.js +1 -1
  14. package/cjs/core/index.js.map +1 -1
  15. package/cjs/mark/base/base-mark.d.ts +1 -1
  16. package/cjs/mark/base/base-mark.js +3 -3
  17. package/cjs/mark/base/base-mark.js.map +1 -1
  18. package/cjs/series/base/base-series.js +3 -3
  19. package/cjs/series/base/base-series.js.map +1 -1
  20. package/cjs/series/box-plot/box-plot.d.ts +3 -1
  21. package/cjs/series/box-plot/box-plot.js +54 -29
  22. package/cjs/series/box-plot/box-plot.js.map +1 -1
  23. package/cjs/series/box-plot/interface.d.ts +7 -2
  24. package/cjs/series/box-plot/interface.js.map +1 -1
  25. package/cjs/theme/token/builtin/default.js +1 -1
  26. package/cjs/theme/token/builtin/default.js.map +1 -1
  27. package/cjs/typings/visual.d.ts +3 -3
  28. package/cjs/typings/visual.js.map +1 -1
  29. package/esm/chart/box-plot/box-plot-transformer.js +1 -1
  30. package/esm/chart/box-plot/box-plot-transformer.js.map +1 -1
  31. package/esm/component/custom-mark/custom-mark.js +2 -2
  32. package/esm/component/custom-mark/custom-mark.js.map +1 -1
  33. package/esm/component/tooltip/utils/show-tooltip.js +3 -3
  34. package/esm/component/tooltip/utils/show-tooltip.js.map +1 -1
  35. package/esm/core/index.d.ts +1 -1
  36. package/esm/core/index.js +1 -1
  37. package/esm/core/index.js.map +1 -1
  38. package/esm/mark/base/base-mark.d.ts +1 -1
  39. package/esm/mark/base/base-mark.js +3 -3
  40. package/esm/mark/base/base-mark.js.map +1 -1
  41. package/esm/series/base/base-series.js +3 -3
  42. package/esm/series/base/base-series.js.map +1 -1
  43. package/esm/series/box-plot/box-plot.d.ts +3 -1
  44. package/esm/series/box-plot/box-plot.js +56 -29
  45. package/esm/series/box-plot/box-plot.js.map +1 -1
  46. package/esm/series/box-plot/interface.d.ts +7 -2
  47. package/esm/series/box-plot/interface.js.map +1 -1
  48. package/esm/theme/token/builtin/default.js +1 -1
  49. package/esm/theme/token/builtin/default.js.map +1 -1
  50. package/esm/typings/visual.d.ts +3 -3
  51. package/esm/typings/visual.js.map +1 -1
  52. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/series/base/base-series.ts"],"names":[],"mappings":"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","file":"base-series.js","sourcesContent":["import { ChartEvent } from '../../constant/event';\nimport {\n DEFAULT_DATA_KEY,\n DEFAULT_DATA_SERIES_FIELD,\n DEFAULT_SERIES_STYLE_NAME,\n STACK_FIELD_END,\n STACK_FIELD_END_PERCENT,\n STACK_FIELD_START,\n STACK_FIELD_START_PERCENT\n} from '../../constant/data';\nimport { AttributeLevel } from '../../constant/attribute';\nimport { PREFIX } from '../../constant/base';\nimport { DataView } from '@visactor/vdataset';\n// eslint-disable-next-line no-duplicate-imports\nimport type { DataSet, ITransformOptions } from '@visactor/vdataset';\nimport type { IRegion } from '../../region/interface';\nimport type { ICompileMarkConfig, IGroupMark, IMark, IMarkProgressiveConfig } from '../../mark/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { MarkTypeEnum } from '../../mark/interface/type';\nimport type {\n CoordinateType,\n IInvalidType,\n IPoint,\n DataKeyType,\n Datum,\n Maybe,\n ISeriesSpec,\n IExtensionMarkSpec,\n IExtensionGroupMarkSpec,\n EnableMarkType,\n IGroup,\n ILayoutType,\n ILayoutPoint,\n ILayoutRect\n} from '../../typings';\nimport { BaseModel } from '../../model/base-model';\n// eslint-disable-next-line no-duplicate-imports\nimport type {\n ISeriesOption,\n ISeries,\n ISeriesMarkInitOption,\n ISeriesStackData,\n ISeriesTooltipHelper,\n SeriesMarkMap,\n ISeriesMarkInfo,\n ISeriesSpecInfo,\n ISeriesStackDataLeaf,\n ISeriesStackDataNode,\n ISeriesStackDataMeta,\n ISeriesSeriesInfo\n} from '../interface';\nimport { dataToDataView, dataViewFromDataView, updateDataViewInData } from '../../data/initialize';\nimport { mergeFields, getFieldAlias } from '../../util/data';\nimport { couldBeValidNumber } from '../../util/type';\nimport { mergeSpec } from '@visactor/vutils-extension';\nimport type { IModelEvaluateOption, IModelRenderOption, IUpdateSpecResult } from '../../model/interface';\nimport type { AddVChartPropertyContext } from '../../data/transforms/add-property';\n// eslint-disable-next-line no-duplicate-imports\nimport { addVChartProperty } from '../../data/transforms/add-property';\nimport type { IBaseInteractionSpec, IHoverSpec, ISelectSpec } from '../../interaction/interface/spec';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport { BaseSeriesTooltipHelper } from './tooltip-helper';\n// eslint-disable-next-line no-duplicate-imports\nimport { dimensionStatistics, dimensionStatisticsOfSimpleData } from '../../data/transforms/dimension-statistics';\nimport { invalidTravel } from '../../data/transforms/invalid-travel';\nimport { getDataScheme } from '../../theme/color-scheme/util';\nimport { addDataKey, initKeyMap } from '../../data/transforms/data-key';\nimport type { IMarkConfig, ISeriesMarkAttributeContext } from '../../compile/mark';\n// eslint-disable-next-line no-duplicate-imports\nimport { STATE_VALUE_ENUM } from '../../compile/mark';\nimport {\n array,\n isEqual,\n isNil,\n isValid,\n isBoolean,\n isString,\n isFunction,\n isArray,\n isValidNumber,\n isObject,\n minInArray,\n maxInArray,\n merge\n} from '@visactor/vutils';\nimport { ColorOrdinalScale } from '../../scale/color-ordinal-scale';\nimport { baseSeriesMark, defaultSeriesIgnoreCheckKeys, defaultSeriesCompileCheckKeys } from './constant';\nimport { animationConfig, userAnimationConfig, isAnimationEnabledForSeries } from '../../animation/utils';\nimport { BaseSeriesSpecTransformer } from './base-series-transformer';\nimport { getDefaultInteractionConfigByMode } from '../../interaction/config';\nimport { LayoutZIndex } from '../../constant/layout';\nimport type { ILabelSpec } from '../../component/label/interface';\nimport type { StatisticOperations } from '../../data/transforms/interface';\nimport type { GraphicEventType } from '@visactor/vrender-core';\nimport type { ICompilableData } from '../../compile/data';\nimport { CompilableData } from '../../compile/data';\nimport { filterMarksOfInteraction } from '../../interaction/triggers/util';\nimport type { IBaseTriggerOptions } from '../../interaction/interface/trigger';\nimport { TRIGGER_TYPE_ENUM } from '../../interaction/triggers/enum';\n\nexport abstract class BaseSeries<T extends ISeriesSpec> extends BaseModel<T> implements ISeries {\n readonly specKey: string = 'series';\n readonly type: string = 'series';\n layoutType: ILayoutType = 'absolute';\n readonly modelType: string = 'series';\n readonly name: string | undefined = undefined;\n\n static readonly mark: SeriesMarkMap = baseSeriesMark;\n static readonly transformerConstructor = BaseSeriesSpecTransformer;\n readonly transformerConstructor = BaseSeriesSpecTransformer as any;\n\n declare getSpecInfo: () => ISeriesSpecInfo;\n\n protected declare _option: ISeriesOption;\n\n // 坐标系信息\n readonly coordinate: CoordinateType = 'none';\n\n // 区域\n protected _region: IRegion = null as unknown as IRegion;\n getRegion(): IRegion {\n return this._region;\n }\n\n private _layoutStartPoint: ILayoutPoint = {\n x: 0,\n y: 0\n };\n\n getLayoutStartPoint(): ILayoutPoint {\n return this._region.getLayoutStartPoint();\n }\n\n private _layoutRect: ILayoutRect = { width: null, height: null };\n\n getLayoutRect: () => ILayoutRect = () => {\n return {\n width: this._layoutRect.width ?? this._region.getLayoutRect().width,\n height: this._layoutRect.height ?? this._region.getLayoutRect().height\n };\n };\n\n /** 系列的根 mark */\n protected _rootMark: IGroupMark = null;\n getRootMark() {\n return this._rootMark;\n }\n\n /** series field 所作用的 mark */\n protected _seriesMark: Maybe<IMark> = null;\n getSeriesMark() {\n return this._seriesMark;\n }\n\n protected _layoutLevel!: number;\n\n /**\n * data\n * 数据节点\n * rawData 只进行 fields 相关能力,筛选+sort。\n * rawDataStatistics 的统计值是fields筛选后的。是符合预期的。\n * viewDatFilter 节点用来做组件等图表逻辑的数据筛选\n * viewData上不允许挂 filter\n * 数据更新流程一:重新做数据变换\n * viewData.reRunAllTransform()=>viewDataStatistics();\n * 数据更新流程二:图表逻辑更新,进行数据筛选\n * viewDatFilter.reRunAllTransform() => region.waitAllSeriesFilterOver()=>\n * viewData.reRunAllTransform()=>viewDataStatistics();\n * 数据更新流程三:用户更新数据\n * rawData().parse().rawDataStatistics()=>\n * viewDatFilter.reRunAllTransform() => region.waitAllSeriesFilterOver()=>\n * viewData.reRunAllTransform()=>viewDataStatistics();\n *\n * NEED-OPTIMIZATION:\n * 一:额外增加了 filter 节点,流程断开为2部分。只是因为堆积需要,因为 filter 和数据变换可以用排序解决。\n * 二:running tag 没有找到好办法消除。只是增加了一个易用 api 到 dataView 上\n */\n protected _rawData!: DataView;\n getRawData() {\n return this._rawData;\n }\n\n protected _rawDataStatistics?: DataView;\n protected _rawStatisticsCache: Record<string, { values?: any[]; min?: number; max?: number }>;\n\n protected _viewDataMap: Map<number, DataView> = new Map();\n\n // only add viewDataFilter when this._stack is true\n protected _viewDataFilter: DataView = null;\n\n getViewDataFilter() {\n return this._viewDataFilter;\n }\n\n // view data\n protected _data: ICompilableData = null;\n getViewData() {\n return this._data?.getDataView();\n }\n getViewDataProductId() {\n return this._data?.getProductId();\n }\n\n protected _viewDataStatistics!: DataView;\n getViewDataStatistics() {\n return this._viewDataStatistics;\n }\n protected _viewStackData!: DataView;\n getViewStackData() {\n return this._viewStackData;\n }\n\n protected _seriesField?: string;\n getSeriesField() {\n return this._seriesField;\n }\n setSeriesField(field: string) {\n if (isValid(field)) {\n this._seriesField = field;\n }\n }\n\n protected _groups?: IGroup;\n getGroups() {\n return this._groups;\n }\n\n getStack() {\n return this.getSpecInfo()?.stack;\n }\n\n getStackValue() {\n return this._spec.stackValue ?? `${PREFIX}_series_${this.type}`;\n }\n getPercent() {\n return this._spec.percent;\n }\n getStackOffsetSilhouette() {\n return this._spec.stackOffsetSilhouette;\n }\n protected _dataSet: DataSet;\n\n protected declare _tooltipHelper: ISeriesTooltipHelper | undefined;\n get tooltipHelper() {\n if (!this._tooltipHelper) {\n this.initTooltip();\n }\n\n return this._tooltipHelper;\n }\n\n layoutZIndex: number = LayoutZIndex.SeriesGroup;\n\n protected _invalidType: IInvalidType = 'break';\n getInvalidType() {\n return this._invalidType;\n }\n setInvalidType(t: IInvalidType) {\n this._invalidType = t;\n this.getViewData()?.reRunAllTransform();\n }\n\n protected _markAttributeContext: ISeriesMarkAttributeContext;\n getMarkAttributeContext() {\n return this._markAttributeContext;\n }\n\n constructor(spec: T, options: ISeriesOption) {\n super(spec, options);\n this._region = options.region;\n this._dataSet = options.dataSet;\n this._spec?.name && (this.name = this._spec.name);\n }\n\n created(): void {\n super.created();\n this._buildMarkAttributeContext();\n // data\n this.initData();\n this.initGroups();\n // 调整统计数据的创建时机,需要等待group创建完成\n this.initStatisticalData();\n this.event.emit(ChartEvent.afterInitData, { model: this });\n // mark\n this.initRootMark();\n this.initMark();\n const hasAnimation = isAnimationEnabledForSeries(this);\n\n this._initExtensionMark({ hasAnimation });\n\n this.initMarkStyle();\n this.initMarkState();\n if (hasAnimation) {\n this.initAnimation();\n this.initStageAnimation();\n }\n\n this.afterInitMark();\n\n // event\n this.initEvent();\n this.event.emit(ChartEvent.afterInitEvent, { model: this });\n }\n\n protected _buildMarkAttributeContext() {\n this._markAttributeContext = {\n vchart: this._option.globalInstance,\n globalScale: (key: string, value: string | number) => {\n return this._option.globalScale.getScale(key)?.scale(value);\n },\n seriesColor: (seriesValue: string | number) => {\n if (isNil(seriesValue)) {\n seriesValue = this.getSeriesKeys()[0];\n }\n return this._option.globalScale.getScale('color')?.scale(seriesValue);\n },\n getRegion: () => this._region\n };\n }\n\n /** 预处理spec信息 */\n setAttrFromSpec(): void {\n super.setAttrFromSpec();\n this.setSeriesField(this._spec.seriesField);\n if (isValid(this._spec.invalidType)) {\n this._invalidType = this._spec.invalidType;\n }\n }\n\n protected getInvalidCheckFields() {\n return [this.getStackValueField()];\n }\n\n protected initInvalidDataTransform(): void {\n // _invalidType 默认为 break/ignore,直接走图形层面的解析,不需要走 transform 数据处理逻辑\n if (this._invalidType === 'zero' && this._rawData?.dataSet) {\n registerDataSetInstanceTransform(this._rawData.dataSet, 'invalidTravel', invalidTravel);\n // make sure each series only transform once\n this._rawData?.transform(\n {\n type: 'invalidTravel',\n options: {\n config: () => {\n return {\n invalidType: this._invalidType,\n checkField: this.getInvalidCheckFields()\n };\n }\n }\n },\n false\n );\n }\n }\n\n /** data */\n protected initData(): void {\n const d = this._spec.data ?? this._option.getSeriesData(this._spec.dataId, this._spec.dataIndex);\n if (d) {\n this._rawData = dataToDataView(d, this._dataSet, this._option.sourceDataList);\n }\n this._rawData?.target?.addListener('change', this.rawDataUpdate.bind(this));\n this._addDataIndexAndKey();\n // 初始化viewData\n if (this._rawData) {\n if (this.getStack()) {\n // 初始化viewDataFilter\n this._viewDataFilter = dataViewFromDataView(this._rawData, this._dataSet, {\n name: `${this.type}_${this.id}_viewDataFilter`\n });\n }\n\n // 初始化viewData\n const viewData = dataViewFromDataView(this.getStack() ? this._viewDataFilter : this._rawData, this._dataSet, {\n name: `${this.type}_${this.id}_viewData`\n });\n this._data = new CompilableData(this._option, viewData);\n\n if (this.getStack()) {\n this._viewDataFilter.target.removeListener('change', viewData.reRunAllTransform);\n }\n }\n\n this.initInvalidDataTransform();\n }\n\n protected initGroups() {\n const groupFields = this.getGroupFields();\n if (groupFields && groupFields.length) {\n this._groups = { fields: groupFields };\n // this._data && this._groups.initData(this._data.getDataView(), this._dataSet);\n }\n }\n\n protected initStatisticalData(): void {\n if (this._data) {\n this._statisticViewData();\n }\n }\n\n getRawDataStatisticsByField(field: string, isNumeric?: boolean) {\n if (!this._rawStatisticsCache) {\n this._rawStatisticsCache = {};\n }\n\n if (\n !this._rawStatisticsCache[field] ||\n // 如果数值类型与当前的计算结果类型不一致的话,也需要把结果更新到cache中\n // 具体场景: field同时在axis中作为离散字段,在图例中作为连续字段,此时min、max、values都应该被计算并更新在cache中\n (isNumeric && (isNil(this._rawStatisticsCache[field].min) || isNil(this._rawStatisticsCache[field].max))) ||\n (!isNumeric && isNil(this._rawStatisticsCache[field].values))\n ) {\n const canUseViewStatistics =\n this._viewDataStatistics &&\n (!this._viewDataFilter || this._viewDataFilter.transformsArr.length <= 1) &&\n this.getViewData().transformsArr.length <= 1;\n\n if (canUseViewStatistics && this._viewDataStatistics.latestData?.[field]) {\n this._rawStatisticsCache[field] = this._viewDataStatistics.latestData[field];\n } else if (this._rawData) {\n // 如果有设置统计信息,应当与设置值保持一致\n const fieldInfo = this._rawData.getFields()?.[field];\n if (fieldInfo && fieldInfo.lockStatisticsByDomain && fieldInfo.domain) {\n this._rawStatisticsCache[field] = {};\n if (isNumeric) {\n this._rawStatisticsCache[field].min = minInArray(fieldInfo.domain);\n this._rawStatisticsCache[field].max = maxInArray(fieldInfo.domain);\n } else {\n this._rawStatisticsCache[field].values = fieldInfo.domain;\n }\n } else {\n const result = (\n dimensionStatisticsOfSimpleData(this._rawData.latestData as Datum[], [\n { key: field, operations: isNumeric ? ['min', 'max'] : ['values'] }\n ]) as any\n )[field];\n this._rawStatisticsCache[field] = merge(this._rawStatisticsCache[field] ?? {}, result);\n }\n }\n }\n\n return this._rawStatisticsCache[field];\n }\n\n protected _statisticViewData() {\n registerDataSetInstanceTransform(this._dataSet, 'dimensionStatistics', dimensionStatistics);\n const viewDataStatisticsName = `${this.type}_${this.id}_viewDataStatic`;\n this._viewDataStatistics = new DataView(this._dataSet, { name: viewDataStatisticsName });\n this._viewDataStatistics.parse([this._data.getDataView()], {\n type: 'dataview'\n });\n this._viewDataStatistics.transform(\n {\n type: 'dimensionStatistics',\n options: {\n fields: () => {\n const fields = this.getStatisticFields();\n if (this._seriesField) {\n mergeFields(fields, [\n {\n key: this._seriesField,\n operations: ['values']\n }\n ]);\n }\n return fields;\n },\n target: 'latest'\n }\n },\n false\n );\n\n this._data.getDataView().target.removeListener('change', this._viewDataStatistics.reRunAllTransform);\n if (this.getStack()) {\n this.createdStackData();\n }\n }\n\n protected createStatisticalData(\n dataName: string,\n rawData: DataView,\n staticFields?: (dataId: string) => {\n key: string;\n operations: StatisticOperations;\n }[]\n ) {\n registerDataSetInstanceTransform(this._dataSet, 'dimensionStatistics', dimensionStatistics);\n const data = new DataView(this._dataSet, { name: dataName });\n data.parse([rawData], {\n type: 'dataview'\n });\n // data.name = dataName;\n data.transform(\n {\n type: 'dimensionStatistics',\n options: {\n operations: ['max', 'min', 'values'],\n fields: () => {\n const fields = mergeFields(this.getStatisticFields(), staticFields?.(rawData.name as string) ?? []);\n if (this._seriesField) {\n mergeFields(fields, [\n {\n key: this._seriesField,\n operations: ['values']\n }\n ]);\n }\n\n return fields;\n },\n target: 'latest'\n }\n },\n false\n );\n return data;\n }\n\n // stack\n private createdStackData(): void {\n const dataName = `${this.type}_${this.id}_viewStackData`;\n this._viewStackData = new DataView(this._dataSet, { name: dataName });\n this._viewStackData.parse([this._viewDataFilter], {\n type: 'dataview'\n });\n this._viewStackData.transform(\n {\n type: 'stackSplit',\n options: {\n fields: this.getStackGroupFields()\n }\n },\n false\n );\n }\n\n // make sure this function fast\n protected _noAnimationDataKey(datum: Datum, index: number): unknown | undefined {\n return index;\n }\n\n protected generateDefaultDataKey(dataKey: DataKeyType) {\n if (isNil(dataKey)) {\n return (datum: Datum, index: number, context: AddVChartPropertyContext) => {\n // check if need animation data key\n if (this._spec.animation === false) {\n const v = this._noAnimationDataKey(datum, index);\n if (v !== undefined) {\n return v;\n }\n }\n const { keyMap } = context;\n const seriesDataKey = this._getSeriesDataKey(datum);\n if (keyMap.get(seriesDataKey) === undefined) {\n keyMap.set(seriesDataKey, 0);\n\n return seriesDataKey;\n }\n\n keyMap.set(seriesDataKey, keyMap.get(seriesDataKey) + 1);\n return `${seriesDataKey}_${keyMap.get(seriesDataKey)}`;\n };\n }\n\n if (isString(dataKey)) {\n return (datum: Datum) => datum[dataKey];\n }\n\n if (isArray(dataKey) && dataKey.every(d => isString(d))) {\n return (datum: Datum) => dataKey.map(k => datum[k]).join('-');\n }\n\n if (isFunction(dataKey)) {\n return (datum: Datum, index: number) => dataKey(datum, index);\n }\n\n this._option?.onError(`invalid dataKey: ${dataKey}`);\n return (datum: Datum, index: number) => undefined as string;\n }\n\n protected _addDataIndexAndKey() {\n if (this._rawData?.dataSet) {\n registerDataSetInstanceTransform(this._rawData.dataSet, 'addVChartProperty', addVChartProperty);\n this._rawData.transform(\n {\n type: 'addVChartProperty',\n options: {\n beforeCall: initKeyMap.bind(this),\n call: addDataKey\n }\n },\n false\n );\n }\n }\n\n updateRawData(d: any): void {\n if (!this._rawData) {\n return;\n }\n this._rawData.updateRawData(d);\n }\n rawDataUpdate(d: DataView): void {\n this._rawDataStatistics?.reRunAllTransform();\n this._rawStatisticsCache = null;\n this.event.emit(ChartEvent.rawDataUpdate, { model: this });\n }\n viewDataFilterOver(d: DataView): void {\n this.event.emit(ChartEvent.viewDataFilterOver, { model: this });\n }\n viewDataUpdate(d: DataView): void {\n this.event.emit(ChartEvent.viewDataUpdate, { model: this });\n // 依据数据更新设置渲染结果\n // 初始化时会触发 viewDataUpdate,但是此时 srView 还未生成,因此实际上不会产生多余的 updateData 调用\n this._data?.updateData();\n this._viewDataStatistics && this._viewDataStatistics.reRunAllTransform();\n }\n viewDataStatisticsUpdate(d: DataView): void {\n this.event.emit(ChartEvent.viewDataStatisticsUpdate, { model: this });\n }\n\n // 数据到位置值\n getDatumPositionValue(datum: Datum, field: string) {\n if (!datum || isNil(field)) {\n return null;\n }\n return datum[field];\n }\n getDatumPositionValues(datum: Datum, fields: string | string[]) {\n if (!datum || isNil(fields)) {\n return [];\n }\n\n if (isString(fields)) {\n return [datum[fields]];\n }\n return fields.map(f => datum[f]);\n }\n /** mark end */\n\n /** 获取参与统计的字段与统计类型 */\n abstract getStatisticFields(): {\n key: string;\n operations: StatisticOperations;\n }[];\n /** 获取分组字段 */\n abstract getGroupFields(): string[];\n /** 数据到坐标点的映射 */\n abstract dataToPosition(data: Datum, checkInViewData?: boolean): IPoint;\n /** 数据到 x 坐标点的映射 */\n abstract dataToPositionX(data: Datum): number;\n /** 数据到 y 坐标点的映射 */\n abstract dataToPositionY(data: Datum): number;\n /** 数据到坐标点的映射 */\n abstract valueToPosition(value1: any, value2?: any): IPoint;\n abstract initMark(): void;\n abstract initMarkStyle(): void;\n\n /** stack start */\n abstract getStackGroupFields(): string[];\n abstract getStackValueField(): string | undefined;\n setValueFieldToStack() {\n // do nothing\n }\n setValueFieldToPercent() {\n // do nothing;\n }\n setValueFieldToStackOffsetSilhouette() {\n // do nothing\n }\n\n /** 获取系列中可以被操作的mark(brush需要通过在图元spec中内置state的方式实现框选样式,所以需要获取可被框选的mark) */\n abstract getActiveMarks(): IMark[];\n\n initRootMark() {\n this._rootMark = this._createMark(\n { type: MarkTypeEnum.group, name: `seriesGroup_${this.type}_${this.id}` },\n {\n parent: this._region.getGroupMark?.(),\n dataView: false\n }\n ) as IGroupMark;\n this._rootMark.setMarkConfig({ zIndex: this._spec.zIndex ?? this.layoutZIndex });\n }\n\n private _getExtensionMarkNamePrefix() {\n return `${this.type}_${this.id}_extensionMark`;\n }\n\n protected _initExtensionMark(options: { hasAnimation: boolean }) {\n if (!this._spec.extensionMark) {\n return;\n }\n\n this._spec.extensionMark?.forEach((m, i) => {\n this._createExtensionMark(m, null, this._getExtensionMarkNamePrefix(), i, options);\n });\n }\n\n private _createExtensionMark(\n spec: IExtensionMarkSpec<Exclude<EnableMarkType, 'group'>> | IExtensionGroupMarkSpec,\n parentMark: null | IGroupMark,\n namePrefix: string,\n index: number,\n options: { hasAnimation: boolean }\n ) {\n const mark = this._createMark(\n { type: spec.type, name: isValid(spec.name) ? `${spec.name}` : `${namePrefix}_${index}` },\n {\n // 避免二次dataflow\n skipBeforeLayouted: true,\n markSpec: spec,\n parent: parentMark,\n dataView: false,\n componentType: spec.componentType,\n key: spec.dataKey\n }\n ) as IGroupMark;\n if (!mark) {\n return;\n }\n\n if (isValid(spec.id)) {\n mark.setUserId(spec.id);\n }\n\n if (options.hasAnimation) {\n // 自定义图元默认不添加动画\n const config = animationConfig({}, userAnimationConfig(spec.type, spec as any, this._markAttributeContext));\n mark.setAnimationConfig(config);\n }\n\n if (spec.type === 'group') {\n namePrefix = `${namePrefix}_${index}`;\n spec.children?.forEach((s, i) => {\n this._createExtensionMark(s as any, mark, namePrefix, i, options);\n });\n } else if (!parentMark && (!isNil(spec.dataId) || !isNil(spec.dataIndex))) {\n const dataView = this._option.getSeriesData(spec.dataId, spec.dataIndex);\n\n if (dataView === this._rawData) {\n mark.setData(this._data);\n } else {\n mark.setDataView(dataView);\n\n dataView.target.addListener('change', () => {\n mark.getData().updateData();\n });\n }\n }\n }\n\n protected _updateExtensionMarkSpec() {\n this._spec.extensionMark?.forEach((spec, i) => {\n const mark = this._marks.getMarkWithInfo({\n name: isValid(spec.name) ? `${spec.name}` : `${this._getExtensionMarkNamePrefix()}_${i}`\n });\n if (!mark) {\n return;\n }\n this.initMarkStyleWithSpec(mark, spec);\n mark.commit(false, true);\n });\n }\n\n getStackData(): ISeriesStackData {\n return this._viewStackData?.latestData;\n }\n /** stack end */\n\n /** mark */\n\n protected _parseDefaultInteractionConfig(mainMarks?: IMark[]) {\n if (!mainMarks?.length) {\n return [];\n }\n\n const defaultConfig = getDefaultInteractionConfigByMode(this._option.mode);\n let finalHoverSpec = { ...defaultConfig?.hover };\n let finalSelectSpec: ISelectSpec = { ...defaultConfig?.select };\n\n const hoverSpec = this._spec.hover;\n if (isBoolean(hoverSpec)) {\n finalHoverSpec.enable = hoverSpec as boolean;\n } else if (isObject(hoverSpec)) {\n finalHoverSpec.enable = true;\n finalHoverSpec = mergeSpec(finalHoverSpec, hoverSpec);\n }\n\n const selectSpec = this._spec.select;\n if (isBoolean(selectSpec)) {\n finalSelectSpec.enable = selectSpec as boolean;\n } else if (isObject(selectSpec)) {\n finalSelectSpec.enable = true;\n finalSelectSpec = mergeSpec(finalSelectSpec, selectSpec);\n }\n const res: { trigger: Partial<IBaseTriggerOptions>; marks: IMark[] }[] = [\n {\n trigger: {\n type: TRIGGER_TYPE_ENUM.DIMENSION_HOVER as string\n },\n marks: mainMarks\n }\n ];\n\n if (finalHoverSpec.enable) {\n const marks: IMark[] = filterMarksOfInteraction(finalHoverSpec as IBaseInteractionSpec, mainMarks);\n\n marks.length &&\n res.push({\n trigger: this._defaultHoverConfig(finalHoverSpec),\n marks\n });\n }\n\n if (finalSelectSpec.enable) {\n const marks: IMark[] = filterMarksOfInteraction(finalSelectSpec as IBaseInteractionSpec, mainMarks);\n\n marks.length &&\n res.push({\n trigger: this._defaultSelectConfig(finalSelectSpec) as Partial<IBaseTriggerOptions>,\n marks\n });\n }\n return res;\n }\n\n protected _defaultHoverConfig(finalHoverSpec: IHoverSpec) {\n return {\n type: TRIGGER_TYPE_ENUM.ELEMENT_HIGHLIGHT as string,\n trigger: finalHoverSpec.trigger as GraphicEventType,\n triggerOff: finalHoverSpec.triggerOff as GraphicEventType,\n blurState: STATE_VALUE_ENUM.STATE_HOVER_REVERSE,\n highlightState: STATE_VALUE_ENUM.STATE_HOVER\n };\n }\n\n protected _defaultSelectConfig(finalSelectSpec: ISelectSpec) {\n const isMultiple = finalSelectSpec.mode === 'multiple';\n const triggerOff = isValid(finalSelectSpec.triggerOff)\n ? finalSelectSpec.triggerOff\n : isMultiple\n ? ['empty']\n : ['empty', finalSelectSpec.trigger];\n return {\n type: TRIGGER_TYPE_ENUM.ELEMENT_SELECT as string,\n trigger: finalSelectSpec.trigger as GraphicEventType,\n triggerOff: triggerOff as GraphicEventType,\n reverseState: STATE_VALUE_ENUM.STATE_SELECTED_REVERSE,\n state: STATE_VALUE_ENUM.STATE_SELECTED,\n isMultiple\n };\n }\n\n protected _parseInteractionConfig(mainMarks?: IMark[]) {\n const { interactions } = this._spec;\n const res = this._parseDefaultInteractionConfig(mainMarks);\n\n if (interactions && interactions.length) {\n interactions.forEach(interaction => {\n const marks: IMark[] = filterMarksOfInteraction(interaction, this.getMarks());\n\n if (marks.length) {\n res.push({ trigger: interaction, marks });\n }\n });\n }\n\n return res;\n }\n\n getInteractionTriggers() {\n if (this._option.disableTriggerEvent !== true) {\n const marks = this.getMarksWithoutRoot();\n return this._parseInteractionConfig(marks);\n }\n\n return [];\n }\n\n initAnimation() {\n // do nothing\n }\n\n initStageAnimation() {\n const compiler = this._option.getCompiler();\n if (!compiler?.setStageAnimationConfig) {\n return;\n }\n compiler.setStageAnimationConfig(\n animationConfig(\n {}, // Factory.getAnimationInKey('stage')?.({}, null),\n userAnimationConfig('stage', this._spec as any, this._markAttributeContext),\n null\n )\n );\n }\n\n initMarkState() {\n this.initSeriesStyleState();\n }\n\n /**\n * 初始化initSeriesStyleState所对应的state,配置series-style数组会转化到state实现,每一个seriesItem都对应一个state\n * @returns\n */\n initSeriesStyleState() {\n const seriesStyle = this._spec.seriesStyle;\n if (!seriesStyle || !seriesStyle.length) {\n return;\n }\n const groupBy = this._seriesField ?? DEFAULT_DATA_SERIES_FIELD;\n this.getMarksWithoutRoot().forEach(mark => {\n const filterMap: { [key: string]: true } = {};\n const attrMap: { [key: string]: true } = {};\n const markStyle: { [key: string]: { [key: string]: any } } = {};\n seriesStyle.forEach(item => {\n const style = item[mark.name]?.style;\n if (style) {\n filterMap[item.name] = true;\n markStyle[item.name] = markStyle[item.name] || {};\n Object.keys(style).forEach(key => {\n attrMap[key] = true;\n markStyle[item.name][key] = style[key];\n });\n }\n });\n mark.state.addStateInfo({\n stateValue: DEFAULT_SERIES_STYLE_NAME,\n level: -1,\n filter: (datum: Datum) => {\n if (Array.isArray(datum)) {\n if (datum.length === 0) {\n return false;\n }\n return filterMap[datum[0][groupBy]] === true;\n }\n return filterMap[datum[groupBy]] === true;\n }\n });\n const style: Record<string, (datum: Datum) => any> = {};\n Object.keys(attrMap).forEach(key => {\n style[key] = (datum: Datum) => {\n let style;\n if (Array.isArray(datum)) {\n if (datum.length === 0) {\n return undefined;\n }\n style = markStyle[datum[0][groupBy]]?.[key];\n }\n style = markStyle[datum[groupBy]]?.[key];\n if (isValid(style)) {\n return style;\n }\n return mark.getAttribute(key as any, datum);\n };\n });\n this.setMarkStyle(mark, style, DEFAULT_SERIES_STYLE_NAME, AttributeLevel.User_SeriesStyle);\n });\n }\n\n afterInitMark(): void {\n this.event.emit(ChartEvent.afterInitMark, { model: this });\n this.setSeriesField(this._spec.seriesField);\n\n // set mark stroke color follow series color\n // only set normal state in the level lower than level Series\n this.getMarks().forEach(m => {\n if (m.stateStyle?.normal?.lineWidth) {\n m.setAttribute('stroke', this.getColorAttribute(), 'normal', AttributeLevel.Base_Series);\n }\n });\n }\n\n getMarksWithoutRoot(): IMark[] {\n return this.getMarks().filter(m => !m.name?.includes('seriesGroup'));\n }\n getMarksInType(type: string | string[]): IMark[] {\n return this._marks.getMarksInType(type);\n }\n getMarkInName(name: string): IMark | undefined {\n return this._marks.get(name);\n }\n getMarkInId(markId: number): IMark | undefined {\n return this.getMarks().find(m => m.id === markId);\n }\n /** mark end */\n\n /** event */\n protected initEvent() {\n this._data?.getDataView()?.target.addListener('change', this.viewDataUpdate.bind(this));\n this._viewDataStatistics?.target.addListener('change', this.viewDataStatisticsUpdate.bind(this));\n }\n\n protected _releaseEvent(): void {\n super._releaseEvent();\n // todo release interactions\n }\n\n /** event end */\n\n /** 初始化tooltip helper */\n protected initTooltip() {\n this._tooltipHelper = new BaseSeriesTooltipHelper(this);\n }\n\n _compareExtensionMarksSpec(\n newMarks: (IExtensionMarkSpec<Exclude<EnableMarkType, 'group'>> | IExtensionGroupMarkSpec)[],\n prevMarks: (IExtensionMarkSpec<Exclude<EnableMarkType, 'group'>> | IExtensionGroupMarkSpec)[],\n compareResult: IUpdateSpecResult\n ) {\n if (\n newMarks.length !== prevMarks.length ||\n prevMarks.some((prev, index) => {\n return (\n prev.type !== newMarks[index].type || prev.id !== newMarks[index].id || prev.name !== newMarks[index].name\n );\n })\n ) {\n compareResult.reMake = true;\n } else if (\n prevMarks.some((prev, index) => {\n return prev.visible !== newMarks[index].visible;\n })\n ) {\n compareResult.reCompile = true;\n }\n }\n\n _compareLabelSpec(newLabels: ILabelSpec[], prevLabels: ILabelSpec[], compareResult: IUpdateSpecResult) {\n if (\n newLabels.length !== prevLabels.length ||\n prevLabels.some((prev, index) => {\n return prev.labelLayout !== newLabels[index].labelLayout || prev.visible !== newLabels[index].visible;\n })\n ) {\n compareResult.reMake = true;\n } else if (\n !compareResult.reCompile &&\n prevLabels.some((prev, index) => {\n return !isEqual(prev, newLabels[index]);\n })\n ) {\n compareResult.reCompile = true;\n }\n }\n\n /** updateSpec */\n _compareSpec(spec: T, prevSpec: T, ignoreCheckKeys?: Record<string, boolean>) {\n const result = super._compareSpec(spec, prevSpec);\n\n const currentKeys = Object.keys(prevSpec || {}).sort();\n const nextKeys = Object.keys(spec || {}).sort();\n if (!isEqual(currentKeys, nextKeys)) {\n result.reMake = true;\n return result;\n }\n\n const ignores: Record<string, boolean> = {\n ...defaultSeriesIgnoreCheckKeys,\n ...defaultSeriesCompileCheckKeys,\n ...ignoreCheckKeys,\n extensionMark: true,\n label: true,\n totalLabel: true\n };\n\n this._compareExtensionMarksSpec(array((spec as any).extensionMark), array((prevSpec as any).extensionMark), result);\n // 比较label\n !result.reMake && this._compareLabelSpec(array((spec as any).label), array((prevSpec as any).label), result);\n // 比较totalLabel\n !result.reMake &&\n this._compareLabelSpec(array((spec as any).totalLabel), array((prevSpec as any).totalLabel), result);\n\n if (result.reMake) {\n return result;\n }\n\n // mark visible logic in compile\n if (\n !result.reCompile &&\n this._marks.getMarks().some(m => {\n (ignores as { [key: string]: true })[m.name] = true;\n return (prevSpec as any)[m.name]?.visible !== (spec as any)[m.name]?.visible;\n })\n ) {\n result.reCompile = true;\n }\n\n // check default compile keys\n if (\n !result.reCompile &&\n currentKeys.some((k: string) => {\n return defaultSeriesCompileCheckKeys[k] && !isEqual((spec as any)[k], (prevSpec as any)[k]);\n })\n ) {\n result.reCompile = true;\n }\n\n if (\n currentKeys.some((k: string) => {\n return !ignores[k] && !isEqual((spec as any)[k], (prevSpec as any)[k]);\n })\n ) {\n result.reMake = true;\n return result;\n }\n\n return result;\n }\n\n _updateSpecData() {\n if (this._rawData && this._spec.data && !(this._spec.data instanceof DataView)) {\n updateDataViewInData(this._rawData, this._spec.data, true);\n }\n }\n\n reInit(spec?: T) {\n super.reInit(spec);\n\n const marks = this.getMarksWithoutRoot();\n // FIXME: 合并 mark spec 的时机是否需要统一调整到 this.initMarkStyle() 中?\n marks.forEach(mark => {\n (this._spec as any)[mark.name] && this.initMarkStyleWithSpec(mark, (this._spec as any)[mark.name]);\n });\n this.initMarkStyle();\n marks.forEach(mark => {\n mark.commit(false);\n });\n this._updateExtensionMarkSpec();\n this._updateSpecData();\n\n if (this._tooltipHelper) {\n this._tooltipHelper.updateTooltipSpec();\n }\n\n // update animation config\n const hasAnimation = isAnimationEnabledForSeries(this);\n if (hasAnimation) {\n this.initAnimation();\n }\n }\n\n // 首次布局完成后填充系列数据\n onEvaluateEnd(ctx: IModelEvaluateOption): void {\n this._data.updateData();\n }\n\n release(): void {\n super.release();\n this._viewDataMap.clear();\n // TODO: rawData transform clear;\n // this._dataSet=>// _rawData.tag = vchart\n // clear add transforms of rawData\n const transformIndex = this._rawData?.transformsArr?.findIndex(t => t.type === 'addVChartProperty');\n if (transformIndex >= 0) {\n this._rawData.transformsArr.splice(transformIndex, 1);\n }\n this._dataSet =\n this._data =\n this._rawData =\n this._rawDataStatistics =\n this._spec =\n this._region =\n this._viewDataStatistics =\n this._viewStackData =\n null;\n }\n\n setLayoutStartPosition(pos: Partial<IPoint>): void {\n if (isValidNumber(pos.x)) {\n this._layoutStartPoint.x = pos.x;\n }\n if (isValidNumber(pos.y)) {\n this._layoutStartPoint.y = pos.y;\n }\n }\n\n setLayoutRect({ width, height }: Partial<ILayoutRect>, levelMap?: Partial<ILayoutRect>) {\n if (isValidNumber(width)) {\n this._layoutRect.width = width;\n }\n\n if (isValidNumber(height)) {\n this._layoutRect.height = height;\n }\n }\n\n /** seriesField */\n getSeriesKeys(): string[] {\n if (this._seriesField) {\n return this.getRawDataStatisticsByField(this._seriesField)?.values ?? [];\n }\n if (this.name) {\n return [this.name];\n }\n if (this.userId) {\n return [`${this.userId}`];\n }\n return [`${this.type}_${this.id}`];\n }\n\n getSeriesStyle(datum: Datum) {\n return (attribute: string) => this._seriesMark?.getAttribute(attribute as any, datum) ?? undefined;\n }\n\n protected _getSeriesInfo(field: string, keys: string[]) {\n const defaultShapeType = this.getDefaultShapeType();\n return keys.map(key => {\n return {\n key,\n originalKey: key,\n style: this.getSeriesStyle({\n [field]: key\n }),\n shapeType: defaultShapeType\n } as ISeriesSeriesInfo;\n });\n }\n\n getSeriesInfoInField(field: string) {\n return this._getSeriesInfo(field, this.getRawDataStatisticsByField(field)?.values ?? []);\n }\n\n getSeriesInfoList() {\n return this._getSeriesInfo(this._seriesField ?? DEFAULT_DATA_SERIES_FIELD, this.getSeriesKeys());\n }\n\n /** seriesField end */\n\n // get default color scale\n // 重复代码太多了,整合一下\n protected _getDefaultColorScale() {\n const colorDomain = this.getDefaultColorDomain();\n const colorRange = this._getDataScheme();\n return new ColorOrdinalScale().domain(colorDomain).range?.(colorRange);\n }\n\n protected _getDataScheme() {\n return getDataScheme(this.getColorScheme(), this.type as any);\n }\n\n /** 获取默认 color scale 的 domain */\n getDefaultColorDomain(): any[] {\n return this._seriesField ? this.getViewDataStatistics()?.latestData[this._seriesField]?.values : [];\n }\n\n // 通用的默认颜色映射 用户设置优先级比这个高,会在setStyle中处理\n getColorAttribute() {\n return {\n scale: this._option.globalScale.getScale('color') ?? this._getDefaultColorScale(),\n field: this._seriesField ?? DEFAULT_DATA_SERIES_FIELD\n };\n }\n\n /** 获取维度field */\n getDimensionField(): string[] {\n return [];\n }\n /** 获取指标field */\n getMeasureField(): string[] {\n return [];\n }\n\n // 用于 axisHelper 更新\n protected onMarkPositionUpdate(): void {\n this.onMarkTreePositionUpdate(this.getMarksWithoutRoot());\n }\n\n protected onMarkTreePositionUpdate(marks: IMark[]): void {\n // do nothing\n }\n\n protected _createMark<M extends IMark>(\n markInfo: ISeriesMarkInfo,\n option: ISeriesMarkInitOption = {},\n config: ICompileMarkConfig = {}\n ) {\n const {\n key,\n groupKey,\n skipBeforeLayouted,\n themeSpec = {},\n markSpec,\n dataView,\n parent,\n isSeriesMark,\n noSeparateStyle = false\n } = option;\n const m = super._createMark<M>(markInfo, {\n key: key ?? this._getDataIdKey(),\n seriesId: this.id,\n attributeContext: this._markAttributeContext,\n componentType: option.componentType,\n noSeparateStyle,\n parent: parent !== false ? parent ?? this._rootMark : null\n });\n\n if (isValid(m)) {\n const spec = this.getSpec() || ({} as T);\n this._marks.addMark(m, { name: markInfo.name });\n\n if (isSeriesMark) {\n this._seriesMark = m;\n }\n\n if (isNil(dataView)) {\n m.setData(this._data);\n } else if (dataView !== false) {\n m.setDataView(dataView);\n }\n\n m.setSkipBeforeLayouted(skipBeforeLayouted !== false);\n\n if (!isNil(groupKey)) {\n m.setGroupKey(groupKey);\n }\n\n const markConfig: IMarkConfig = {\n ...config,\n progressiveStep: (spec as IMarkProgressiveConfig).progressiveStep,\n progressiveThreshold: (spec as IMarkProgressiveConfig).progressiveThreshold,\n large: (spec as IMarkProgressiveConfig).large,\n largeThreshold: (spec as IMarkProgressiveConfig).largeThreshold,\n morph: config.morph ?? false,\n useSequentialAnimation: (spec as any).useSequentialAnimation,\n support3d: config.support3d ?? (spec.support3d || !!(spec as any).zField),\n morphKey: spec.morph?.morphKey || `${this.getSpecIndex()}_${this.getMarks().length}`,\n morphElementKey: spec.morph?.morphElementKey ?? config.morphElementKey\n };\n\n m.setMarkConfig(markConfig);\n\n this.initMarkStyleWithSpec(m, mergeSpec({}, themeSpec, markSpec || (spec as any)[m.name]));\n }\n return m;\n }\n\n protected _getDataIdKey() {\n // 系列图元默认使用 rawData 初始生成的唯一数据 id 作为 key\n return super._getDataIdKey() ?? DEFAULT_DATA_KEY;\n }\n\n /**\n * 默认数据 id 生成逻辑。\n * 数据中的 维度A的值_维度B的值_***_维度C的值_seriesField的值_index\n * index作用是为了避免 id 重复\n */\n protected _getSeriesDataKey(datum: Datum) {\n let key = '';\n if (!datum) {\n return key;\n }\n\n const dimensionFields = this.getDimensionField();\n key = dimensionFields.map(field => datum[field]).join('_');\n\n const seriesField = this.getSeriesField();\n\n if (seriesField && !dimensionFields.includes(seriesField)) {\n key += `_${datum[seriesField]}`;\n }\n\n return key;\n }\n\n /**\n * data\n */\n addViewDataFilter(option: ITransformOptions) {\n (this._viewDataFilter ?? this.getViewData())?.transform(option, false);\n }\n\n reFilterViewData() {\n (this._viewDataFilter ?? this.getViewData())?.reRunAllTransform();\n }\n\n reTransformViewData() {\n this._data?.getDataView()?.reRunAllTransform();\n }\n\n fillData() {\n this.getRawData()?.reRunAllTransform();\n }\n\n compile() {\n this.compileData(); // 系列只需要编译数据,mark 将在 region 编译过程中编译\n }\n\n getDefaultShapeType() {\n return 'circle';\n }\n\n getFieldAlias(field: string) {\n if (\n field === STACK_FIELD_END ||\n field === STACK_FIELD_END_PERCENT ||\n field === STACK_FIELD_START ||\n field === STACK_FIELD_START_PERCENT\n ) {\n field = this.getStackValueField();\n }\n return getFieldAlias(this.getRawData(), field) ?? field;\n }\n\n protected _getInvalidConnectType() {\n return this._invalidType === 'zero' ? 'zero' : this._invalidType === 'link' ? 'connect' : 'none';\n }\n\n protected _getInvalidDefined(datum: Datum) {\n const checkFields = this.getInvalidCheckFields();\n\n if (!checkFields.length) {\n return true;\n }\n\n return checkFields.every(field => {\n return couldBeValidNumber(datum[field]);\n });\n }\n\n protected _getRelatedComponentSpecInfo(specKey: string) {\n const specIndex = this.getSpecIndex();\n const relatedComponent = this._option\n .getSpecInfo()\n .component[specKey]?.filter(componentInfo => componentInfo.seriesIndexes.includes(specIndex));\n return relatedComponent ?? [];\n }\n\n protected _forEachStackGroup(callback: (node: ISeriesStackDataLeaf) => void, node?: ISeriesStackDataMeta) {\n node = node ?? this._viewStackData?.latestData;\n if (!node) {\n return;\n }\n\n if ((node as ISeriesStackDataLeaf).values?.length) {\n callback(node as ISeriesStackDataLeaf);\n } else if ((node as ISeriesStackDataNode).nodes) {\n Object.values((node as ISeriesStackDataNode).nodes).forEach(n => {\n this._forEachStackGroup(callback, n);\n });\n }\n }\n\n /** 判断 datum 是否在 viewData 中 */\n isDatumInViewData(datum: Datum) {\n if (!datum) {\n return false;\n }\n const viewDataList = this.getViewData().latestData;\n if (!viewDataList) {\n return false;\n }\n if (viewDataList.includes(datum)) {\n return true;\n }\n return viewDataList.some((viewDatum: Datum) => Object.keys(datum).every(key => datum[key] === viewDatum[key]));\n }\n\n getSeriesFieldValue(datum: Datum, seriesField?: string) {\n return datum[seriesField ?? this.getSeriesField() ?? DEFAULT_DATA_SERIES_FIELD];\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/series/base/base-series.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EACL,gBAAgB,EAChB,yBAAyB,EACzB,yBAAyB,EACzB,eAAe,EACf,uBAAuB,EACvB,iBAAiB,EACjB,yBAAyB,EAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAuB9C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAgBnD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AACnG,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAIvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAEvE,OAAO,EAAE,gCAAgC,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,OAAO,EAAE,mBAAmB,EAAE,+BAA+B,EAAE,MAAM,4CAA4C,CAAC;AAClH,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAGxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EACL,KAAK,EACL,OAAO,EACP,KAAK,EACL,OAAO,EACP,SAAS,EACT,QAAQ,EACR,UAAU,EACV,OAAO,EACP,aAAa,EACb,QAAQ,EACR,UAAU,EACV,UAAU,EACV,KAAK,EACN,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,4BAA4B,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAC;AACzG,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAC1G,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,iCAAiC,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAKrD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAI3E,MAAM,OAAgB,UAAkC,SAAQ,SAAY;IAoB1E,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAOD,mBAAmB;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAC5C,CAAC;IAaD,WAAW;QACT,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAID,aAAa;QACX,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IA0BD,UAAU;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAUD,iBAAiB;QACf,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAID,WAAW;;QACT,OAAO,MAAA,IAAI,CAAC,KAAK,0CAAE,WAAW,EAAE,CAAC;IACnC,CAAC;IACD,oBAAoB;;QAClB,OAAO,MAAA,IAAI,CAAC,KAAK,0CAAE,YAAY,EAAE,CAAC;IACpC,CAAC;IAGD,qBAAqB;QACnB,OAAO,IAAI,CAAC,mBAAmB,CAAC;IAClC,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAGD,cAAc;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IACD,cAAc,CAAC,KAAa;QAC1B,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;YAClB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;SAC3B;IACH,CAAC;IAGD,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,QAAQ;;QACN,OAAO,MAAA,IAAI,CAAC,WAAW,EAAE,0CAAE,KAAK,CAAC;IACnC,CAAC;IAED,aAAa;;QACX,OAAO,MAAA,IAAI,CAAC,KAAK,CAAC,UAAU,mCAAI,GAAG,MAAM,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC;IAClE,CAAC;IACD,UAAU;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;IAC5B,CAAC;IACD,wBAAwB;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC;IAC1C,CAAC;IAID,IAAI,aAAa;QACf,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;QAED,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAKD,cAAc;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IACD,cAAc,CAAC,CAAe;;QAC5B,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,MAAA,IAAI,CAAC,WAAW,EAAE,0CAAE,iBAAiB,EAAE,CAAC;IAC1C,CAAC;IAGD,uBAAuB;QACrB,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACpC,CAAC;IAED,YAAY,IAAO,EAAE,OAAsB;;QACzC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAvKd,YAAO,GAAW,QAAQ,CAAC;QAC3B,SAAI,GAAW,QAAQ,CAAC;QACjC,eAAU,GAAgB,UAAU,CAAC;QAC5B,cAAS,GAAW,QAAQ,CAAC;QAC7B,SAAI,GAAuB,SAAS,CAAC;QAIrC,2BAAsB,GAAG,yBAAgC,CAAC;QAO1D,eAAU,GAAmB,MAAM,CAAC;QAGnC,YAAO,GAAY,IAA0B,CAAC;QAKhD,sBAAiB,GAAiB;YACxC,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;SACL,CAAC;QAMM,gBAAW,GAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QAEjE,kBAAa,GAAsB,GAAG,EAAE;;YACtC,OAAO;gBACL,KAAK,EAAE,MAAA,IAAI,CAAC,WAAW,CAAC,KAAK,mCAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,KAAK;gBACnE,MAAM,EAAE,MAAA,IAAI,CAAC,WAAW,CAAC,MAAM,mCAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM;aACvE,CAAC;QACJ,CAAC,CAAC;QAGQ,cAAS,GAAe,IAAI,CAAC;QAM7B,gBAAW,GAAiB,IAAI,CAAC;QAoCjC,iBAAY,GAA0B,IAAI,GAAG,EAAE,CAAC;QAGhD,oBAAe,GAAa,IAAI,CAAC;QAOjC,UAAK,GAAoB,IAAI,CAAC;QAwDxC,iBAAY,GAAW,YAAY,CAAC,WAAW,CAAC;QAEtC,iBAAY,GAAiB,OAAO,CAAC;QAgB7C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;QAChC,CAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,IAAI,KAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,OAAO;QACL,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAElC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAE3D,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,MAAM,YAAY,GAAG,2BAA2B,CAAC,IAAI,CAAC,CAAC;QAEvD,IAAI,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;QAE1C,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,YAAY,EAAE;YAChB,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC3B;QAED,IAAI,CAAC,aAAa,EAAE,CAAC;QAGrB,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,CAAC;IAES,0BAA0B;QAClC,IAAI,CAAC,qBAAqB,GAAG;YAC3B,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc;YACnC,WAAW,EAAE,CAAC,GAAW,EAAE,KAAsB,EAAE,EAAE;;gBACnD,OAAO,MAAA,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,0CAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YAC9D,CAAC;YACD,WAAW,EAAE,CAAC,WAA4B,EAAE,EAAE;;gBAC5C,IAAI,KAAK,CAAC,WAAW,CAAC,EAAE;oBACtB,WAAW,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;iBACvC;gBACD,OAAO,MAAA,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,0CAAE,KAAK,CAAC,WAAW,CAAC,CAAC;YACxE,CAAC;YACD,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO;SAC9B,CAAC;IACJ,CAAC;IAGD,eAAe;QACb,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC5C,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;YACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;SAC5C;IACH,CAAC;IAES,qBAAqB;QAC7B,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACrC,CAAC;IAES,wBAAwB;;QAEhC,IAAI,IAAI,CAAC,YAAY,KAAK,MAAM,KAAI,MAAA,IAAI,CAAC,QAAQ,0CAAE,OAAO,CAAA,EAAE;YAC1D,gCAAgC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,eAAe,EAAE,aAAa,CAAC,CAAC;YAExF,MAAA,IAAI,CAAC,QAAQ,0CAAE,SAAS,CACtB;gBACE,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE;oBACP,MAAM,EAAE,GAAG,EAAE;wBACX,OAAO;4BACL,WAAW,EAAE,IAAI,CAAC,YAAY;4BAC9B,UAAU,EAAE,IAAI,CAAC,qBAAqB,EAAE;yBACzC,CAAC;oBACJ,CAAC;iBACF;aACF,EACD,KAAK,CACN,CAAC;SACH;IACH,CAAC;IAGS,QAAQ;;QAChB,MAAM,CAAC,GAAG,MAAA,IAAI,CAAC,KAAK,CAAC,IAAI,mCAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACjG,IAAI,CAAC,EAAE;YACL,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;SAC/E;QACD,MAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,MAAM,0CAAE,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;gBAEnB,IAAI,CAAC,eAAe,GAAG,oBAAoB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;oBACxE,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,iBAAiB;iBAC/C,CAAC,CAAC;aACJ;YAGD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;gBAC3G,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,WAAW;aACzC,CAAC,CAAC;YACH,IAAI,CAAC,KAAK,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAExD,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;gBACnB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC;aAClF;SACF;QAED,IAAI,CAAC,wBAAwB,EAAE,CAAC;IAClC,CAAC;IAES,UAAU;QAClB,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,EAAE;YACrC,IAAI,CAAC,OAAO,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;SAExC;IACH,CAAC;IAES,mBAAmB;QAC3B,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC3B;IACH,CAAC;IAED,2BAA2B,CAAC,KAAa,EAAE,SAAmB;;QAC5D,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC7B,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;SAC/B;QAED,IACE,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;YAGhC,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACzG,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,EAC7D;YACA,MAAM,oBAAoB,GACxB,IAAI,CAAC,mBAAmB;gBACxB,CAAC,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,CAAC;gBACzE,IAAI,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,CAAC;YAE/C,IAAI,oBAAoB,KAAI,MAAA,IAAI,CAAC,mBAAmB,CAAC,UAAU,0CAAG,KAAK,CAAC,CAAA,EAAE;gBACxE,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;aAC9E;iBAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAExB,MAAM,SAAS,GAAG,MAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,0CAAG,KAAK,CAAC,CAAC;gBACrD,IAAI,SAAS,IAAI,SAAS,CAAC,sBAAsB,IAAI,SAAS,CAAC,MAAM,EAAE;oBACrE,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;oBACrC,IAAI,SAAS,EAAE;wBACb,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;wBACnE,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;qBACpE;yBAAM;wBACL,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;qBAC3D;iBACF;qBAAM;oBACL,MAAM,MAAM,GACV,+BAA+B,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAqB,EAAE;wBACnE,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE;qBACpE,CACF,CAAC,KAAK,CAAC,CAAC;oBACT,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,mCAAI,EAAE,EAAE,MAAM,CAAC,CAAC;iBACxF;aACF;SACF;QAED,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAES,kBAAkB;QAC1B,gCAAgC,CAAC,IAAI,CAAC,QAAQ,EAAE,qBAAqB,EAAE,mBAAmB,CAAC,CAAC;QAC5F,MAAM,sBAAsB,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,iBAAiB,CAAC;QACxE,IAAI,CAAC,mBAAmB,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC,CAAC;QACzF,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE;YACzD,IAAI,EAAE,UAAU;SACjB,CAAC,CAAC;QACH,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAChC;YACE,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE;gBACP,MAAM,EAAE,GAAG,EAAE;oBACX,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;oBACzC,IAAI,IAAI,CAAC,YAAY,EAAE;wBACrB,WAAW,CAAC,MAAM,EAAE;4BAClB;gCACE,GAAG,EAAE,IAAI,CAAC,YAAY;gCACtB,UAAU,EAAE,CAAC,QAAQ,CAAC;6BACvB;yBACF,CAAC,CAAC;qBACJ;oBACD,OAAO,MAAM,CAAC;gBAChB,CAAC;gBACD,MAAM,EAAE,QAAQ;aACjB;SACF,EACD,KAAK,CACN,CAAC;QAEF,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;QACrG,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACzB;IACH,CAAC;IAES,qBAAqB,CAC7B,QAAgB,EAChB,OAAiB,EACjB,YAGG;QAEH,gCAAgC,CAAC,IAAI,CAAC,QAAQ,EAAE,qBAAqB,EAAE,mBAAmB,CAAC,CAAC;QAC5F,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE;YACpB,IAAI,EAAE,UAAU;SACjB,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,CACZ;YACE,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE;gBACP,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC;gBACpC,MAAM,EAAE,GAAG,EAAE;;oBACX,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAG,OAAO,CAAC,IAAc,CAAC,mCAAI,EAAE,CAAC,CAAC;oBACpG,IAAI,IAAI,CAAC,YAAY,EAAE;wBACrB,WAAW,CAAC,MAAM,EAAE;4BAClB;gCACE,GAAG,EAAE,IAAI,CAAC,YAAY;gCACtB,UAAU,EAAE,CAAC,QAAQ,CAAC;6BACvB;yBACF,CAAC,CAAC;qBACJ;oBAED,OAAO,MAAM,CAAC;gBAChB,CAAC;gBACD,MAAM,EAAE,QAAQ;aACjB;SACF,EACD,KAAK,CACN,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAGO,gBAAgB;QACtB,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,gBAAgB,CAAC;QACzD,IAAI,CAAC,cAAc,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;YAChD,IAAI,EAAE,UAAU;SACjB,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,SAAS,CAC3B;YACE,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE;gBACP,MAAM,EAAE,IAAI,CAAC,mBAAmB,EAAE;aACnC;SACF,EACD,KAAK,CACN,CAAC;IACJ,CAAC;IAGS,mBAAmB,CAAC,KAAY,EAAE,KAAa;QACvD,OAAO,KAAK,CAAC;IACf,CAAC;IAES,sBAAsB,CAAC,OAAoB;;QACnD,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE;YAClB,OAAO,CAAC,KAAY,EAAE,KAAa,EAAE,OAAiC,EAAE,EAAE;gBAExE,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,KAAK,EAAE;oBAClC,MAAM,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;oBACjD,IAAI,CAAC,KAAK,SAAS,EAAE;wBACnB,OAAO,CAAC,CAAC;qBACV;iBACF;gBACD,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;gBAC3B,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;gBACpD,IAAI,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,SAAS,EAAE;oBAC3C,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;oBAE7B,OAAO,aAAa,CAAC;iBACtB;gBAED,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;gBACzD,OAAO,GAAG,aAAa,IAAI,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;YACzD,CAAC,CAAC;SACH;QAED,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE;YACrB,OAAO,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SACzC;QAED,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACvD,OAAO,CAAC,KAAY,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC/D;QAED,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE;YACvB,OAAO,CAAC,KAAY,EAAE,KAAa,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SAC/D;QAED,MAAA,IAAI,CAAC,OAAO,0CAAE,OAAO,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;QACrD,OAAO,CAAC,KAAY,EAAE,KAAa,EAAE,EAAE,CAAC,SAAmB,CAAC;IAC9D,CAAC;IAES,mBAAmB;;QAC3B,IAAI,MAAA,IAAI,CAAC,QAAQ,0CAAE,OAAO,EAAE;YAC1B,gCAAgC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;YAChG,IAAI,CAAC,QAAQ,CAAC,SAAS,CACrB;gBACE,IAAI,EAAE,mBAAmB;gBACzB,OAAO,EAAE;oBACP,UAAU,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;oBACjC,IAAI,EAAE,UAAU;iBACjB;aACF,EACD,KAAK,CACN,CAAC;SACH;IACH,CAAC;IAED,aAAa,CAAC,CAAM;QAClB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,OAAO;SACR;QACD,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;IACD,aAAa,CAAC,CAAW;;QACvB,MAAA,IAAI,CAAC,kBAAkB,0CAAE,iBAAiB,EAAE,CAAC;QAC7C,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,kBAAkB,CAAC,CAAW;QAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,cAAc,CAAC,CAAW;;QACxB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAG5D,MAAA,IAAI,CAAC,KAAK,0CAAE,UAAU,EAAE,CAAC;QACzB,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,CAAC;IAC3E,CAAC;IACD,wBAAwB,CAAC,CAAW;QAClC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,wBAAwB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACxE,CAAC;IAGD,qBAAqB,CAAC,KAAY,EAAE,KAAa;QAC/C,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;YAC1B,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IACD,sBAAsB,CAAC,KAAY,EAAE,MAAyB;QAC5D,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;YAC3B,OAAO,EAAE,CAAC;SACX;QAED,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;YACpB,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;SACxB;QACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IAwBD,oBAAoB;IAEpB,CAAC;IACD,sBAAsB;IAEtB,CAAC;IACD,oCAAoC;IAEpC,CAAC;IAKD,YAAY;;QACV,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAC/B,EAAE,IAAI,SAAoB,EAAE,IAAI,EAAE,eAAe,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE,EAAE,EACzE;YACE,MAAM,EAAE,MAAA,MAAA,IAAI,CAAC,OAAO,EAAC,YAAY,kDAAI;YACrC,QAAQ,EAAE,KAAK;SAChB,CACY,CAAC;QAChB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,MAAA,IAAI,CAAC,KAAK,CAAC,MAAM,mCAAI,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IACnF,CAAC;IAEO,2BAA2B;QACjC,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACjD,CAAC;IAES,kBAAkB,CAAC,OAAkC;;QAC7D,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;YAC7B,OAAO;SACR;QAED,MAAA,IAAI,CAAC,KAAK,CAAC,aAAa,0CAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACzC,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,2BAA2B,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;QACrF,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,oBAAoB,CAC1B,IAAoF,EACpF,UAA6B,EAC7B,UAAkB,EAClB,KAAa,EACb,OAAkC;;QAElC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAC3B,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,UAAU,IAAI,KAAK,EAAE,EAAE,EACzF;YAEE,kBAAkB,EAAE,IAAI;YACxB,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,UAAU;YAClB,QAAQ,EAAE,KAAK;YACf,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,GAAG,EAAE,IAAI,CAAC,OAAO;SAClB,CACY,CAAC;QAChB,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;SACR;QAED,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YACpB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACzB;QAED,IAAI,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;YAEpD,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,EAAE,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAW,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;YAC5G,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;SACjC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;YACzB,UAAU,GAAG,GAAG,UAAU,IAAI,KAAK,EAAE,CAAC;YACtC,MAAA,IAAI,CAAC,QAAQ,0CAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC9B,IAAI,CAAC,oBAAoB,CAAC,CAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;YACpE,CAAC,CAAC,CAAC;SACJ;QAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAEzE,IAAI,QAAQ,KAAK,IAAI,CAAC,QAAQ,EAAE;gBAC9B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;iBAAM;gBACL,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBAE3B,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAE;oBACzC,IAAI,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE,CAAC;gBAC9B,CAAC,CAAC,CAAC;aACJ;SACF;IACH,CAAC;IAES,wBAAwB;;QAChC,MAAA,IAAI,CAAC,KAAK,CAAC,aAAa,0CAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;gBACvC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,2BAA2B,EAAE,IAAI,CAAC,EAAE;aACzF,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,EAAE;gBACT,OAAO;aACR;YACD,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,YAAY;;QACV,OAAO,MAAA,IAAI,CAAC,cAAc,0CAAE,UAAU,CAAC;IACzC,CAAC;IAKS,8BAA8B,CAAC,SAAmB;QAC1D,IAAI,CAAC,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,CAAA,EAAE;YACtB,OAAO,EAAE,CAAC;SACX;QAED,MAAM,aAAa,GAAG,iCAAiC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3E,IAAI,cAAc,qBAAQ,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,KAAK,CAAE,CAAC;QACjD,IAAI,eAAe,qBAAqB,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,MAAM,CAAE,CAAC;QAEhE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QACnC,IAAI,SAAS,CAAC,SAAS,CAAC,EAAE;YACxB,cAAc,CAAC,MAAM,GAAG,SAAoB,CAAC;SAC9C;aAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE;YAC9B,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC;YAC7B,cAAc,GAAG,SAAS,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;SACvD;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QACrC,IAAI,SAAS,CAAC,UAAU,CAAC,EAAE;YACzB,eAAe,CAAC,MAAM,GAAG,UAAqB,CAAC;SAChD;aAAM,IAAI,QAAQ,CAAC,UAAU,CAAC,EAAE;YAC/B,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC;YAC9B,eAAe,GAAG,SAAS,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;SAC1D;QACD,MAAM,GAAG,GAAgE;YACvE;gBACE,OAAO,EAAE;oBACP,IAAI,EAAE,iBAA2C;iBAClD;gBACD,KAAK,EAAE,SAAS;aACjB;SACF,CAAC;QAEF,IAAI,cAAc,CAAC,MAAM,EAAE;YACzB,MAAM,KAAK,GAAY,wBAAwB,CAAC,cAAsC,EAAE,SAAS,CAAC,CAAC;YAEnG,KAAK,CAAC,MAAM;gBACV,GAAG,CAAC,IAAI,CAAC;oBACP,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC;oBACjD,KAAK;iBACN,CAAC,CAAC;SACN;QAED,IAAI,eAAe,CAAC,MAAM,EAAE;YAC1B,MAAM,KAAK,GAAY,wBAAwB,CAAC,eAAuC,EAAE,SAAS,CAAC,CAAC;YAEpG,KAAK,CAAC,MAAM;gBACV,GAAG,CAAC,IAAI,CAAC;oBACP,OAAO,EAAE,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAiC;oBACnF,KAAK;iBACN,CAAC,CAAC;SACN;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAES,mBAAmB,CAAC,cAA0B;QACtD,OAAO;YACL,IAAI,EAAE,mBAA6C;YACnD,OAAO,EAAE,cAAc,CAAC,OAA2B;YACnD,UAAU,EAAE,cAAc,CAAC,UAA8B;YACzD,SAAS,EAAE,gBAAgB,CAAC,mBAAmB;YAC/C,cAAc,EAAE,gBAAgB,CAAC,WAAW;SAC7C,CAAC;IACJ,CAAC;IAES,oBAAoB,CAAC,eAA4B;QACzD,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,KAAK,UAAU,CAAC;QACvD,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC;YACpD,CAAC,CAAC,eAAe,CAAC,UAAU;YAC5B,CAAC,CAAC,UAAU;gBACZ,CAAC,CAAC,CAAC,OAAO,CAAC;gBACX,CAAC,CAAC,CAAC,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;QACvC,OAAO;YACL,IAAI,EAAE,gBAA0C;YAChD,OAAO,EAAE,eAAe,CAAC,OAA2B;YACpD,UAAU,EAAE,UAA8B;YAC1C,YAAY,EAAE,gBAAgB,CAAC,sBAAsB;YACrD,KAAK,EAAE,gBAAgB,CAAC,cAAc;YACtC,UAAU;SACX,CAAC;IACJ,CAAC;IAES,uBAAuB,CAAC,SAAmB;QACnD,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,8BAA8B,CAAC,SAAS,CAAC,CAAC;QAE3D,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,EAAE;YACvC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;gBACjC,MAAM,KAAK,GAAY,wBAAwB,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAE9E,IAAI,KAAK,CAAC,MAAM,EAAE;oBAChB,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;iBAC3C;YACH,CAAC,CAAC,CAAC;SACJ;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAED,sBAAsB;QACpB,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,KAAK,IAAI,EAAE;YAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzC,OAAO,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;SAC5C;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,aAAa;IAEb,CAAC;IAED,kBAAkB;QAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAC5C,IAAI,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,uBAAuB,CAAA,EAAE;YACtC,OAAO;SACR;QACD,QAAQ,CAAC,uBAAuB,CAC9B,eAAe,CACb,EAAE,EACF,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,KAAY,EAAE,IAAI,CAAC,qBAAqB,CAAC,EAC3E,IAAI,CACL,CACF,CAAC;IACJ,CAAC;IAED,aAAa;QACX,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAMD,oBAAoB;;QAClB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;QAC3C,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACvC,OAAO;SACR;QACD,MAAM,OAAO,GAAG,MAAA,IAAI,CAAC,YAAY,mCAAI,yBAAyB,CAAC;QAC/D,IAAI,CAAC,mBAAmB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACxC,MAAM,SAAS,GAA4B,EAAE,CAAC;YAC9C,MAAM,OAAO,GAA4B,EAAE,CAAC;YAC5C,MAAM,SAAS,GAA8C,EAAE,CAAC;YAChE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;;gBACzB,MAAM,KAAK,GAAG,MAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,0CAAE,KAAK,CAAC;gBACrC,IAAI,KAAK,EAAE;oBACT,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;oBAC5B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;oBAClD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;wBAC/B,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;wBACpB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;oBACzC,CAAC,CAAC,CAAC;iBACJ;YACH,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;gBACtB,UAAU,EAAE,yBAAyB;gBACrC,KAAK,EAAE,CAAC,CAAC;gBACT,MAAM,EAAE,CAAC,KAAY,EAAE,EAAE;oBACvB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;wBACxB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;4BACtB,OAAO,KAAK,CAAC;yBACd;wBACD,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,CAAC;qBAC9C;oBACD,OAAO,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,CAAC;gBAC5C,CAAC;aACF,CAAC,CAAC;YACH,MAAM,KAAK,GAA0C,EAAE,CAAC;YACxD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACjC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAY,EAAE,EAAE;;oBAC5B,IAAI,KAAK,CAAC;oBACV,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;wBACxB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;4BACtB,OAAO,SAAS,CAAC;yBAClB;wBACD,KAAK,GAAG,MAAA,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,0CAAG,GAAG,CAAC,CAAC;qBAC7C;oBACD,KAAK,GAAG,MAAA,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,0CAAG,GAAG,CAAC,CAAC;oBACzC,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;wBAClB,OAAO,KAAK,CAAC;qBACd;oBACD,OAAO,IAAI,CAAC,YAAY,CAAC,GAAU,EAAE,KAAK,CAAC,CAAC;gBAC9C,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,yBAAyB,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAC;QAC7F,CAAC,CAAC,CAAC;IACL,CAAC;IAED,aAAa;QACX,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAI5C,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;;YAC1B,IAAI,MAAA,MAAA,CAAC,CAAC,UAAU,0CAAE,MAAM,0CAAE,SAAS,EAAE;gBACnC,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;aAC1F;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,mBAAmB;QACjB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,WAAC,OAAA,CAAC,CAAA,MAAA,CAAC,CAAC,IAAI,0CAAE,QAAQ,CAAC,aAAa,CAAC,CAAA,CAAA,EAAA,CAAC,CAAC;IACvE,CAAC;IACD,cAAc,CAAC,IAAuB;QACpC,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IACD,aAAa,CAAC,IAAY;QACxB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IACD,WAAW,CAAC,MAAc;QACxB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;IACpD,CAAC;IAIS,SAAS;;QACjB,MAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,WAAW,EAAE,0CAAE,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACxF,MAAA,IAAI,CAAC,mBAAmB,0CAAE,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACnG,CAAC;IAES,aAAa;QACrB,KAAK,CAAC,aAAa,EAAE,CAAC;IAExB,CAAC;IAKS,WAAW;QACnB,IAAI,CAAC,cAAc,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC;IAED,0BAA0B,CACxB,QAA4F,EAC5F,SAA6F,EAC7F,aAAgC;QAEhC,IACE,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM;YACpC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBAC7B,OAAO,CACL,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAC3G,CAAC;YACJ,CAAC,CAAC,EACF;YACA,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC;SAC7B;aAAM,IACL,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC7B,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;QAClD,CAAC,CAAC,EACF;YACA,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC;SAChC;IACH,CAAC;IAED,iBAAiB,CAAC,SAAuB,EAAE,UAAwB,EAAE,aAAgC;QACnG,IACE,SAAS,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM;YACtC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBAC9B,OAAO,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;YACxG,CAAC,CAAC,EACF;YACA,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC;SAC7B;aAAM,IACL,CAAC,aAAa,CAAC,SAAS;YACxB,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBAC9B,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,EACF;YACA,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC;SAChC;IACH,CAAC;IAGD,YAAY,CAAC,IAAO,EAAE,QAAW,EAAE,eAAyC;QAC1E,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAElD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACvD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAChD,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE;YACnC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;YACrB,OAAO,MAAM,CAAC;SACf;QAED,MAAM,OAAO,+DACR,4BAA4B,GAC5B,6BAA6B,GAC7B,eAAe,KAClB,aAAa,EAAE,IAAI,EACnB,KAAK,EAAE,IAAI,EACX,UAAU,EAAE,IAAI,GACjB,CAAC;QAEF,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAE,IAAY,CAAC,aAAa,CAAC,EAAE,KAAK,CAAE,QAAgB,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;QAEpH,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAE,IAAY,CAAC,KAAK,CAAC,EAAE,KAAK,CAAE,QAAgB,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;QAE7G,CAAC,MAAM,CAAC,MAAM;YACZ,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAE,IAAY,CAAC,UAAU,CAAC,EAAE,KAAK,CAAE,QAAgB,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC;QAEvG,IAAI,MAAM,CAAC,MAAM,EAAE;YACjB,OAAO,MAAM,CAAC;SACf;QAGD,IACE,CAAC,MAAM,CAAC,SAAS;YACjB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;;gBAC7B,OAAmC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;gBACpD,OAAO,CAAA,MAAC,QAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,0CAAE,OAAO,OAAK,MAAC,IAAY,CAAC,CAAC,CAAC,IAAI,CAAC,0CAAE,OAAO,CAAA,CAAC;YAC/E,CAAC,CAAC,EACF;YACA,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;SACzB;QAGD,IACE,CAAC,MAAM,CAAC,SAAS;YACjB,WAAW,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE;gBAC7B,OAAO,6BAA6B,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAE,IAAY,CAAC,CAAC,CAAC,EAAG,QAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9F,CAAC,CAAC,EACF;YACA,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;SACzB;QAED,IACE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE;YAC7B,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAE,IAAY,CAAC,CAAC,CAAC,EAAG,QAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,CAAC,CAAC,EACF;YACA,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;YACrB,OAAO,MAAM,CAAC;SACf;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,eAAe;QACb,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,YAAY,QAAQ,CAAC,EAAE;YAC9E,oBAAoB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SAC5D;IACH,CAAC;IAED,MAAM,CAAC,IAAQ;QACb,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEnB,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAEzC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAClB,IAAI,CAAC,KAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAG,IAAI,CAAC,KAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACrG,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACnB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;SACzC;QAGD,MAAM,YAAY,GAAG,2BAA2B,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,YAAY,EAAE;YAChB,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB;IACH,CAAC;IAGD,aAAa,CAAC,GAAyB;QACrC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;IAC1B,CAAC;IAED,OAAO;;QACL,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAI1B,MAAM,cAAc,GAAG,MAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,aAAa,0CAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,mBAAmB,CAAC,CAAC;QACpG,IAAI,cAAc,IAAI,CAAC,EAAE;YACvB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;SACvD;QACD,IAAI,CAAC,QAAQ;YACX,IAAI,CAAC,KAAK;gBACV,IAAI,CAAC,QAAQ;oBACb,IAAI,CAAC,kBAAkB;wBACvB,IAAI,CAAC,KAAK;4BACV,IAAI,CAAC,OAAO;gCACZ,IAAI,CAAC,mBAAmB;oCACxB,IAAI,CAAC,cAAc;wCACjB,IAAI,CAAC;IACX,CAAC;IAED,sBAAsB,CAAC,GAAoB;QACzC,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACxB,IAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;SAClC;QACD,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACxB,IAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;SAClC;IACH,CAAC;IAED,aAAa,CAAC,EAAE,KAAK,EAAE,MAAM,EAAwB,EAAE,QAA+B;QACpF,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE;YACxB,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC;SAChC;QAED,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE;YACzB,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC;SAClC;IACH,CAAC;IAGD,aAAa;;QACX,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,OAAO,MAAA,MAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,YAAY,CAAC,0CAAE,MAAM,mCAAI,EAAE,CAAC;SAC1E;QACD,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACpB;QACD,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;SAC3B;QACD,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,cAAc,CAAC,KAAY;QACzB,OAAO,CAAC,SAAiB,EAAE,EAAE,eAAC,OAAA,MAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,YAAY,CAAC,SAAgB,EAAE,KAAK,CAAC,mCAAI,SAAS,CAAA,EAAA,CAAC;IACrG,CAAC;IAES,cAAc,CAAC,KAAa,EAAE,IAAc;QACpD,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACpD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACpB,OAAO;gBACL,GAAG;gBACH,WAAW,EAAE,GAAG;gBAChB,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC;oBACzB,CAAC,KAAK,CAAC,EAAE,GAAG;iBACb,CAAC;gBACF,SAAS,EAAE,gBAAgB;aACP,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,oBAAoB,CAAC,KAAa;;QAChC,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,MAAA,MAAA,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,0CAAE,MAAM,mCAAI,EAAE,CAAC,CAAC;IAC3F,CAAC;IAED,iBAAiB;;QACf,OAAO,IAAI,CAAC,cAAc,CAAC,MAAA,IAAI,CAAC,YAAY,mCAAI,yBAAyB,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IACnG,CAAC;IAMS,qBAAqB;;QAC7B,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACzC,OAAO,MAAA,MAAA,IAAI,iBAAiB,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,EAAC,KAAK,mDAAG,UAAU,CAAC,CAAC;IACzE,CAAC;IAES,cAAc;QACtB,OAAO,aAAa,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,IAAW,CAAC,CAAC;IAChE,CAAC;IAGD,qBAAqB;;QACnB,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,MAAA,MAAA,IAAI,CAAC,qBAAqB,EAAE,0CAAE,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,0CAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACtG,CAAC;IAGD,iBAAiB;;QACf,OAAO;YACL,KAAK,EAAE,MAAA,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,mCAAI,IAAI,CAAC,qBAAqB,EAAE;YACjF,KAAK,EAAE,MAAA,IAAI,CAAC,YAAY,mCAAI,yBAAyB;SACtD,CAAC;IACJ,CAAC;IAGD,iBAAiB;QACf,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,eAAe;QACb,OAAO,EAAE,CAAC;IACZ,CAAC;IAGS,oBAAoB;QAC5B,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC5D,CAAC;IAES,wBAAwB,CAAC,KAAc;IAEjD,CAAC;IAES,WAAW,CACnB,QAAyB,EACzB,SAAgC,EAAE,EAClC,SAA6B,EAAE;;QAE/B,MAAM,EACJ,GAAG,EACH,QAAQ,EACR,kBAAkB,EAClB,SAAS,GAAG,EAAE,EACd,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,eAAe,GAAG,KAAK,EACxB,GAAG,MAAM,CAAC;QACX,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,CAAI,QAAQ,EAAE;YACvC,GAAG,EAAE,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,IAAI,CAAC,aAAa,EAAE;YAChC,QAAQ,EAAE,IAAI,CAAC,EAAE;YACjB,gBAAgB,EAAE,IAAI,CAAC,qBAAqB;YAC5C,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,eAAe;YACf,MAAM,EAAE,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;SAC3D,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE;YACd,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,IAAK,EAAQ,CAAC;YACzC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YAEhD,IAAI,YAAY,EAAE;gBAChB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;aACtB;YAED,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE;gBACnB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACvB;iBAAM,IAAI,QAAQ,KAAK,KAAK,EAAE;gBAC7B,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;aACzB;YAED,CAAC,CAAC,qBAAqB,CAAC,kBAAkB,KAAK,KAAK,CAAC,CAAC;YAEtD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;gBACpB,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;aACzB;YAED,MAAM,UAAU,mCACX,MAAM,KACT,eAAe,EAAG,IAA+B,CAAC,eAAe,EACjE,oBAAoB,EAAG,IAA+B,CAAC,oBAAoB,EAC3E,KAAK,EAAG,IAA+B,CAAC,KAAK,EAC7C,cAAc,EAAG,IAA+B,CAAC,cAAc,EAC/D,KAAK,EAAE,MAAA,MAAM,CAAC,KAAK,mCAAI,KAAK,EAC5B,sBAAsB,EAAG,IAAY,CAAC,sBAAsB,EAC5D,SAAS,EAAE,MAAA,MAAM,CAAC,SAAS,mCAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAE,IAAY,CAAC,MAAM,CAAC,EACzE,QAAQ,EAAE,CAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,QAAQ,KAAI,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EACpF,eAAe,EAAE,MAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,eAAe,mCAAI,MAAM,CAAC,eAAe,GACvE,CAAC;YAEF,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YAE5B,IAAI,CAAC,qBAAqB,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,IAAK,IAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SAC5F;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAES,aAAa;;QAErB,OAAO,MAAA,KAAK,CAAC,aAAa,EAAE,mCAAI,gBAAgB,CAAC;IACnD,CAAC;IAOS,iBAAiB,CAAC,KAAY;QACtC,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,GAAG,CAAC;SACZ;QAED,MAAM,eAAe,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACjD,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAE3D,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAE1C,IAAI,WAAW,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;YACzD,GAAG,IAAI,IAAI,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;SACjC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAKD,iBAAiB,CAAC,MAAyB;;QACzC,MAAA,CAAC,MAAA,IAAI,CAAC,eAAe,mCAAI,IAAI,CAAC,WAAW,EAAE,CAAC,0CAAE,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACzE,CAAC;IAED,gBAAgB;;QACd,MAAA,CAAC,MAAA,IAAI,CAAC,eAAe,mCAAI,IAAI,CAAC,WAAW,EAAE,CAAC,0CAAE,iBAAiB,EAAE,CAAC;IACpE,CAAC;IAED,mBAAmB;;QACjB,MAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,WAAW,EAAE,0CAAE,iBAAiB,EAAE,CAAC;IACjD,CAAC;IAED,QAAQ;;QACN,MAAA,IAAI,CAAC,UAAU,EAAE,0CAAE,iBAAiB,EAAE,CAAC;IACzC,CAAC;IAED,OAAO;QACL,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED,mBAAmB;QACjB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,aAAa,CAAC,KAAa;;QACzB,IACE,KAAK,KAAK,eAAe;YACzB,KAAK,KAAK,uBAAuB;YACjC,KAAK,KAAK,iBAAiB;YAC3B,KAAK,KAAK,yBAAyB,EACnC;YACA,KAAK,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;SACnC;QACD,OAAO,MAAA,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC,mCAAI,KAAK,CAAC;IAC1D,CAAC;IAES,sBAAsB;QAC9B,OAAO,IAAI,CAAC,YAAY,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;IACnG,CAAC;IAES,kBAAkB,CAAC,KAAY;QACvC,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAEjD,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACvB,OAAO,IAAI,CAAC;SACb;QAED,OAAO,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YAC/B,OAAO,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC;IAES,4BAA4B,CAAC,OAAe;;QACpD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACtC,MAAM,gBAAgB,GAAG,MAAA,IAAI,CAAC,OAAO;aAClC,WAAW,EAAE;aACb,SAAS,CAAC,OAAO,CAAC,0CAAE,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QAChG,OAAO,gBAAgB,aAAhB,gBAAgB,cAAhB,gBAAgB,GAAI,EAAE,CAAC;IAChC,CAAC;IAES,kBAAkB,CAAC,QAA8C,EAAE,IAA2B;;QACtG,IAAI,GAAG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,MAAA,IAAI,CAAC,cAAc,0CAAE,UAAU,CAAC;QAC/C,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;SACR;QAED,IAAI,MAAC,IAA6B,CAAC,MAAM,0CAAE,MAAM,EAAE;YACjD,QAAQ,CAAC,IAA4B,CAAC,CAAC;SACxC;aAAM,IAAK,IAA6B,CAAC,KAAK,EAAE;YAC/C,MAAM,CAAC,MAAM,CAAE,IAA6B,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBAC9D,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YACvC,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAGD,iBAAiB,CAAC,KAAY;QAC5B,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,KAAK,CAAC;SACd;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC;QACnD,IAAI,CAAC,YAAY,EAAE;YACjB,OAAO,KAAK,CAAC;SACd;QACD,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YAChC,OAAO,IAAI,CAAC;SACb;QACD,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,SAAgB,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACjH,CAAC;IAED,mBAAmB,CAAC,KAAY,EAAE,WAAoB;;QACpD,OAAO,KAAK,CAAC,MAAA,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,IAAI,CAAC,cAAc,EAAE,mCAAI,yBAAyB,CAAC,CAAC;IAClF,CAAC;;AA70Ce,eAAI,GAAkB,cAAc,CAAC;AACrC,iCAAsB,GAAG,yBAAyB,CAAC","file":"base-series.js","sourcesContent":["import { ChartEvent } from '../../constant/event';\nimport {\n DEFAULT_DATA_KEY,\n DEFAULT_DATA_SERIES_FIELD,\n DEFAULT_SERIES_STYLE_NAME,\n STACK_FIELD_END,\n STACK_FIELD_END_PERCENT,\n STACK_FIELD_START,\n STACK_FIELD_START_PERCENT\n} from '../../constant/data';\nimport { AttributeLevel } from '../../constant/attribute';\nimport { PREFIX } from '../../constant/base';\nimport { DataView } from '@visactor/vdataset';\n// eslint-disable-next-line no-duplicate-imports\nimport type { DataSet, ITransformOptions } from '@visactor/vdataset';\nimport type { IRegion } from '../../region/interface';\nimport type { ICompileMarkConfig, IGroupMark, IMark, IMarkProgressiveConfig } from '../../mark/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { MarkTypeEnum } from '../../mark/interface/type';\nimport type {\n CoordinateType,\n IInvalidType,\n IPoint,\n DataKeyType,\n Datum,\n Maybe,\n ISeriesSpec,\n IExtensionMarkSpec,\n IExtensionGroupMarkSpec,\n EnableMarkType,\n IGroup,\n ILayoutType,\n ILayoutPoint,\n ILayoutRect\n} from '../../typings';\nimport { BaseModel } from '../../model/base-model';\n// eslint-disable-next-line no-duplicate-imports\nimport type {\n ISeriesOption,\n ISeries,\n ISeriesMarkInitOption,\n ISeriesStackData,\n ISeriesTooltipHelper,\n SeriesMarkMap,\n ISeriesMarkInfo,\n ISeriesSpecInfo,\n ISeriesStackDataLeaf,\n ISeriesStackDataNode,\n ISeriesStackDataMeta,\n ISeriesSeriesInfo\n} from '../interface';\nimport { dataToDataView, dataViewFromDataView, updateDataViewInData } from '../../data/initialize';\nimport { mergeFields, getFieldAlias } from '../../util/data';\nimport { couldBeValidNumber } from '../../util/type';\nimport { mergeSpec } from '@visactor/vutils-extension';\nimport type { IModelEvaluateOption, IModelRenderOption, IUpdateSpecResult } from '../../model/interface';\nimport type { AddVChartPropertyContext } from '../../data/transforms/add-property';\n// eslint-disable-next-line no-duplicate-imports\nimport { addVChartProperty } from '../../data/transforms/add-property';\nimport type { IBaseInteractionSpec, IHoverSpec, ISelectSpec } from '../../interaction/interface/spec';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport { BaseSeriesTooltipHelper } from './tooltip-helper';\n// eslint-disable-next-line no-duplicate-imports\nimport { dimensionStatistics, dimensionStatisticsOfSimpleData } from '../../data/transforms/dimension-statistics';\nimport { invalidTravel } from '../../data/transforms/invalid-travel';\nimport { getDataScheme } from '../../theme/color-scheme/util';\nimport { addDataKey, initKeyMap } from '../../data/transforms/data-key';\nimport type { IMarkConfig, ISeriesMarkAttributeContext } from '../../compile/mark';\n// eslint-disable-next-line no-duplicate-imports\nimport { STATE_VALUE_ENUM } from '../../compile/mark';\nimport {\n array,\n isEqual,\n isNil,\n isValid,\n isBoolean,\n isString,\n isFunction,\n isArray,\n isValidNumber,\n isObject,\n minInArray,\n maxInArray,\n merge\n} from '@visactor/vutils';\nimport { ColorOrdinalScale } from '../../scale/color-ordinal-scale';\nimport { baseSeriesMark, defaultSeriesIgnoreCheckKeys, defaultSeriesCompileCheckKeys } from './constant';\nimport { animationConfig, userAnimationConfig, isAnimationEnabledForSeries } from '../../animation/utils';\nimport { BaseSeriesSpecTransformer } from './base-series-transformer';\nimport { getDefaultInteractionConfigByMode } from '../../interaction/config';\nimport { LayoutZIndex } from '../../constant/layout';\nimport type { ILabelSpec } from '../../component/label/interface';\nimport type { StatisticOperations } from '../../data/transforms/interface';\nimport type { GraphicEventType } from '@visactor/vrender-core';\nimport type { ICompilableData } from '../../compile/data';\nimport { CompilableData } from '../../compile/data';\nimport { filterMarksOfInteraction } from '../../interaction/triggers/util';\nimport type { IBaseTriggerOptions } from '../../interaction/interface/trigger';\nimport { TRIGGER_TYPE_ENUM } from '../../interaction/triggers/enum';\n\nexport abstract class BaseSeries<T extends ISeriesSpec> extends BaseModel<T> implements ISeries {\n readonly specKey: string = 'series';\n readonly type: string = 'series';\n layoutType: ILayoutType = 'absolute';\n readonly modelType: string = 'series';\n readonly name: string | undefined = undefined;\n\n static readonly mark: SeriesMarkMap = baseSeriesMark;\n static readonly transformerConstructor = BaseSeriesSpecTransformer;\n readonly transformerConstructor = BaseSeriesSpecTransformer as any;\n\n declare getSpecInfo: () => ISeriesSpecInfo;\n\n protected declare _option: ISeriesOption;\n\n // 坐标系信息\n readonly coordinate: CoordinateType = 'none';\n\n // 区域\n protected _region: IRegion = null as unknown as IRegion;\n getRegion(): IRegion {\n return this._region;\n }\n\n private _layoutStartPoint: ILayoutPoint = {\n x: 0,\n y: 0\n };\n\n getLayoutStartPoint(): ILayoutPoint {\n return this._region.getLayoutStartPoint();\n }\n\n private _layoutRect: ILayoutRect = { width: null, height: null };\n\n getLayoutRect: () => ILayoutRect = () => {\n return {\n width: this._layoutRect.width ?? this._region.getLayoutRect().width,\n height: this._layoutRect.height ?? this._region.getLayoutRect().height\n };\n };\n\n /** 系列的根 mark */\n protected _rootMark: IGroupMark = null;\n getRootMark() {\n return this._rootMark;\n }\n\n /** series field 所作用的 mark */\n protected _seriesMark: Maybe<IMark> = null;\n getSeriesMark() {\n return this._seriesMark;\n }\n\n protected _layoutLevel!: number;\n\n /**\n * data\n * 数据节点\n * rawData 只进行 fields 相关能力,筛选+sort。\n * rawDataStatistics 的统计值是fields筛选后的。是符合预期的。\n * viewDatFilter 节点用来做组件等图表逻辑的数据筛选\n * viewData上不允许挂 filter\n * 数据更新流程一:重新做数据变换\n * viewData.reRunAllTransform()=>viewDataStatistics();\n * 数据更新流程二:图表逻辑更新,进行数据筛选\n * viewDatFilter.reRunAllTransform() => region.waitAllSeriesFilterOver()=>\n * viewData.reRunAllTransform()=>viewDataStatistics();\n * 数据更新流程三:用户更新数据\n * rawData().parse().rawDataStatistics()=>\n * viewDatFilter.reRunAllTransform() => region.waitAllSeriesFilterOver()=>\n * viewData.reRunAllTransform()=>viewDataStatistics();\n *\n * NEED-OPTIMIZATION:\n * 一:额外增加了 filter 节点,流程断开为2部分。只是因为堆积需要,因为 filter 和数据变换可以用排序解决。\n * 二:running tag 没有找到好办法消除。只是增加了一个易用 api 到 dataView 上\n */\n protected _rawData!: DataView;\n getRawData() {\n return this._rawData;\n }\n\n protected _rawDataStatistics?: DataView;\n protected _rawStatisticsCache: Record<string, { values?: any[]; min?: number; max?: number }>;\n\n protected _viewDataMap: Map<number, DataView> = new Map();\n\n // only add viewDataFilter when this._stack is true\n protected _viewDataFilter: DataView = null;\n\n getViewDataFilter() {\n return this._viewDataFilter;\n }\n\n // view data\n protected _data: ICompilableData = null;\n getViewData() {\n return this._data?.getDataView();\n }\n getViewDataProductId() {\n return this._data?.getProductId();\n }\n\n protected _viewDataStatistics!: DataView;\n getViewDataStatistics() {\n return this._viewDataStatistics;\n }\n protected _viewStackData!: DataView;\n getViewStackData() {\n return this._viewStackData;\n }\n\n protected _seriesField?: string;\n getSeriesField() {\n return this._seriesField;\n }\n setSeriesField(field: string) {\n if (isValid(field)) {\n this._seriesField = field;\n }\n }\n\n protected _groups?: IGroup;\n getGroups() {\n return this._groups;\n }\n\n getStack() {\n return this.getSpecInfo()?.stack;\n }\n\n getStackValue() {\n return this._spec.stackValue ?? `${PREFIX}_series_${this.type}`;\n }\n getPercent() {\n return this._spec.percent;\n }\n getStackOffsetSilhouette() {\n return this._spec.stackOffsetSilhouette;\n }\n protected _dataSet: DataSet;\n\n protected declare _tooltipHelper: ISeriesTooltipHelper | undefined;\n get tooltipHelper() {\n if (!this._tooltipHelper) {\n this.initTooltip();\n }\n\n return this._tooltipHelper;\n }\n\n layoutZIndex: number = LayoutZIndex.SeriesGroup;\n\n protected _invalidType: IInvalidType = 'break';\n getInvalidType() {\n return this._invalidType;\n }\n setInvalidType(t: IInvalidType) {\n this._invalidType = t;\n this.getViewData()?.reRunAllTransform();\n }\n\n protected _markAttributeContext: ISeriesMarkAttributeContext;\n getMarkAttributeContext() {\n return this._markAttributeContext;\n }\n\n constructor(spec: T, options: ISeriesOption) {\n super(spec, options);\n this._region = options.region;\n this._dataSet = options.dataSet;\n this._spec?.name && (this.name = this._spec.name);\n }\n\n created(): void {\n super.created();\n this._buildMarkAttributeContext();\n // data\n this.initData();\n this.initGroups();\n // 调整统计数据的创建时机,需要等待group创建完成\n this.initStatisticalData();\n this.event.emit(ChartEvent.afterInitData, { model: this });\n // mark\n this.initRootMark();\n this.initMark();\n const hasAnimation = isAnimationEnabledForSeries(this);\n\n this._initExtensionMark({ hasAnimation });\n\n this.initMarkStyle();\n this.initMarkState();\n if (hasAnimation) {\n this.initAnimation();\n this.initStageAnimation();\n }\n\n this.afterInitMark();\n\n // event\n this.initEvent();\n this.event.emit(ChartEvent.afterInitEvent, { model: this });\n }\n\n protected _buildMarkAttributeContext() {\n this._markAttributeContext = {\n vchart: this._option.globalInstance,\n globalScale: (key: string, value: string | number) => {\n return this._option.globalScale.getScale(key)?.scale(value);\n },\n seriesColor: (seriesValue: string | number) => {\n if (isNil(seriesValue)) {\n seriesValue = this.getSeriesKeys()[0];\n }\n return this._option.globalScale.getScale('color')?.scale(seriesValue);\n },\n getRegion: () => this._region\n };\n }\n\n /** 预处理spec信息 */\n setAttrFromSpec(): void {\n super.setAttrFromSpec();\n this.setSeriesField(this._spec.seriesField);\n if (isValid(this._spec.invalidType)) {\n this._invalidType = this._spec.invalidType;\n }\n }\n\n protected getInvalidCheckFields() {\n return [this.getStackValueField()];\n }\n\n protected initInvalidDataTransform(): void {\n // _invalidType 默认为 break/ignore,直接走图形层面的解析,不需要走 transform 数据处理逻辑\n if (this._invalidType === 'zero' && this._rawData?.dataSet) {\n registerDataSetInstanceTransform(this._rawData.dataSet, 'invalidTravel', invalidTravel);\n // make sure each series only transform once\n this._rawData?.transform(\n {\n type: 'invalidTravel',\n options: {\n config: () => {\n return {\n invalidType: this._invalidType,\n checkField: this.getInvalidCheckFields()\n };\n }\n }\n },\n false\n );\n }\n }\n\n /** data */\n protected initData(): void {\n const d = this._spec.data ?? this._option.getSeriesData(this._spec.dataId, this._spec.dataIndex);\n if (d) {\n this._rawData = dataToDataView(d, this._dataSet, this._option.sourceDataList);\n }\n this._rawData?.target?.addListener('change', this.rawDataUpdate.bind(this));\n this._addDataIndexAndKey();\n // 初始化viewData\n if (this._rawData) {\n if (this.getStack()) {\n // 初始化viewDataFilter\n this._viewDataFilter = dataViewFromDataView(this._rawData, this._dataSet, {\n name: `${this.type}_${this.id}_viewDataFilter`\n });\n }\n\n // 初始化viewData\n const viewData = dataViewFromDataView(this.getStack() ? this._viewDataFilter : this._rawData, this._dataSet, {\n name: `${this.type}_${this.id}_viewData`\n });\n this._data = new CompilableData(this._option, viewData);\n\n if (this.getStack()) {\n this._viewDataFilter.target.removeListener('change', viewData.reRunAllTransform);\n }\n }\n\n this.initInvalidDataTransform();\n }\n\n protected initGroups() {\n const groupFields = this.getGroupFields();\n if (groupFields && groupFields.length) {\n this._groups = { fields: groupFields };\n // this._data && this._groups.initData(this._data.getDataView(), this._dataSet);\n }\n }\n\n protected initStatisticalData(): void {\n if (this._data) {\n this._statisticViewData();\n }\n }\n\n getRawDataStatisticsByField(field: string, isNumeric?: boolean) {\n if (!this._rawStatisticsCache) {\n this._rawStatisticsCache = {};\n }\n\n if (\n !this._rawStatisticsCache[field] ||\n // 如果数值类型与当前的计算结果类型不一致的话,也需要把结果更新到cache中\n // 具体场景: field同时在axis中作为离散字段,在图例中作为连续字段,此时min、max、values都应该被计算并更新在cache中\n (isNumeric && (isNil(this._rawStatisticsCache[field].min) || isNil(this._rawStatisticsCache[field].max))) ||\n (!isNumeric && isNil(this._rawStatisticsCache[field].values))\n ) {\n const canUseViewStatistics =\n this._viewDataStatistics &&\n (!this._viewDataFilter || this._viewDataFilter.transformsArr.length <= 1) &&\n this.getViewData().transformsArr.length <= 1;\n\n if (canUseViewStatistics && this._viewDataStatistics.latestData?.[field]) {\n this._rawStatisticsCache[field] = this._viewDataStatistics.latestData[field];\n } else if (this._rawData) {\n // 如果有设置统计信息,应当与设置值保持一致\n const fieldInfo = this._rawData.getFields()?.[field];\n if (fieldInfo && fieldInfo.lockStatisticsByDomain && fieldInfo.domain) {\n this._rawStatisticsCache[field] = {};\n if (isNumeric) {\n this._rawStatisticsCache[field].min = minInArray(fieldInfo.domain);\n this._rawStatisticsCache[field].max = maxInArray(fieldInfo.domain);\n } else {\n this._rawStatisticsCache[field].values = fieldInfo.domain;\n }\n } else {\n const result = (\n dimensionStatisticsOfSimpleData(this._rawData.latestData as Datum[], [\n { key: field, operations: isNumeric ? ['min', 'max'] : ['values'] }\n ]) as any\n )[field];\n this._rawStatisticsCache[field] = merge(this._rawStatisticsCache[field] ?? {}, result);\n }\n }\n }\n\n return this._rawStatisticsCache[field];\n }\n\n protected _statisticViewData() {\n registerDataSetInstanceTransform(this._dataSet, 'dimensionStatistics', dimensionStatistics);\n const viewDataStatisticsName = `${this.type}_${this.id}_viewDataStatic`;\n this._viewDataStatistics = new DataView(this._dataSet, { name: viewDataStatisticsName });\n this._viewDataStatistics.parse([this._data.getDataView()], {\n type: 'dataview'\n });\n this._viewDataStatistics.transform(\n {\n type: 'dimensionStatistics',\n options: {\n fields: () => {\n const fields = this.getStatisticFields();\n if (this._seriesField) {\n mergeFields(fields, [\n {\n key: this._seriesField,\n operations: ['values']\n }\n ]);\n }\n return fields;\n },\n target: 'latest'\n }\n },\n false\n );\n\n this._data.getDataView().target.removeListener('change', this._viewDataStatistics.reRunAllTransform);\n if (this.getStack()) {\n this.createdStackData();\n }\n }\n\n protected createStatisticalData(\n dataName: string,\n rawData: DataView,\n staticFields?: (dataId: string) => {\n key: string;\n operations: StatisticOperations;\n }[]\n ) {\n registerDataSetInstanceTransform(this._dataSet, 'dimensionStatistics', dimensionStatistics);\n const data = new DataView(this._dataSet, { name: dataName });\n data.parse([rawData], {\n type: 'dataview'\n });\n // data.name = dataName;\n data.transform(\n {\n type: 'dimensionStatistics',\n options: {\n operations: ['max', 'min', 'values'],\n fields: () => {\n const fields = mergeFields(this.getStatisticFields(), staticFields?.(rawData.name as string) ?? []);\n if (this._seriesField) {\n mergeFields(fields, [\n {\n key: this._seriesField,\n operations: ['values']\n }\n ]);\n }\n\n return fields;\n },\n target: 'latest'\n }\n },\n false\n );\n return data;\n }\n\n // stack\n private createdStackData(): void {\n const dataName = `${this.type}_${this.id}_viewStackData`;\n this._viewStackData = new DataView(this._dataSet, { name: dataName });\n this._viewStackData.parse([this._viewDataFilter], {\n type: 'dataview'\n });\n this._viewStackData.transform(\n {\n type: 'stackSplit',\n options: {\n fields: this.getStackGroupFields()\n }\n },\n false\n );\n }\n\n // make sure this function fast\n protected _noAnimationDataKey(datum: Datum, index: number): unknown | undefined {\n return index;\n }\n\n protected generateDefaultDataKey(dataKey: DataKeyType) {\n if (isNil(dataKey)) {\n return (datum: Datum, index: number, context: AddVChartPropertyContext) => {\n // check if need animation data key\n if (this._spec.animation === false) {\n const v = this._noAnimationDataKey(datum, index);\n if (v !== undefined) {\n return v;\n }\n }\n const { keyMap } = context;\n const seriesDataKey = this._getSeriesDataKey(datum);\n if (keyMap.get(seriesDataKey) === undefined) {\n keyMap.set(seriesDataKey, 0);\n\n return seriesDataKey;\n }\n\n keyMap.set(seriesDataKey, keyMap.get(seriesDataKey) + 1);\n return `${seriesDataKey}_${keyMap.get(seriesDataKey)}`;\n };\n }\n\n if (isString(dataKey)) {\n return (datum: Datum) => datum[dataKey];\n }\n\n if (isArray(dataKey) && dataKey.every(d => isString(d))) {\n return (datum: Datum) => dataKey.map(k => datum[k]).join('-');\n }\n\n if (isFunction(dataKey)) {\n return (datum: Datum, index: number) => dataKey(datum, index);\n }\n\n this._option?.onError(`invalid dataKey: ${dataKey}`);\n return (datum: Datum, index: number) => undefined as string;\n }\n\n protected _addDataIndexAndKey() {\n if (this._rawData?.dataSet) {\n registerDataSetInstanceTransform(this._rawData.dataSet, 'addVChartProperty', addVChartProperty);\n this._rawData.transform(\n {\n type: 'addVChartProperty',\n options: {\n beforeCall: initKeyMap.bind(this),\n call: addDataKey\n }\n },\n false\n );\n }\n }\n\n updateRawData(d: any): void {\n if (!this._rawData) {\n return;\n }\n this._rawData.updateRawData(d);\n }\n rawDataUpdate(d: DataView): void {\n this._rawDataStatistics?.reRunAllTransform();\n this._rawStatisticsCache = null;\n this.event.emit(ChartEvent.rawDataUpdate, { model: this });\n }\n viewDataFilterOver(d: DataView): void {\n this.event.emit(ChartEvent.viewDataFilterOver, { model: this });\n }\n viewDataUpdate(d: DataView): void {\n this.event.emit(ChartEvent.viewDataUpdate, { model: this });\n // 依据数据更新设置渲染结果\n // 初始化时会触发 viewDataUpdate,但是此时 srView 还未生成,因此实际上不会产生多余的 updateData 调用\n this._data?.updateData();\n this._viewDataStatistics && this._viewDataStatistics.reRunAllTransform();\n }\n viewDataStatisticsUpdate(d: DataView): void {\n this.event.emit(ChartEvent.viewDataStatisticsUpdate, { model: this });\n }\n\n // 数据到位置值\n getDatumPositionValue(datum: Datum, field: string) {\n if (!datum || isNil(field)) {\n return null;\n }\n return datum[field];\n }\n getDatumPositionValues(datum: Datum, fields: string | string[]) {\n if (!datum || isNil(fields)) {\n return [];\n }\n\n if (isString(fields)) {\n return [datum[fields]];\n }\n return fields.map(f => datum[f]);\n }\n /** mark end */\n\n /** 获取参与统计的字段与统计类型 */\n abstract getStatisticFields(): {\n key: string;\n operations: StatisticOperations;\n }[];\n /** 获取分组字段 */\n abstract getGroupFields(): string[];\n /** 数据到坐标点的映射 */\n abstract dataToPosition(data: Datum, checkInViewData?: boolean): IPoint;\n /** 数据到 x 坐标点的映射 */\n abstract dataToPositionX(data: Datum): number;\n /** 数据到 y 坐标点的映射 */\n abstract dataToPositionY(data: Datum): number;\n /** 数据到坐标点的映射 */\n abstract valueToPosition(value1: any, value2?: any): IPoint;\n abstract initMark(): void;\n abstract initMarkStyle(): void;\n\n /** stack start */\n abstract getStackGroupFields(): string[];\n abstract getStackValueField(): string | undefined;\n setValueFieldToStack() {\n // do nothing\n }\n setValueFieldToPercent() {\n // do nothing;\n }\n setValueFieldToStackOffsetSilhouette() {\n // do nothing\n }\n\n /** 获取系列中可以被操作的mark(brush需要通过在图元spec中内置state的方式实现框选样式,所以需要获取可被框选的mark) */\n abstract getActiveMarks(): IMark[];\n\n initRootMark() {\n this._rootMark = this._createMark(\n { type: MarkTypeEnum.group, name: `seriesGroup_${this.type}_${this.id}` },\n {\n parent: this._region.getGroupMark?.(),\n dataView: false\n }\n ) as IGroupMark;\n this._rootMark.setMarkConfig({ zIndex: this._spec.zIndex ?? this.layoutZIndex });\n }\n\n private _getExtensionMarkNamePrefix() {\n return `${this.type}_${this.id}_extensionMark`;\n }\n\n protected _initExtensionMark(options: { hasAnimation: boolean }) {\n if (!this._spec.extensionMark) {\n return;\n }\n\n this._spec.extensionMark?.forEach((m, i) => {\n this._createExtensionMark(m, null, this._getExtensionMarkNamePrefix(), i, options);\n });\n }\n\n private _createExtensionMark(\n spec: IExtensionMarkSpec<Exclude<EnableMarkType, 'group'>> | IExtensionGroupMarkSpec,\n parentMark: null | IGroupMark,\n namePrefix: string,\n index: number,\n options: { hasAnimation: boolean }\n ) {\n const mark = this._createMark(\n { type: spec.type, name: isValid(spec.name) ? `${spec.name}` : `${namePrefix}_${index}` },\n {\n // 避免二次dataflow\n skipBeforeLayouted: true,\n markSpec: spec,\n parent: parentMark,\n dataView: false,\n componentType: spec.componentType,\n key: spec.dataKey\n }\n ) as IGroupMark;\n if (!mark) {\n return;\n }\n\n if (isValid(spec.id)) {\n mark.setUserId(spec.id);\n }\n\n if (options.hasAnimation && spec.animation !== false) {\n // 自定义图元默认不添加动画\n const config = animationConfig({}, userAnimationConfig(spec.type, spec as any, this._markAttributeContext));\n mark.setAnimationConfig(config);\n }\n\n if (spec.type === 'group') {\n namePrefix = `${namePrefix}_${index}`;\n spec.children?.forEach((s, i) => {\n this._createExtensionMark(s as any, mark, namePrefix, i, options);\n });\n }\n\n if (!isNil(spec.dataId) || !isNil(spec.dataIndex)) {\n const dataView = this._option.getSeriesData(spec.dataId, spec.dataIndex);\n\n if (dataView === this._rawData) {\n mark.setData(this._data);\n } else {\n mark.setDataView(dataView);\n\n dataView.target.addListener('change', () => {\n mark.getData().updateData();\n });\n }\n }\n }\n\n protected _updateExtensionMarkSpec() {\n this._spec.extensionMark?.forEach((spec, i) => {\n const mark = this._marks.getMarkWithInfo({\n name: isValid(spec.name) ? `${spec.name}` : `${this._getExtensionMarkNamePrefix()}_${i}`\n });\n if (!mark) {\n return;\n }\n this.initMarkStyleWithSpec(mark, spec);\n mark.commit(false, true);\n });\n }\n\n getStackData(): ISeriesStackData {\n return this._viewStackData?.latestData;\n }\n /** stack end */\n\n /** mark */\n\n protected _parseDefaultInteractionConfig(mainMarks?: IMark[]) {\n if (!mainMarks?.length) {\n return [];\n }\n\n const defaultConfig = getDefaultInteractionConfigByMode(this._option.mode);\n let finalHoverSpec = { ...defaultConfig?.hover };\n let finalSelectSpec: ISelectSpec = { ...defaultConfig?.select };\n\n const hoverSpec = this._spec.hover;\n if (isBoolean(hoverSpec)) {\n finalHoverSpec.enable = hoverSpec as boolean;\n } else if (isObject(hoverSpec)) {\n finalHoverSpec.enable = true;\n finalHoverSpec = mergeSpec(finalHoverSpec, hoverSpec);\n }\n\n const selectSpec = this._spec.select;\n if (isBoolean(selectSpec)) {\n finalSelectSpec.enable = selectSpec as boolean;\n } else if (isObject(selectSpec)) {\n finalSelectSpec.enable = true;\n finalSelectSpec = mergeSpec(finalSelectSpec, selectSpec);\n }\n const res: { trigger: Partial<IBaseTriggerOptions>; marks: IMark[] }[] = [\n {\n trigger: {\n type: TRIGGER_TYPE_ENUM.DIMENSION_HOVER as string\n },\n marks: mainMarks\n }\n ];\n\n if (finalHoverSpec.enable) {\n const marks: IMark[] = filterMarksOfInteraction(finalHoverSpec as IBaseInteractionSpec, mainMarks);\n\n marks.length &&\n res.push({\n trigger: this._defaultHoverConfig(finalHoverSpec),\n marks\n });\n }\n\n if (finalSelectSpec.enable) {\n const marks: IMark[] = filterMarksOfInteraction(finalSelectSpec as IBaseInteractionSpec, mainMarks);\n\n marks.length &&\n res.push({\n trigger: this._defaultSelectConfig(finalSelectSpec) as Partial<IBaseTriggerOptions>,\n marks\n });\n }\n return res;\n }\n\n protected _defaultHoverConfig(finalHoverSpec: IHoverSpec) {\n return {\n type: TRIGGER_TYPE_ENUM.ELEMENT_HIGHLIGHT as string,\n trigger: finalHoverSpec.trigger as GraphicEventType,\n triggerOff: finalHoverSpec.triggerOff as GraphicEventType,\n blurState: STATE_VALUE_ENUM.STATE_HOVER_REVERSE,\n highlightState: STATE_VALUE_ENUM.STATE_HOVER\n };\n }\n\n protected _defaultSelectConfig(finalSelectSpec: ISelectSpec) {\n const isMultiple = finalSelectSpec.mode === 'multiple';\n const triggerOff = isValid(finalSelectSpec.triggerOff)\n ? finalSelectSpec.triggerOff\n : isMultiple\n ? ['empty']\n : ['empty', finalSelectSpec.trigger];\n return {\n type: TRIGGER_TYPE_ENUM.ELEMENT_SELECT as string,\n trigger: finalSelectSpec.trigger as GraphicEventType,\n triggerOff: triggerOff as GraphicEventType,\n reverseState: STATE_VALUE_ENUM.STATE_SELECTED_REVERSE,\n state: STATE_VALUE_ENUM.STATE_SELECTED,\n isMultiple\n };\n }\n\n protected _parseInteractionConfig(mainMarks?: IMark[]) {\n const { interactions } = this._spec;\n const res = this._parseDefaultInteractionConfig(mainMarks);\n\n if (interactions && interactions.length) {\n interactions.forEach(interaction => {\n const marks: IMark[] = filterMarksOfInteraction(interaction, this.getMarks());\n\n if (marks.length) {\n res.push({ trigger: interaction, marks });\n }\n });\n }\n\n return res;\n }\n\n getInteractionTriggers() {\n if (this._option.disableTriggerEvent !== true) {\n const marks = this.getMarksWithoutRoot();\n return this._parseInteractionConfig(marks);\n }\n\n return [];\n }\n\n initAnimation() {\n // do nothing\n }\n\n initStageAnimation() {\n const compiler = this._option.getCompiler();\n if (!compiler?.setStageAnimationConfig) {\n return;\n }\n compiler.setStageAnimationConfig(\n animationConfig(\n {}, // Factory.getAnimationInKey('stage')?.({}, null),\n userAnimationConfig('stage', this._spec as any, this._markAttributeContext),\n null\n )\n );\n }\n\n initMarkState() {\n this.initSeriesStyleState();\n }\n\n /**\n * 初始化initSeriesStyleState所对应的state,配置series-style数组会转化到state实现,每一个seriesItem都对应一个state\n * @returns\n */\n initSeriesStyleState() {\n const seriesStyle = this._spec.seriesStyle;\n if (!seriesStyle || !seriesStyle.length) {\n return;\n }\n const groupBy = this._seriesField ?? DEFAULT_DATA_SERIES_FIELD;\n this.getMarksWithoutRoot().forEach(mark => {\n const filterMap: { [key: string]: true } = {};\n const attrMap: { [key: string]: true } = {};\n const markStyle: { [key: string]: { [key: string]: any } } = {};\n seriesStyle.forEach(item => {\n const style = item[mark.name]?.style;\n if (style) {\n filterMap[item.name] = true;\n markStyle[item.name] = markStyle[item.name] || {};\n Object.keys(style).forEach(key => {\n attrMap[key] = true;\n markStyle[item.name][key] = style[key];\n });\n }\n });\n mark.state.addStateInfo({\n stateValue: DEFAULT_SERIES_STYLE_NAME,\n level: -1,\n filter: (datum: Datum) => {\n if (Array.isArray(datum)) {\n if (datum.length === 0) {\n return false;\n }\n return filterMap[datum[0][groupBy]] === true;\n }\n return filterMap[datum[groupBy]] === true;\n }\n });\n const style: Record<string, (datum: Datum) => any> = {};\n Object.keys(attrMap).forEach(key => {\n style[key] = (datum: Datum) => {\n let style;\n if (Array.isArray(datum)) {\n if (datum.length === 0) {\n return undefined;\n }\n style = markStyle[datum[0][groupBy]]?.[key];\n }\n style = markStyle[datum[groupBy]]?.[key];\n if (isValid(style)) {\n return style;\n }\n return mark.getAttribute(key as any, datum);\n };\n });\n this.setMarkStyle(mark, style, DEFAULT_SERIES_STYLE_NAME, AttributeLevel.User_SeriesStyle);\n });\n }\n\n afterInitMark(): void {\n this.event.emit(ChartEvent.afterInitMark, { model: this });\n this.setSeriesField(this._spec.seriesField);\n\n // set mark stroke color follow series color\n // only set normal state in the level lower than level Series\n this.getMarks().forEach(m => {\n if (m.stateStyle?.normal?.lineWidth) {\n m.setAttribute('stroke', this.getColorAttribute(), 'normal', AttributeLevel.Base_Series);\n }\n });\n }\n\n getMarksWithoutRoot(): IMark[] {\n return this.getMarks().filter(m => !m.name?.includes('seriesGroup'));\n }\n getMarksInType(type: string | string[]): IMark[] {\n return this._marks.getMarksInType(type);\n }\n getMarkInName(name: string): IMark | undefined {\n return this._marks.get(name);\n }\n getMarkInId(markId: number): IMark | undefined {\n return this.getMarks().find(m => m.id === markId);\n }\n /** mark end */\n\n /** event */\n protected initEvent() {\n this._data?.getDataView()?.target.addListener('change', this.viewDataUpdate.bind(this));\n this._viewDataStatistics?.target.addListener('change', this.viewDataStatisticsUpdate.bind(this));\n }\n\n protected _releaseEvent(): void {\n super._releaseEvent();\n // todo release interactions\n }\n\n /** event end */\n\n /** 初始化tooltip helper */\n protected initTooltip() {\n this._tooltipHelper = new BaseSeriesTooltipHelper(this);\n }\n\n _compareExtensionMarksSpec(\n newMarks: (IExtensionMarkSpec<Exclude<EnableMarkType, 'group'>> | IExtensionGroupMarkSpec)[],\n prevMarks: (IExtensionMarkSpec<Exclude<EnableMarkType, 'group'>> | IExtensionGroupMarkSpec)[],\n compareResult: IUpdateSpecResult\n ) {\n if (\n newMarks.length !== prevMarks.length ||\n prevMarks.some((prev, index) => {\n return (\n prev.type !== newMarks[index].type || prev.id !== newMarks[index].id || prev.name !== newMarks[index].name\n );\n })\n ) {\n compareResult.reMake = true;\n } else if (\n prevMarks.some((prev, index) => {\n return prev.visible !== newMarks[index].visible;\n })\n ) {\n compareResult.reCompile = true;\n }\n }\n\n _compareLabelSpec(newLabels: ILabelSpec[], prevLabels: ILabelSpec[], compareResult: IUpdateSpecResult) {\n if (\n newLabels.length !== prevLabels.length ||\n prevLabels.some((prev, index) => {\n return prev.labelLayout !== newLabels[index].labelLayout || prev.visible !== newLabels[index].visible;\n })\n ) {\n compareResult.reMake = true;\n } else if (\n !compareResult.reCompile &&\n prevLabels.some((prev, index) => {\n return !isEqual(prev, newLabels[index]);\n })\n ) {\n compareResult.reCompile = true;\n }\n }\n\n /** updateSpec */\n _compareSpec(spec: T, prevSpec: T, ignoreCheckKeys?: Record<string, boolean>) {\n const result = super._compareSpec(spec, prevSpec);\n\n const currentKeys = Object.keys(prevSpec || {}).sort();\n const nextKeys = Object.keys(spec || {}).sort();\n if (!isEqual(currentKeys, nextKeys)) {\n result.reMake = true;\n return result;\n }\n\n const ignores: Record<string, boolean> = {\n ...defaultSeriesIgnoreCheckKeys,\n ...defaultSeriesCompileCheckKeys,\n ...ignoreCheckKeys,\n extensionMark: true,\n label: true,\n totalLabel: true\n };\n\n this._compareExtensionMarksSpec(array((spec as any).extensionMark), array((prevSpec as any).extensionMark), result);\n // 比较label\n !result.reMake && this._compareLabelSpec(array((spec as any).label), array((prevSpec as any).label), result);\n // 比较totalLabel\n !result.reMake &&\n this._compareLabelSpec(array((spec as any).totalLabel), array((prevSpec as any).totalLabel), result);\n\n if (result.reMake) {\n return result;\n }\n\n // mark visible logic in compile\n if (\n !result.reCompile &&\n this._marks.getMarks().some(m => {\n (ignores as { [key: string]: true })[m.name] = true;\n return (prevSpec as any)[m.name]?.visible !== (spec as any)[m.name]?.visible;\n })\n ) {\n result.reCompile = true;\n }\n\n // check default compile keys\n if (\n !result.reCompile &&\n currentKeys.some((k: string) => {\n return defaultSeriesCompileCheckKeys[k] && !isEqual((spec as any)[k], (prevSpec as any)[k]);\n })\n ) {\n result.reCompile = true;\n }\n\n if (\n currentKeys.some((k: string) => {\n return !ignores[k] && !isEqual((spec as any)[k], (prevSpec as any)[k]);\n })\n ) {\n result.reMake = true;\n return result;\n }\n\n return result;\n }\n\n _updateSpecData() {\n if (this._rawData && this._spec.data && !(this._spec.data instanceof DataView)) {\n updateDataViewInData(this._rawData, this._spec.data, true);\n }\n }\n\n reInit(spec?: T) {\n super.reInit(spec);\n\n const marks = this.getMarksWithoutRoot();\n // FIXME: 合并 mark spec 的时机是否需要统一调整到 this.initMarkStyle() 中?\n marks.forEach(mark => {\n (this._spec as any)[mark.name] && this.initMarkStyleWithSpec(mark, (this._spec as any)[mark.name]);\n });\n this.initMarkStyle();\n marks.forEach(mark => {\n mark.commit(false);\n });\n this._updateExtensionMarkSpec();\n this._updateSpecData();\n\n if (this._tooltipHelper) {\n this._tooltipHelper.updateTooltipSpec();\n }\n\n // update animation config\n const hasAnimation = isAnimationEnabledForSeries(this);\n if (hasAnimation) {\n this.initAnimation();\n }\n }\n\n // 首次布局完成后填充系列数据\n onEvaluateEnd(ctx: IModelEvaluateOption): void {\n this._data.updateData();\n }\n\n release(): void {\n super.release();\n this._viewDataMap.clear();\n // TODO: rawData transform clear;\n // this._dataSet=>// _rawData.tag = vchart\n // clear add transforms of rawData\n const transformIndex = this._rawData?.transformsArr?.findIndex(t => t.type === 'addVChartProperty');\n if (transformIndex >= 0) {\n this._rawData.transformsArr.splice(transformIndex, 1);\n }\n this._dataSet =\n this._data =\n this._rawData =\n this._rawDataStatistics =\n this._spec =\n this._region =\n this._viewDataStatistics =\n this._viewStackData =\n null;\n }\n\n setLayoutStartPosition(pos: Partial<IPoint>): void {\n if (isValidNumber(pos.x)) {\n this._layoutStartPoint.x = pos.x;\n }\n if (isValidNumber(pos.y)) {\n this._layoutStartPoint.y = pos.y;\n }\n }\n\n setLayoutRect({ width, height }: Partial<ILayoutRect>, levelMap?: Partial<ILayoutRect>) {\n if (isValidNumber(width)) {\n this._layoutRect.width = width;\n }\n\n if (isValidNumber(height)) {\n this._layoutRect.height = height;\n }\n }\n\n /** seriesField */\n getSeriesKeys(): string[] {\n if (this._seriesField) {\n return this.getRawDataStatisticsByField(this._seriesField)?.values ?? [];\n }\n if (this.name) {\n return [this.name];\n }\n if (this.userId) {\n return [`${this.userId}`];\n }\n return [`${this.type}_${this.id}`];\n }\n\n getSeriesStyle(datum: Datum) {\n return (attribute: string) => this._seriesMark?.getAttribute(attribute as any, datum) ?? undefined;\n }\n\n protected _getSeriesInfo(field: string, keys: string[]) {\n const defaultShapeType = this.getDefaultShapeType();\n return keys.map(key => {\n return {\n key,\n originalKey: key,\n style: this.getSeriesStyle({\n [field]: key\n }),\n shapeType: defaultShapeType\n } as ISeriesSeriesInfo;\n });\n }\n\n getSeriesInfoInField(field: string) {\n return this._getSeriesInfo(field, this.getRawDataStatisticsByField(field)?.values ?? []);\n }\n\n getSeriesInfoList() {\n return this._getSeriesInfo(this._seriesField ?? DEFAULT_DATA_SERIES_FIELD, this.getSeriesKeys());\n }\n\n /** seriesField end */\n\n // get default color scale\n // 重复代码太多了,整合一下\n protected _getDefaultColorScale() {\n const colorDomain = this.getDefaultColorDomain();\n const colorRange = this._getDataScheme();\n return new ColorOrdinalScale().domain(colorDomain).range?.(colorRange);\n }\n\n protected _getDataScheme() {\n return getDataScheme(this.getColorScheme(), this.type as any);\n }\n\n /** 获取默认 color scale 的 domain */\n getDefaultColorDomain(): any[] {\n return this._seriesField ? this.getViewDataStatistics()?.latestData[this._seriesField]?.values : [];\n }\n\n // 通用的默认颜色映射 用户设置优先级比这个高,会在setStyle中处理\n getColorAttribute() {\n return {\n scale: this._option.globalScale.getScale('color') ?? this._getDefaultColorScale(),\n field: this._seriesField ?? DEFAULT_DATA_SERIES_FIELD\n };\n }\n\n /** 获取维度field */\n getDimensionField(): string[] {\n return [];\n }\n /** 获取指标field */\n getMeasureField(): string[] {\n return [];\n }\n\n // 用于 axisHelper 更新\n protected onMarkPositionUpdate(): void {\n this.onMarkTreePositionUpdate(this.getMarksWithoutRoot());\n }\n\n protected onMarkTreePositionUpdate(marks: IMark[]): void {\n // do nothing\n }\n\n protected _createMark<M extends IMark>(\n markInfo: ISeriesMarkInfo,\n option: ISeriesMarkInitOption = {},\n config: ICompileMarkConfig = {}\n ) {\n const {\n key,\n groupKey,\n skipBeforeLayouted,\n themeSpec = {},\n markSpec,\n dataView,\n parent,\n isSeriesMark,\n noSeparateStyle = false\n } = option;\n const m = super._createMark<M>(markInfo, {\n key: key ?? this._getDataIdKey(),\n seriesId: this.id,\n attributeContext: this._markAttributeContext,\n componentType: option.componentType,\n noSeparateStyle,\n parent: parent !== false ? parent ?? this._rootMark : null\n });\n\n if (isValid(m)) {\n const spec = this.getSpec() || ({} as T);\n this._marks.addMark(m, { name: markInfo.name });\n\n if (isSeriesMark) {\n this._seriesMark = m;\n }\n\n if (isNil(dataView)) {\n m.setData(this._data);\n } else if (dataView !== false) {\n m.setDataView(dataView);\n }\n\n m.setSkipBeforeLayouted(skipBeforeLayouted !== false);\n\n if (!isNil(groupKey)) {\n m.setGroupKey(groupKey);\n }\n\n const markConfig: IMarkConfig = {\n ...config,\n progressiveStep: (spec as IMarkProgressiveConfig).progressiveStep,\n progressiveThreshold: (spec as IMarkProgressiveConfig).progressiveThreshold,\n large: (spec as IMarkProgressiveConfig).large,\n largeThreshold: (spec as IMarkProgressiveConfig).largeThreshold,\n morph: config.morph ?? false,\n useSequentialAnimation: (spec as any).useSequentialAnimation,\n support3d: config.support3d ?? (spec.support3d || !!(spec as any).zField),\n morphKey: spec.morph?.morphKey || `${this.getSpecIndex()}_${this.getMarks().length}`,\n morphElementKey: spec.morph?.morphElementKey ?? config.morphElementKey\n };\n\n m.setMarkConfig(markConfig);\n\n this.initMarkStyleWithSpec(m, mergeSpec({}, themeSpec, markSpec || (spec as any)[m.name]));\n }\n return m;\n }\n\n protected _getDataIdKey() {\n // 系列图元默认使用 rawData 初始生成的唯一数据 id 作为 key\n return super._getDataIdKey() ?? DEFAULT_DATA_KEY;\n }\n\n /**\n * 默认数据 id 生成逻辑。\n * 数据中的 维度A的值_维度B的值_***_维度C的值_seriesField的值_index\n * index作用是为了避免 id 重复\n */\n protected _getSeriesDataKey(datum: Datum) {\n let key = '';\n if (!datum) {\n return key;\n }\n\n const dimensionFields = this.getDimensionField();\n key = dimensionFields.map(field => datum[field]).join('_');\n\n const seriesField = this.getSeriesField();\n\n if (seriesField && !dimensionFields.includes(seriesField)) {\n key += `_${datum[seriesField]}`;\n }\n\n return key;\n }\n\n /**\n * data\n */\n addViewDataFilter(option: ITransformOptions) {\n (this._viewDataFilter ?? this.getViewData())?.transform(option, false);\n }\n\n reFilterViewData() {\n (this._viewDataFilter ?? this.getViewData())?.reRunAllTransform();\n }\n\n reTransformViewData() {\n this._data?.getDataView()?.reRunAllTransform();\n }\n\n fillData() {\n this.getRawData()?.reRunAllTransform();\n }\n\n compile() {\n this.compileData(); // 系列只需要编译数据,mark 将在 region 编译过程中编译\n }\n\n getDefaultShapeType() {\n return 'circle';\n }\n\n getFieldAlias(field: string) {\n if (\n field === STACK_FIELD_END ||\n field === STACK_FIELD_END_PERCENT ||\n field === STACK_FIELD_START ||\n field === STACK_FIELD_START_PERCENT\n ) {\n field = this.getStackValueField();\n }\n return getFieldAlias(this.getRawData(), field) ?? field;\n }\n\n protected _getInvalidConnectType() {\n return this._invalidType === 'zero' ? 'zero' : this._invalidType === 'link' ? 'connect' : 'none';\n }\n\n protected _getInvalidDefined(datum: Datum) {\n const checkFields = this.getInvalidCheckFields();\n\n if (!checkFields.length) {\n return true;\n }\n\n return checkFields.every(field => {\n return couldBeValidNumber(datum[field]);\n });\n }\n\n protected _getRelatedComponentSpecInfo(specKey: string) {\n const specIndex = this.getSpecIndex();\n const relatedComponent = this._option\n .getSpecInfo()\n .component[specKey]?.filter(componentInfo => componentInfo.seriesIndexes.includes(specIndex));\n return relatedComponent ?? [];\n }\n\n protected _forEachStackGroup(callback: (node: ISeriesStackDataLeaf) => void, node?: ISeriesStackDataMeta) {\n node = node ?? this._viewStackData?.latestData;\n if (!node) {\n return;\n }\n\n if ((node as ISeriesStackDataLeaf).values?.length) {\n callback(node as ISeriesStackDataLeaf);\n } else if ((node as ISeriesStackDataNode).nodes) {\n Object.values((node as ISeriesStackDataNode).nodes).forEach(n => {\n this._forEachStackGroup(callback, n);\n });\n }\n }\n\n /** 判断 datum 是否在 viewData 中 */\n isDatumInViewData(datum: Datum) {\n if (!datum) {\n return false;\n }\n const viewDataList = this.getViewData().latestData;\n if (!viewDataList) {\n return false;\n }\n if (viewDataList.includes(datum)) {\n return true;\n }\n return viewDataList.some((viewDatum: Datum) => Object.keys(datum).every(key => datum[key] === viewDatum[key]));\n }\n\n getSeriesFieldValue(datum: Datum, seriesField?: string) {\n return datum[seriesField ?? this.getSeriesField() ?? DEFAULT_DATA_SERIES_FIELD];\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import type { IModelEvaluateOption, IModelInitOption } from '../../model/interface';
2
- import type { BoxPlotShaftShape, IOutlierMarkSpec } from '../../typings';
2
+ import type { BoxPlotShaftShape, IOutlierMarkSpec, Datum, DirectionType } from '../../typings';
3
3
  import { CartesianSeries } from '../cartesian/cartesian';
4
4
  import type { SeriesMarkMap } from '../interface';
5
5
  import { SeriesTypeEnum } from '../interface/type';
@@ -15,6 +15,7 @@ export declare class BoxPlotSeries<T extends IBoxPlotSeriesSpec = IBoxPlotSeries
15
15
  boxPlot: import("./interface").IBoxPlotSeriesTheme;
16
16
  };
17
17
  static readonly mark: SeriesMarkMap;
18
+ protected _bandPosition: number;
18
19
  protected _minField: string;
19
20
  getMinField(): string;
20
21
  protected _maxField: string;
@@ -51,6 +52,7 @@ export declare class BoxPlotSeries<T extends IBoxPlotSeriesSpec = IBoxPlotSeries
51
52
  compileData(): void;
52
53
  init(option: IModelInitOption): void;
53
54
  private _getMarkWidth;
55
+ protected _getPosition(direction: DirectionType, datum: Datum): number;
54
56
  onLayoutEnd(): void;
55
57
  private _initAnimationSpec;
56
58
  initAnimation(): void;
@@ -38,7 +38,7 @@ import { boxPlotSeriesMark } from "./constant";
38
38
 
39
39
  import { Factory } from "../../core/factory";
40
40
 
41
- import { merge, isNumber } from "@visactor/vutils";
41
+ import { merge, isNumber, isValid, array, last } from "@visactor/vutils";
42
42
 
43
43
  import { getGroupAnimationParams } from "../util/utils";
44
44
 
@@ -50,6 +50,10 @@ import { registeBoxPlotScaleAnimation } from "./animation";
50
50
 
51
51
  import { boxPlot } from "../../theme/builtin/common/series/box-plot";
52
52
 
53
+ import { getActualNumValue } from "../../util/space";
54
+
55
+ import { isContinuous } from "@visactor/vscale";
56
+
53
57
  const DEFAULT_STROKE_WIDTH = 2, DEFAULT_SHAFT_FILL_OPACITY = .5, DEFAULT_SHAFT_SHAPE = "line";
54
58
 
55
59
  export const DEFAULT_FILL_COLOR = "#FFF";
@@ -60,7 +64,7 @@ const DEFAULT_OUTLIER_SIZE = 10;
60
64
 
61
65
  export class BoxPlotSeries extends CartesianSeries {
62
66
  constructor() {
63
- super(...arguments), this.type = SeriesTypeEnum.boxPlot;
67
+ super(...arguments), this.type = SeriesTypeEnum.boxPlot, this._bandPosition = 0;
64
68
  }
65
69
  getMinField() {
66
70
  return this._minField;
@@ -93,7 +97,7 @@ export class BoxPlotSeries extends CartesianSeries {
93
97
  return this._outliersStyle;
94
98
  }
95
99
  setAttrFromSpec() {
96
- var _a, _b, _c, _d, _e;
100
+ var _a, _b, _c, _d, _e, _f, _g;
97
101
  super.setAttrFromSpec();
98
102
  const boxPlotStyle = null !== (_b = null === (_a = this._spec.boxPlot) || void 0 === _a ? void 0 : _a.style) && void 0 !== _b ? _b : {};
99
103
  this._minField = this._spec.minField, this._maxField = this._spec.maxField, this._q1Field = this._spec.q1Field,
@@ -102,7 +106,7 @@ export class BoxPlotSeries extends CartesianSeries {
102
106
  this._boxWidth = boxPlotStyle.boxWidth, this._shaftShape = null !== (_d = boxPlotStyle.shaftShape) && void 0 !== _d ? _d : "line",
103
107
  this._shaftWidth = boxPlotStyle.shaftWidth, this._boxFillColor = boxPlotStyle.boxFill,
104
108
  this._strokeColor = boxPlotStyle.stroke, this._shaftFillOpacity = "bar" === this._shaftShape ? null !== (_e = boxPlotStyle.shaftFillOpacity) && void 0 !== _e ? _e : .5 : void 0,
105
- this._outliersStyle = this._spec.outliersStyle;
109
+ this._outliersStyle = null !== (_f = this._spec.outliersStyle) && void 0 !== _f ? _f : null === (_g = this._spec.outlier) || void 0 === _g ? void 0 : _g.style;
106
110
  }
107
111
  initMark() {
108
112
  this._boxPlotMark = this._createMark(BoxPlotSeries.mark.boxPlot, {
@@ -121,60 +125,58 @@ export class BoxPlotSeries extends CartesianSeries {
121
125
  if (boxPlotMark) {
122
126
  const commonBoxplotStyles = {
123
127
  lineWidth: this._lineWidth,
124
- fill: null !== (_a = this._boxFillColor) && void 0 !== _a ? _a : "line" === this._shaftShape ? "#FFF" : this.getColorAttribute(),
128
+ fill: null !== (_a = this._boxFillColor) && void 0 !== _a ? _a : "line" !== this._shaftShape ? this.getColorAttribute() : "#FFF",
125
129
  minMaxFillOpacity: this._shaftFillOpacity,
126
- stroke: null !== (_b = this._strokeColor) && void 0 !== _b ? _b : "line" === this._shaftShape ? this.getColorAttribute() : "#000"
130
+ stroke: null !== (_b = this._strokeColor) && void 0 !== _b ? _b : "line" !== this._shaftShape ? "#000" : this.getColorAttribute()
127
131
  };
128
132
  boxPlotMark.setGlyphConfig({
129
133
  direction: this._direction,
130
134
  shaftShape: this._shaftShape
131
135
  });
132
- const boxPlotMarkStyles = "horizontal" === this._direction ? Object.assign(Object.assign({
133
- y: this.dataToPositionY.bind(this)
134
- }, commonBoxplotStyles), {
136
+ const boxPlotMarkStyles = "horizontal" === this._direction ? {
137
+ y: datum => this._getPosition(this.direction, datum),
135
138
  boxHeight: () => {
136
139
  var _a;
137
- return null !== (_a = this._boxWidth) && void 0 !== _a ? _a : this._getMarkWidth();
140
+ return getActualNumValue(null !== (_a = this._boxWidth) && void 0 !== _a ? _a : "100%", this._getMarkWidth());
138
141
  },
139
142
  ruleHeight: () => {
140
143
  var _a;
141
- return null !== (_a = this._shaftWidth) && void 0 !== _a ? _a : this._getMarkWidth();
144
+ return getActualNumValue(null !== (_a = this._shaftWidth) && void 0 !== _a ? _a : "100%", this._getMarkWidth());
142
145
  },
143
146
  q1q3Height: () => {
144
147
  var _a;
145
- return null !== (_a = this._boxWidth) && void 0 !== _a ? _a : this._getMarkWidth();
148
+ return getActualNumValue(null !== (_a = this._boxWidth) && void 0 !== _a ? _a : "100%", this._getMarkWidth());
146
149
  },
147
150
  minMaxHeight: () => {
148
151
  var _a;
149
- return null !== (_a = this._shaftWidth) && void 0 !== _a ? _a : this._getMarkWidth();
152
+ return getActualNumValue(null !== (_a = this._shaftWidth) && void 0 !== _a ? _a : "100%", this._getMarkWidth());
150
153
  }
151
- }) : Object.assign(Object.assign({
152
- x: this.dataToPositionX.bind(this)
153
- }, commonBoxplotStyles), {
154
+ } : {
155
+ x: datum => this._getPosition(this.direction, datum),
154
156
  boxWidth: () => {
155
157
  var _a;
156
- return null !== (_a = this._boxWidth) && void 0 !== _a ? _a : this._getMarkWidth();
158
+ return getActualNumValue(null !== (_a = this._boxWidth) && void 0 !== _a ? _a : "100%", this._getMarkWidth());
157
159
  },
158
160
  ruleWidth: () => {
159
161
  var _a;
160
- return null !== (_a = this._shaftWidth) && void 0 !== _a ? _a : this._getMarkWidth();
162
+ return getActualNumValue(null !== (_a = this._shaftWidth) && void 0 !== _a ? _a : "100%", this._getMarkWidth());
161
163
  },
162
164
  q1q3Width: () => {
163
165
  var _a;
164
- return null !== (_a = this._boxWidth) && void 0 !== _a ? _a : this._getMarkWidth();
166
+ return getActualNumValue(null !== (_a = this._boxWidth) && void 0 !== _a ? _a : "100%", this._getMarkWidth());
165
167
  },
166
168
  minMaxWidth: () => {
167
169
  var _a;
168
- return null !== (_a = this._shaftWidth) && void 0 !== _a ? _a : this._getMarkWidth();
170
+ return getActualNumValue(null !== (_a = this._shaftWidth) && void 0 !== _a ? _a : "100%", this._getMarkWidth());
169
171
  }
170
- });
171
- this.setMarkStyle(boxPlotMark, boxPlotMarkStyles, STATE_VALUE_ENUM.STATE_NORMAL, AttributeLevel.Series);
172
+ };
173
+ this.setMarkStyle(boxPlotMark, commonBoxplotStyles, STATE_VALUE_ENUM.STATE_NORMAL, AttributeLevel.Series),
174
+ this.setMarkStyle(boxPlotMark, boxPlotMarkStyles, STATE_VALUE_ENUM.STATE_NORMAL, AttributeLevel.Built_In);
172
175
  }
173
176
  const outlierMark = this._outlierMark;
174
177
  outlierMark && this.setMarkStyle(outlierMark, {
175
178
  fill: null !== (_d = null === (_c = this._outliersStyle) || void 0 === _c ? void 0 : _c.fill) && void 0 !== _d ? _d : this.getColorAttribute(),
176
- size: isNumber(null === (_e = this._outliersStyle) || void 0 === _e ? void 0 : _e.size) ? this._outliersStyle.size : 10,
177
- symbolType: "circle"
179
+ size: isNumber(null === (_e = this._outliersStyle) || void 0 === _e ? void 0 : _e.size) ? this._outliersStyle.size : 10
178
180
  }, STATE_VALUE_ENUM.STATE_NORMAL, AttributeLevel.Series);
179
181
  }
180
182
  initBoxPlotMarkStyle() {
@@ -203,12 +205,12 @@ export class BoxPlotSeries extends CartesianSeries {
203
205
  const outlierMark = this._outlierMark;
204
206
  if (outlierMark && axisHelper) {
205
207
  const {dataToPosition: dataToPosition} = axisHelper, scale = null === (_b = null == axisHelper ? void 0 : axisHelper.getScale) || void 0 === _b ? void 0 : _b.call(axisHelper, 0), outlierMarkPositionChannel = "horizontal" === this._direction ? {
206
- y: this.dataToPositionY.bind(this),
208
+ y: datum => this._getPosition(this.direction, datum),
207
209
  x: datum => valueInScaleRange(dataToPosition(this.getDatumPositionValues(datum, BOX_PLOT_OUTLIER_VALUE_FIELD), {
208
210
  bandPosition: this._bandPosition
209
211
  }), scale)
210
212
  } : {
211
- x: this.dataToPositionX.bind(this),
213
+ x: datum => this._getPosition(this.direction, datum),
212
214
  y: datum => valueInScaleRange(dataToPosition(this.getDatumPositionValues(datum, BOX_PLOT_OUTLIER_VALUE_FIELD), {
213
215
  bandPosition: this._bandPosition
214
216
  }), scale)
@@ -247,9 +249,34 @@ export class BoxPlotSeries extends CartesianSeries {
247
249
  super.init(option), this.initBoxPlotMarkStyle();
248
250
  }
249
251
  _getMarkWidth() {
252
+ var _a;
250
253
  if (this._autoBoxWidth) return this._autoBoxWidth;
251
- const bandAxisHelper = "horizontal" === this._direction ? this._yAxisHelper : this._xAxisHelper, xField = "horizontal" === this._direction ? this._fieldY : this._fieldX, autoBoxWidth = bandAxisHelper.getBandwidth(xField.length - 1) / xField.length;
252
- return this._autoBoxWidth = autoBoxWidth, this._autoBoxWidth;
254
+ const bandAxisHelper = "horizontal" === this._direction ? this._yAxisHelper : this._xAxisHelper, depthFromSpec = this._groups ? this._groups.fields.length : 1, bandWidth = null === (_a = bandAxisHelper.getBandwidth) || void 0 === _a ? void 0 : _a.call(bandAxisHelper, depthFromSpec - 1);
255
+ let width = bandWidth;
256
+ return isValid(this._spec.boxWidth) && (width = getActualNumValue(this._spec.boxWidth, bandWidth)),
257
+ isValid(this._spec.boxMinWidth) && (width = Math.max(width, getActualNumValue(this._spec.boxMinWidth, bandWidth))),
258
+ isValid(this._spec.boxMaxWidth) && (width = Math.min(width, getActualNumValue(this._spec.boxMaxWidth, bandWidth))),
259
+ this._autoBoxWidth = width, this._autoBoxWidth;
260
+ }
261
+ _getPosition(direction, datum) {
262
+ var _a, _b, _c, _d;
263
+ let axisHelper, sizeAttribute, dataToPosition;
264
+ "horizontal" === direction ? (axisHelper = this.getYAxisHelper(), sizeAttribute = "boxHeight",
265
+ dataToPosition = this.dataToPositionY.bind(this)) : (axisHelper = this.getXAxisHelper(),
266
+ sizeAttribute = "boxWidth", dataToPosition = this.dataToPositionX.bind(this));
267
+ const scale = axisHelper.getScale(0), depth = this._groups ? this._groups.fields.length : 1, bandWidth = null === (_a = axisHelper.getBandwidth) || void 0 === _a ? void 0 : _a.call(axisHelper, depth - 1), size = this._boxPlotMark.getAttribute(sizeAttribute, datum);
268
+ if (depth > 1 && isValid(this._spec.boxGapInGroup)) {
269
+ const groupFields = this._groups.fields, boxGapInGroup = array(this._spec.boxGapInGroup);
270
+ let totalWidth = 0, offSet = 0;
271
+ for (let index = groupFields.length - 1; index >= 1; index--) {
272
+ const groupField = groupFields[index], groupValues = null !== (_c = null === (_b = axisHelper.getScale(index)) || void 0 === _b ? void 0 : _b.domain()) && void 0 !== _c ? _c : [], groupCount = groupValues.length, gap = getActualNumValue(null !== (_d = boxGapInGroup[index - 1]) && void 0 !== _d ? _d : last(boxGapInGroup), bandWidth), i = groupValues.indexOf(datum[groupField]);
273
+ index === groupFields.length - 1 ? (totalWidth += groupCount * size + (groupCount - 1) * gap,
274
+ offSet += i * (size + gap)) : (offSet += i * (totalWidth + gap), totalWidth += totalWidth + (groupCount - 1) * gap);
275
+ }
276
+ return scale.scale(datum[groupFields[0]]) + axisHelper.getBandwidth(0) / 2 - totalWidth / 2 + offSet + size / 2;
277
+ }
278
+ const continuous = isContinuous(scale.type || "band");
279
+ return dataToPosition(datum) + .5 * bandWidth + (continuous ? -bandWidth / 2 : 0);
253
280
  }
254
281
  onLayoutEnd() {
255
282
  super.onLayoutEnd(), this._autoBoxWidth = null;
@@ -257,7 +284,7 @@ export class BoxPlotSeries extends CartesianSeries {
257
284
  _initAnimationSpec(config = {}) {
258
285
  const newConfig = merge({}, config);
259
286
  return [ "appear", "enter", "update", "exit", "disappear" ].forEach((state => {
260
- newConfig[state] && "scaleIn" === newConfig[state].type ? newConfig[state].type = "line" === this._shaftShape ? "boxplotScaleIn" : "barBoxplotScaleIn" : newConfig[state] && "scaleOut" === newConfig[state].type && (newConfig[state].type = "line" === this._shaftShape ? "boxplotScaleOut" : "barBoxplotScaleOut");
287
+ newConfig[state] && "scaleIn" === newConfig[state].type ? newConfig[state].type = "bar" === this._shaftShape ? "barBoxplotScaleIn" : "boxplotScaleIn" : newConfig[state] && "scaleOut" === newConfig[state].type && (newConfig[state].type = "bar" === this._shaftShape ? "barBoxplotScaleOut" : "boxplotScaleOut");
261
288
  })), newConfig;
262
289
  }
263
290
  initAnimation() {