@visactor/vchart 2.0.13-alpha.9 → 2.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/es5/index.js +1 -1
- package/build/index.es.js +79 -103
- package/build/index.js +79 -103
- package/build/index.min.js +2 -2
- package/build/tsconfig.tsbuildinfo +1 -1
- package/cjs/compile/compiler.d.ts +0 -1
- package/cjs/compile/compiler.js +0 -3
- package/cjs/compile/compiler.js.map +1 -1
- package/cjs/compile/interface/compilable-item.d.ts +1 -2
- package/cjs/compile/interface/compilable-item.js.map +1 -1
- package/cjs/component/brush/brush.d.ts +1 -4
- package/cjs/component/brush/brush.js +14 -31
- package/cjs/component/brush/brush.js.map +1 -1
- package/cjs/component/brush/interface.d.ts +1 -3
- package/cjs/component/brush/interface.js.map +1 -1
- package/cjs/component/crosshair/interface/spec.d.ts +0 -1
- package/cjs/component/crosshair/interface/spec.js.map +1 -1
- package/cjs/component/tooltip/interface/common.d.ts +0 -1
- package/cjs/component/tooltip/interface/common.js.map +1 -1
- package/cjs/component/tooltip/processor/base.js +1 -1
- package/cjs/component/tooltip/processor/base.js.map +1 -1
- package/cjs/component/tooltip/tooltip.d.ts +0 -1
- package/cjs/component/tooltip/tooltip.js +2 -3
- package/cjs/component/tooltip/tooltip.js.map +1 -1
- package/cjs/component/tooltip/utils/show-tooltip.d.ts +1 -0
- package/cjs/component/tooltip/utils/show-tooltip.js +30 -6
- package/cjs/component/tooltip/utils/show-tooltip.js.map +1 -1
- package/cjs/constant/correlation.js +1 -1
- package/cjs/constant/data.js +1 -1
- package/cjs/constant/event.js +1 -1
- package/cjs/constant/funnel.js +1 -1
- package/cjs/constant/gradient.js +1 -1
- package/cjs/constant/hierarchy.js +1 -1
- package/cjs/constant/label.js +1 -1
- package/cjs/constant/layout.js +1 -1
- package/cjs/constant/marker.js +1 -1
- package/cjs/constant/polar.js +1 -1
- package/cjs/constant/scatter.js +1 -1
- package/cjs/constant/scroll-bar.js +2 -1
- package/cjs/constant/sunburst.js +1 -1
- package/cjs/constant/waterfall.js +1 -1
- package/cjs/constant/word-cloud.js +1 -1
- package/cjs/core/index.d.ts +1 -1
- package/cjs/core/index.js +1 -1
- package/cjs/core/index.js.map +1 -1
- package/cjs/core/interface.d.ts +1 -9
- package/cjs/core/interface.js +1 -1
- package/cjs/core/interface.js.map +1 -1
- package/cjs/core/util.js +1 -1
- package/cjs/core/vchart.d.ts +0 -4
- package/cjs/core/vchart.js +2 -11
- package/cjs/core/vchart.js.map +1 -1
- package/cjs/data/initialize.js +1 -1
- package/cjs/data/register.js +1 -1
- package/cjs/env/env.js +1 -1
- package/cjs/env/index.js +1 -1
- package/cjs/event/bubble.js +1 -1
- package/cjs/event/event-dispatcher.js +1 -1
- package/cjs/event/event.js +2 -2
- package/cjs/event/event.js.map +1 -1
- package/cjs/event/events/dimension/dimension-hover.js +2 -4
- package/cjs/event/events/dimension/dimension-hover.js.map +1 -1
- package/cjs/event/index.js +1 -1
- package/cjs/event/interface.js +1 -2
- package/cjs/interaction/config.js +1 -1
- package/cjs/interaction/index.js +1 -1
- package/cjs/interaction/interaction.js +1 -1
- package/cjs/mark/base/base-mark.js +9 -5
- package/cjs/mark/base/base-mark.js.map +1 -1
- package/esm/compile/compiler.d.ts +0 -1
- package/esm/compile/compiler.js +0 -3
- package/esm/compile/compiler.js.map +1 -1
- package/esm/compile/interface/compilable-item.d.ts +1 -2
- package/esm/compile/interface/compilable-item.js.map +1 -1
- package/esm/component/brush/brush.d.ts +1 -4
- package/esm/component/brush/brush.js +14 -31
- package/esm/component/brush/brush.js.map +1 -1
- package/esm/component/brush/interface.d.ts +1 -3
- package/esm/component/brush/interface.js.map +1 -1
- package/esm/component/crosshair/interface/spec.d.ts +0 -1
- package/esm/component/crosshair/interface/spec.js.map +1 -1
- package/esm/component/tooltip/interface/common.d.ts +0 -1
- package/esm/component/tooltip/interface/common.js.map +1 -1
- package/esm/component/tooltip/processor/base.js +1 -1
- package/esm/component/tooltip/processor/base.js.map +1 -1
- package/esm/component/tooltip/tooltip.d.ts +0 -1
- package/esm/component/tooltip/tooltip.js +2 -3
- package/esm/component/tooltip/tooltip.js.map +1 -1
- package/esm/component/tooltip/utils/show-tooltip.d.ts +1 -0
- package/esm/component/tooltip/utils/show-tooltip.js +30 -6
- package/esm/component/tooltip/utils/show-tooltip.js.map +1 -1
- package/esm/constant/correlation.js +1 -1
- package/esm/constant/data.js +1 -1
- package/esm/constant/event.js +1 -1
- package/esm/constant/funnel.js +1 -1
- package/esm/constant/gradient.js +1 -1
- package/esm/constant/hierarchy.js +1 -1
- package/esm/constant/label.js +1 -1
- package/esm/constant/layout.js +1 -1
- package/esm/constant/marker.js +1 -1
- package/esm/constant/polar.js +1 -1
- package/esm/constant/scatter.js +1 -1
- package/esm/constant/scroll-bar.js +2 -1
- package/esm/constant/sunburst.js +1 -1
- package/esm/constant/waterfall.js +1 -1
- package/esm/constant/word-cloud.js +1 -1
- package/esm/core/index.d.ts +1 -1
- package/esm/core/index.js +1 -1
- package/esm/core/index.js.map +1 -1
- package/esm/core/interface.d.ts +1 -9
- package/esm/core/interface.js +1 -1
- package/esm/core/interface.js.map +1 -1
- package/esm/core/util.js +1 -1
- package/esm/core/vchart.d.ts +0 -4
- package/esm/core/vchart.js +2 -11
- package/esm/core/vchart.js.map +1 -1
- package/esm/data/initialize.js +1 -1
- package/esm/data/register.js +1 -1
- package/esm/env/env.js +1 -1
- package/esm/env/index.js +1 -1
- package/esm/event/bubble.js +1 -1
- package/esm/event/event-dispatcher.js +1 -1
- package/esm/event/event.js +2 -2
- package/esm/event/event.js.map +1 -1
- package/esm/event/events/dimension/dimension-hover.js +2 -4
- package/esm/event/events/dimension/dimension-hover.js.map +1 -1
- package/esm/event/index.js +1 -1
- package/esm/event/interface.js +1 -2
- package/esm/interaction/config.js +1 -1
- package/esm/interaction/index.js +1 -1
- package/esm/interaction/interaction.js +1 -1
- package/esm/mark/base/base-mark.js +9 -5
- package/esm/mark/base/base-mark.js.map +1 -1
- package/package.json +9 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/mark/base/base-mark.ts"],"names":[],"mappings":"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","file":"base-mark.js","sourcesContent":["import { DiffState } from '../interface/enum';\nimport { type IStateInfo, type IModelMarkAttributeContext, STATE_VALUE_ENUM } from '../../compile/mark/interface';\nimport type { BaseSeries } from '../../series/base/base-series';\nimport type {\n Datum,\n IMarkSpec,\n ConvertToMarkStyleSpec,\n GradientStop,\n IVisual,\n IVisualScale,\n IVisualSpecStyle,\n ICommonSpec,\n FunctionType,\n ValueType,\n StringOrNumber,\n Maybe\n} from '../../typings';\nimport type { DataView } from '@visactor/vdataset';\nimport { mergeSpec } from '@visactor/vutils-extension';\nimport { Color } from '../../util/color';\nimport { createScaleWithSpec } from '../../util/scale';\nimport { MarkTypeEnum } from '../interface';\nimport type {\n IMarkRaw,\n IMarkStateStyle,\n IMarkStyle,\n IMark,\n IMarkOption,\n StyleConvert,\n VisualScaleType,\n MarkInputStyle,\n GroupedData,\n IAttrs,\n IMarkGraphic,\n DiffStateValues,\n ProgressiveContext,\n IProgressiveTransformResult,\n MarkType,\n AnimationStateValues\n} from '../interface';\nimport { GradientType, DEFAULT_GRADIENT_CONFIG } from '../../constant/gradient';\nimport { AttributeLevel } from '../../constant/attribute';\nimport { isValidScaleType } from '@visactor/vscale';\nimport { computeActualDataScheme, getDataScheme } from '../../theme/color-scheme/util';\nimport type { ISeries } from '../../series/interface';\nimport { MarkStateManager } from '../../compile/mark';\nimport type {\n ICompilableMark,\n IMarkCompileOption,\n IMarkConfig,\n IMarkStateManager,\n StateValueType\n} from '../../compile/mark/interface';\nimport { array, degreeToRadian, isArray, isBoolean, isFunction, isNil, isObject, isValid } from '@visactor/vutils';\nimport { curveTypeTransform, groupData, runEncoder } from '../utils/common';\nimport type { ICompilableInitOption } from '../../compile/interface';\nimport { LayoutState } from '../../compile/interface';\nimport type { IGroupGraphicAttribute, IGraphicAttribute, IGroup, IGraphic } from '@visactor/vrender-core';\nimport { createGroup, CustomPath2D } from '@visactor/vrender-core';\nimport { isStateAttrChangeable } from '../../compile/mark/util';\nimport { Factory } from '../../core/factory';\nimport { DEFAULT_DATA_KEY } from '../../constant/data';\nimport { GrammarItem } from '../../compile/grammar-item';\nimport { LayoutZIndex } from '../../constant/layout';\nimport type { IModel } from '../../model/interface';\nimport type { ICompilableData } from '../../compile/data/interface';\nimport type { IAnimationConfig } from '../../animation/interface';\nimport { AnimationStateEnum, type MarkAnimationSpec } from '../../animation/interface';\nimport { CompilableData } from '../../compile/data/compilable-data';\nimport { getDiffAttributesOfGraphic } from '../../util/mark';\nimport { log } from '../../util/debug';\nimport { morph as runMorph } from '../../compile/morph';\n\nexport type ExChannelCall = (\n key: string | number | symbol,\n datum: Datum,\n states: StateValueType,\n baseValue: unknown\n) => unknown;\n\nexport class BaseMark<T extends ICommonSpec> extends GrammarItem implements IMarkRaw<T> {\n /** 类型 */\n readonly type: MarkType = undefined as unknown as MarkType;\n\n /** name */\n readonly name: string = 'mark';\n\n /** key field */\n readonly key: ICompilableMark['key'];\n\n protected _markConfig: IMarkConfig = {\n zIndex: LayoutZIndex.Mark,\n /** morph动画关联关系配置 */\n morph: false\n };\n\n protected _isCommited?: boolean;\n\n commit(render?: boolean, recursion?: boolean) {\n if (recursion && this.getMarks().length > 0) {\n this.getMarks().forEach(m => m.commit(false, recursion));\n }\n\n this._isCommited = true;\n if (render) {\n this.getCompiler().renderNextTick();\n }\n }\n\n uncommit() {\n this._isCommited = false;\n }\n\n isCommited() {\n return this._isCommited;\n }\n\n getMarkConfig(): IMarkConfig {\n return this._markConfig;\n }\n setMarkConfig(config: IMarkConfig) {\n Object.keys(config).forEach(key => {\n (this._markConfig as any)[key] = (config as any)[key];\n });\n }\n\n /** 可见性 */\n protected _visible: boolean = true;\n getVisible() {\n return this._visible;\n }\n setVisible(visible: boolean) {\n this._visible = visible;\n }\n\n /**\n * 用户设置的 id\n */\n protected _userId: StringOrNumber;\n getUserId() {\n return this._userId;\n }\n setUserId(userId: StringOrNumber) {\n if (isValid(userId)) {\n this._userId = userId;\n }\n }\n\n /** parent model */\n readonly model: IModel;\n\n /** 数据(可以没有) */\n protected _data: ICompilableData;\n getDataView(): DataView | undefined {\n return this._data?.getDataView();\n }\n setDataView(d?: DataView) {\n if (isNil(this._data)) {\n this.initMarkData(this._option);\n }\n this._data.setDataView(d);\n }\n getData() {\n return this._data;\n }\n setData(d?: ICompilableData) {\n this._data = d;\n if (d) {\n d.addRelatedMark(this);\n }\n }\n\n /** 默认的stateStyle */\n stateStyle: IMarkStateStyle<T> = {};\n\n /** 状态管理器 */\n state: IMarkStateManager;\n\n protected _unCompileChannel: { [key in string]: boolean } = {};\n\n hasState(state: string) {\n return state in this.state.getStateMap();\n }\n getState(state: string) {\n return this.state.getStateMap()[state];\n }\n\n protected _animationConfig: Partial<MarkAnimationSpec>;\n getAnimationConfig() {\n return this._animationConfig;\n }\n\n setAnimationConfig(config: Partial<MarkAnimationSpec>) {\n // group mark 动画默认只挂到自己\n const defaultPrams = this.type === 'group' ? { selfOnly: true } : {};\n const formatAnimationCfg = (cfg: IAnimationConfig) => {\n const options = (cfg as any)!.options ?? {};\n\n return {\n ...defaultPrams,\n ...cfg,\n options: (datum: any, graphic: IMarkGraphic, customParams: any) => {\n const _options = typeof options === 'function' ? options(datum, graphic, customParams) : options;\n\n if (graphic && graphic.context && graphic.context.compiler && isValid(graphic.context.modelId)) {\n const model = graphic.context.compiler.getChart()?.getModelById(graphic.context.modelId);\n\n return {\n ..._options,\n layoutRect: (model as any)?.getLayoutRect?.()\n };\n }\n\n return {\n ..._options\n };\n }\n };\n };\n\n // 封装options,批量添加一些默认参数\n const animationConfig: Partial<MarkAnimationSpec> = {};\n\n Object.keys(config).forEach(key => {\n const value = (config as any)[key];\n if (isArray(value)) {\n (animationConfig as any)[key] = value.map(formatAnimationCfg);\n } else if (isValid(value)) {\n (animationConfig as any)[key] = formatAnimationCfg(value);\n }\n });\n this._animationConfig = animationConfig;\n }\n\n protected _disabledAnimationStates?: string[] = [];\n\n disableAnimationByState(state: string | string[]) {\n const states = array(state);\n this._disabledAnimationStates = [...new Set([...this._disabledAnimationStates, ...states])];\n }\n\n enableAnimationByState(state: string | string[]) {\n const states = array(state);\n this._disabledAnimationStates = this._disabledAnimationStates.filter(s => !states.includes(s));\n }\n\n /** 布局标记 */\n private _skipBeforeLayouted = false;\n\n setSkipBeforeLayouted(skip: boolean) {\n this._skipBeforeLayouted = skip;\n }\n protected _groupKey?: string;\n setGroupKey(groupKey: string) {\n this._groupKey = groupKey;\n }\n\n protected _stateSort?: (stateA: string, stateB: string) => number;\n\n protected declare _product: Maybe<IGroup>;\n getProduct() {\n return this._product;\n }\n\n // 保存上一次的mark,用于morph的时候获取上次的图元\n protected declare _lastMark?: IMark;\n\n /** 初始化 mark data */\n protected initMarkData(option: ICompilableInitOption) {\n this._data = new CompilableData(option);\n\n this._data.addRelatedMark(this);\n }\n\n protected _compileProduct(option?: IMarkCompileOption) {\n this.commit();\n this._context = option?.context;\n const product = this.getProduct();\n // 处理 visible 为 false 的情况\n if (!this._visible) {\n if (isValid(product)) {\n this.removeProduct();\n }\n return;\n } else if (isValid(product)) {\n if (option.group && product.parent !== option.group) {\n option.group.appendChild(product);\n }\n } else {\n const compiler = this.getCompiler();\n if (!compiler.isInited) {\n return;\n }\n this._initProduct(option?.group);\n }\n\n if (isNil(this._product)) {\n return;\n }\n this.compileData();\n this.compileState();\n this.compileEncode();\n // this.compileContext(option?.context);\n // this.compileTransform();\n }\n\n /** 创建语法元素对象 */\n protected _initProduct(group?: IGroup) {\n const stage = this.getStage();\n\n if (!stage) {\n return;\n }\n\n // 声明语法元素\n const id = this.getProductId();\n\n this._product = createGroup(\n this.type !== MarkTypeEnum.group\n ? {\n pickable: false,\n zIndex: this._markConfig.zIndex,\n overflow: this._markConfig.overflow\n }\n : {}\n );\n // todo 为了和之前的版本兼容,这里暂时设置成name\n this._product.name = id;\n // 为了从graphic上能索引到mark\n this._product.mark = this;\n\n (group ?? this.getCompiler()?.getRootGroup()).appendChild(this._product);\n\n // if (this.name && this._product) {\n // this._product.name = this.name;\n // }\n this._compiledProductId = id;\n }\n\n generateProductId() {\n if (this._userId) {\n return `${this._userId}`;\n }\n return `${this.name}_${this.id}`;\n }\n\n layout(layout: () => void) {\n // todo\n }\n\n compileData() {\n if (isNil(this._data)) {\n return;\n }\n this._data.compile();\n\n // 绑定数据\n // const dataProduct = this._data.getProduct();\n // if (isValid(this._product) && isValid(dataProduct)) {\n // // this._product.join(dataProduct as IData, this.key, undefined, this.getGroupKey());\n // }\n }\n\n // protected _separateStyle() {\n // const { [STATE_VALUE_ENUM.STATE_NORMAL]: normalStyle } = this.stateStyle;\n\n // const enterStyles: Record<string, MarkFunctionType<any>> = this._option.noSeparateStyle ? null : {};\n // const updateStyles: Record<string, MarkFunctionType<any>> = {};\n // Object.keys(normalStyle).forEach(key => {\n // if (this._unCompileChannel[key]) {\n // return;\n // }\n\n // if (this._option.noSeparateStyle || isStateAttrChangeable(key, normalStyle, this.getGroupKey())) {\n // updateStyles[key] = {\n // callback: this._computeAttribute(key, 'normal'),\n // dependency: [this.stateKeyToSignalName('markUpdateRank')]\n // };\n // } else {\n // enterStyles[key] = this._computeAttribute(key, 'normal');\n // }\n // });\n // return { enterStyles, updateStyles };\n // }\n\n compileEncode() {\n // const { [STATE_VALUE_ENUM.STATE_NORMAL]: normalStyle, ...temp } = this.stateStyle;\n // const { enterStyles, updateStyles } = this._separateStyle();\n // const encoders: any = {\n // update: updateStyles,\n // group: enterStyles\n // };\n // Object.keys(temp).forEach(state => {\n // const styles: Record<string, MarkFunctionType<any>> = {};\n // Object.keys(temp[state]).forEach(key => {\n // if (this._unCompileChannel[key]) {\n // return;\n // }\n // styles[key] = {\n // callback: this._computeAttribute(key, state),\n // dependency: [this.stateKeyToSignalName('markUpdateRank')]\n // };\n // });\n // encoders[state] = styles;\n // });\n // // 在布局完成前不进行encode\n // if (this._skipBeforeLayouted) {\n // }\n }\n\n compileState() {\n // this.state.compileState(this, this._stateSort);\n }\n\n compileAnimation() {\n // if (this._animationConfig) {\n // let stateSignal: any;\n // if (this.type === 'component') {\n // // 组件有自己的动画状态\n // stateSignal = (this.model as IComponent).animate?.getAnimationStateSignalName();\n // } else {\n // const region = (this.model as ISeries).getRegion?.();\n // stateSignal = region?.animate?.getAnimationStateSignalName();\n // }\n // this._product.animation(this._animationConfig);\n // this._product.animationState({\n // callback: (datum: Datum, element: IElement, parameters: Record<string, any>) => {\n // return parameters[stateSignal]?.callback(datum, element);\n // },\n // dependency: stateSignal\n // });\n // if (this._animationConfig.normal) {\n // if (!this._animationConfig.appear) {\n // this._event.on(VGRAMMAR_HOOK_EVENT.AFTER_DO_RENDER, () => {\n // this.runAnimationByState(AnimationStateEnum.normal);\n // });\n // } else {\n // this._event.on(VGRAMMAR_HOOK_EVENT.ANIMATION_END, ({ event }) => {\n // if (event.mark === this.getProduct() && event.animationState === AnimationStateEnum.appear) {\n // this.runAnimationByState(AnimationStateEnum.normal);\n // }\n // });\n // }\n // }\n // }\n }\n\n _context: any;\n\n compileContext(extraContext?: any) {\n // const config: IMarkConfig = {\n // ...this._markConfig,\n // context: {\n // }\n // };\n\n this._context = {\n markId: this.id,\n modelId: this.model.id,\n markUserId: this._userId,\n modelUserId: this.model.userId,\n ...extraContext\n };\n }\n\n getContext() {\n return this._context;\n }\n\n protected compileTransform() {\n // if (this._transform?.length) {\n // this.getProduct().transform(this._transform);\n // }\n }\n\n updateState(newState: Record<string, unknown>, noRender?: boolean) {\n this.commit();\n\n return this.state.updateState(newState, noRender);\n }\n\n getMarks(): IMark[] {\n return [];\n }\n\n runAnimationByState(state?: string) {\n // return this.getProduct()?.animate?.runAnimationByState(state);\n }\n\n stopAnimationByState(state?: string) {\n // return this.getProduct()?.animate?.stopAnimationByState(state);\n }\n\n pauseAnimationByState(state?: string) {\n // return this.getProduct()?.animate?.pauseAnimationByState(state);\n }\n\n resumeAnimationByState(state?: string) {\n // return this.getProduct()?.animate?.resumeAnimationByState(state);\n }\n\n removeProduct() {\n if (this._product && this._product.parent) {\n this._product.parent.removeChild(this._product);\n }\n this._product = null;\n this._compiledProductId = null;\n }\n release() {\n // if (this._product && this._product.parent) {\n // this._product.parent.removeChild(this._product);\n // }\n\n this.state.release();\n super.release();\n this._lastMark = null;\n }\n\n protected _simpleStyle: T;\n\n setSimpleStyle(s: T) {\n this._simpleStyle = s;\n }\n\n getSimpleStyle(): T {\n return this._simpleStyle;\n }\n\n protected declare _option: IMarkOption;\n\n protected _attributeContext: IModelMarkAttributeContext;\n\n protected _encoderOfState: Record<string, Record<string, (datum: Datum) => any>>;\n\n /** by _unCompileChannel, some channel need add default channel to make sure update available */\n _extensionChannel: {\n [key: string | number | symbol]: string[];\n } = {};\n /** same as _extensionChannel. when compute channel, add extension channel effect */\n _computeExChannel: {\n [key: string | number | symbol]: ExChannelCall;\n } = {};\n\n constructor(name: string, option: IMarkOption) {\n super(option);\n this.name = name;\n this.model = option.model;\n this.key = option.key;\n this.state = new MarkStateManager(option, this as unknown as IMark) as unknown as IMarkStateManager;\n // 这里的上下文多数情况下与 mark 是什么是没有关系的,与mark的使用者,也就是series,component有的逻辑有关。\n this._attributeContext = option.attributeContext;\n option.map?.set(this.id, this as unknown as IMark);\n }\n\n created(): void {\n this._initStyle();\n }\n\n /**\n * 外部调用,根据 spec 初始化 style(如果由 IModel 派生类调用,请使用 IModel.initMarkStyleWithSpec)\n * @param spec\n * @param key\n * @returns\n */\n initStyleWithSpec(spec: IMarkSpec<T>) {\n if (!spec) {\n return;\n }\n\n if (isValid(spec.id)) {\n this._userId = spec.id;\n }\n\n // interactive\n if (isBoolean(spec.interactive)) {\n this._markConfig.interactive = spec.interactive;\n }\n // zIndex\n if (isValid(spec.zIndex)) {\n this._markConfig.zIndex = spec.zIndex;\n }\n // visible\n if (isBoolean(spec.visible)) {\n this.setVisible(spec.visible);\n }\n\n this._markConfig.setCustomizedShape = spec.customShape;\n\n this._stateSort = spec.stateSort;\n\n // style\n this._initSpecStyle(spec);\n }\n\n protected _transformStyleValue<T>(\n styleConverter: StyleConvert<T>,\n transform: (value: ValueType<T>) => ValueType<T>\n ): StyleConvert<any> {\n if ((styleConverter as VisualScaleType).scale) {\n const scale = (styleConverter as VisualScaleType).scale;\n const range = scale.range();\n scale.range(range.map(transform));\n return styleConverter as StyleConvert<T>;\n } else if (typeof styleConverter === 'function') {\n return ((...args) => {\n return transform((styleConverter as FunctionType<number>)(...args) as ValueType<T>);\n }) as StyleConvert<T>;\n }\n return transform(styleConverter as ValueType<T>);\n }\n\n convertAngleToRadian(styleConverter: StyleConvert<number>) {\n // 用户传入的角度配置,需要做一层转换\n return this._transformStyleValue(styleConverter, degreeToRadian);\n }\n\n isUserLevel(level: number) {\n return [\n AttributeLevel.User_Mark,\n AttributeLevel.User_Series,\n AttributeLevel.User_Chart,\n AttributeLevel.User_SeriesStyle\n ].includes(level);\n }\n\n /**\n * 由外部series调用,设置markStyle的接口(如果由 IModel 派生类调用,请使用 IModel.setMarkStyle)\n * @param style\n * @param level\n * @param state\n */\n setStyle<U extends keyof T>(\n style: Partial<IMarkStyle<T>>,\n state: StateValueType = 'normal',\n level: number = 0\n ): void {\n if (isNil(style)) {\n return;\n }\n\n if (this.stateStyle[state] === undefined) {\n this.stateStyle[state] = {};\n }\n\n const isUserLevel = this.isUserLevel(level);\n\n Object.keys(style).forEach((attr: string) => {\n let attrStyle = style[attr] as MarkInputStyle<T[U]>;\n if (isNil(attrStyle)) {\n return;\n }\n\n attrStyle = this._filterAttribute(attr as any, attrStyle, state, level, isUserLevel);\n\n this.setAttribute(attr as any, attrStyle, state, level);\n });\n }\n\n getStyle(key: string, state: StateValueType = 'normal'): any {\n return this.stateStyle[state][key]?.style;\n }\n\n /** 过滤单个 attribute */\n protected _filterAttribute<U extends keyof T>(\n attr: U,\n style: MarkInputStyle<T[U]>,\n state: StateValueType,\n level: number,\n isUserLevel: boolean\n ): StyleConvert<T[U]> {\n let newStyle = this._styleConvert(style);\n if (isUserLevel) {\n switch (attr) {\n case 'angle':\n newStyle = this.convertAngleToRadian(newStyle);\n break;\n case 'innerPadding':\n case 'outerPadding':\n // VRender 的 padding 定义基于 centent-box 盒模型,默认正方向是向外扩,与 VChart 不一致。这里将 padding 符号取反\n newStyle = this._transformStyleValue(newStyle, (value: number) => -value);\n break;\n case 'curveType':\n newStyle = this._transformStyleValue(newStyle, (value: string) =>\n curveTypeTransform(value, (this._option.model as any).direction)\n );\n break;\n }\n }\n return newStyle;\n }\n\n /**\n * TODO: 没有外部调用\n * 设置mark样式所参考的图元\n */\n setReferer<U extends keyof T>(mark: IMarkRaw<T>, styleKey?: U, state?: StateValueType) {\n if (!mark) {\n return;\n }\n if (styleKey && state) {\n const style = this.stateStyle[state] ?? { [styleKey]: {} };\n this.stateStyle[state][styleKey] = {\n ...(style[styleKey] as unknown as any),\n ...{ referer: mark }\n };\n return;\n }\n\n Object.entries(this.stateStyle).forEach(([state, style]) => {\n Object.entries(style).forEach(([styleKey, style]) => {\n this.stateStyle[state][styleKey].referer = mark;\n });\n });\n }\n\n setPostProcess<U extends keyof T>(key: U, postProcessFunc: any, state: StateValueType = 'normal') {\n if (this.stateStyle[state]?.[key]) {\n this.stateStyle[state][key].postProcess = postProcessFunc;\n }\n }\n\n getAttribute<U extends keyof T>(key: U, datum: Datum, state: StateValueType = 'normal') {\n return this._computeAttribute(key, state)(datum);\n }\n\n getAttributesOfState(datum: Datum, state: StateValueType = 'normal') {\n const style = this.stateStyle[state];\n\n if (style) {\n const res: any = {};\n Object.keys(style).forEach(k => {\n if (!this._unCompileChannel[k]) {\n res[k] = this._computeAttribute(k, state)(datum);\n }\n });\n return res;\n }\n }\n\n setAttribute<U extends keyof T>(\n attr: U,\n style: MarkInputStyle<T[U]>,\n state: StateValueType = 'normal',\n level: number = 0\n ) {\n if (this.stateStyle[state] === undefined) {\n this.stateStyle[state] = {};\n }\n\n if (this.stateStyle[state][attr] === undefined) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this.stateStyle[state][attr] = {\n level,\n style,\n referer: undefined\n };\n }\n const attrLevel = this.stateStyle[state][attr]?.level;\n if (isValid(attrLevel) && attrLevel <= level) {\n mergeSpec(this.stateStyle[state][attr], { style, level });\n }\n\n // some attr has extension channel in VChart to make some effect\n if (state !== 'normal') {\n if (attr in this._extensionChannel) {\n this._extensionChannel[attr].forEach(key => {\n if (this.stateStyle[state][key] === undefined) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this.stateStyle[state][key as keyof T] = this.stateStyle.normal[key];\n }\n });\n }\n }\n }\n\n /**\n * 与 vgrammar 默认值一致的样式可以不设置默认值或设置为undefined, 减少encode属性\n */\n protected _getDefaultStyle() {\n return {\n visible: true,\n // mark的层级应该在mark层 不在encode属性层\n // zIndex: LayoutZIndex.Mark,\n x: 0,\n y: 0\n } as IMarkStyle<T>;\n }\n\n // /**\n // * 获取该 mark 不支持的图形属性,由子类覆写\n // * @returns\n // */\n // protected getIgnoreAttributes(): string[] {\n // return [];\n // }\n\n protected _styleConvert<U extends keyof T>(style?: MarkInputStyle<T[U]>): StyleConvert<T[U]> | undefined {\n if (!style) {\n return style as undefined;\n }\n // visual spec 转换为 scale 类型的mark style\n if (isValidScaleType((style as IVisualSpecStyle<unknown, T[U]>).type) || (style as IVisualScale).scale) {\n // const _style = style as IVisual<T[U]>;\n const scale = createScaleWithSpec(style as IVisual<T[U]>, {\n globalScale: this._option.globalScale,\n seriesId: this._option.seriesId\n });\n if (scale) {\n return {\n scale,\n field: (style as IVisual<T[U]>).field,\n changeDomain: (style as IVisualScale).changeDomain\n };\n }\n }\n return style as StyleConvert<T[U]>;\n }\n\n protected _computeAttribute<U extends keyof T>(key: U, state: StateValueType) {\n let stateStyle = this.stateStyle[state]?.[key];\n if (!stateStyle) {\n stateStyle = this.stateStyle.normal[key];\n }\n const baseValueFunctor = this._computeStateAttribute(stateStyle, key, state);\n const hasPostProcess = isFunction(stateStyle?.postProcess);\n const hasExCompute = key in this._computeExChannel;\n\n if (hasPostProcess && hasExCompute) {\n const exCompute = this._computeExChannel[key];\n return (datum: Datum) => {\n let baseValue = baseValueFunctor(datum);\n\n baseValue = stateStyle.postProcess(baseValue, datum, this._attributeContext, this.getDataView());\n\n return exCompute(key, datum, state, baseValue);\n };\n } else if (hasPostProcess) {\n return (datum: Datum) => {\n return stateStyle.postProcess(baseValueFunctor(datum), datum, this._attributeContext, this.getDataView());\n };\n } else if (hasExCompute) {\n const exCompute = this._computeExChannel[key];\n return (datum: Datum) => {\n return exCompute(key, datum, state, baseValueFunctor(datum));\n };\n }\n return baseValueFunctor;\n }\n\n protected _computeStateAttribute<U extends keyof T>(stateStyle: any, key: U, state: StateValueType) {\n if (!stateStyle) {\n return (datum: Datum) => undefined as any;\n }\n if (stateStyle.referer) {\n return stateStyle.referer._computeAttribute(key, state);\n }\n if (!stateStyle.style) {\n return (datum: Datum) => stateStyle.style;\n }\n\n if (typeof stateStyle.style === 'function') {\n return (datum: Datum) => stateStyle.style(datum, this._attributeContext, { mark: this }, this.getDataView());\n }\n\n if (GradientType.includes(stateStyle.style.gradient)) {\n // 渐变色处理,支持各个属性回调\n return this._computeGradientAttr(stateStyle.style);\n }\n\n if (['outerBorder', 'innerBorder'].includes(key as string)) {\n // 内外描边处理,支持各个属性回调\n return this._computeBorderAttr(stateStyle.style);\n }\n\n if (isValidScaleType(stateStyle.style.scale?.type)) {\n return (datum: Datum) => {\n let data = datum;\n if (this.model.modelType === 'series' && (this.model as unknown as ISeries).getMarkData) {\n data = (this.model as unknown as ISeries).getMarkData(datum);\n }\n\n return stateStyle.style.scale.scale(data[stateStyle.style.field]);\n };\n }\n return (datum: Datum) => {\n return stateStyle.style;\n };\n }\n\n private _initStyle(): void {\n const defaultStyle = this._getDefaultStyle();\n this.setStyle(defaultStyle, 'normal', 0);\n }\n\n private _initSpecStyle(spec: IMarkSpec<T>) {\n // style\n if (spec.style) {\n this.setStyle(spec.style, 'normal', AttributeLevel.User_Mark);\n }\n const state = spec.state;\n if (state) {\n Object.keys(state).forEach(key => {\n const stateTemp = state[key];\n if ('style' in stateTemp) {\n const style = stateTemp.style;\n let stateInfo: IStateInfo = { stateValue: key };\n if ('level' in stateTemp) {\n stateInfo.level = stateTemp.level as number;\n }\n if ('filter' in stateTemp) {\n if (isFunction(stateTemp.filter)) {\n stateInfo = {\n filter: stateTemp.filter as (datum: any, options: Record<string, any>) => boolean,\n ...stateInfo\n };\n } else {\n stateInfo = { ...stateTemp.filter, ...stateInfo };\n }\n }\n this.state.addStateInfo(stateInfo);\n this.setStyle(style as ConvertToMarkStyleSpec<T>, key, AttributeLevel.User_Mark);\n } else {\n this.setStyle(stateTemp, key, AttributeLevel.User_Mark);\n }\n });\n }\n }\n\n private _computeGradientAttr(gradientStyle: any) {\n const { gradient, scale, field, ...rest } = gradientStyle;\n\n let colorScale = scale;\n let colorField = field;\n if ((!scale || !field) && this.model.modelType === 'series') {\n // 目前只有series有这个属性\n const { scale: globalColorScale, field: globalField } = (this.model as BaseSeries<any>).getColorAttribute();\n if (!scale) {\n // 获取全局的 colorScale\n colorScale = globalColorScale;\n }\n if (!colorField) {\n colorField = globalField;\n }\n }\n\n const themeColor = computeActualDataScheme(\n getDataScheme(\n this.model.getColorScheme(),\n this.model.modelType === 'series' ? this.model.getSpec?.() : undefined\n ),\n (this.model as unknown as ISeries).getDefaultColorDomain()\n );\n // 默认配置处理\n const mergedStyle = {\n ...(DEFAULT_GRADIENT_CONFIG as any)[gradient],\n ...rest\n };\n return (data: Datum) => {\n const computeStyle: any = {};\n const markData = this.getDataView();\n Object.keys(mergedStyle).forEach(key => {\n const value = mergedStyle[key];\n if (key === 'stops') {\n computeStyle.stops = value.map((stop: GradientStop) => {\n const { opacity, color, offset } = stop;\n let computeColor = color ?? colorScale?.scale(data[colorField]);\n if (isFunction(color)) {\n computeColor = color(data, this._attributeContext, markData);\n }\n\n if (isValid(opacity)) {\n computeColor = Color.SetOpacity(computeColor as string, opacity);\n }\n\n return {\n offset: isFunction(offset) ? offset(data, this._attributeContext, markData) : offset,\n color: computeColor || themeColor[0]\n };\n });\n } else if (isFunction(value)) {\n computeStyle[key] = value(data, this._attributeContext, markData);\n } else {\n computeStyle[key] = value;\n }\n });\n\n computeStyle.gradient = gradient;\n\n return computeStyle;\n };\n }\n\n private _computeBorderAttr(borderStyle: any) {\n const { scale, field, ...mergedStyle } = borderStyle;\n\n return (data: Datum) => {\n const computeStyle: any = {};\n\n Object.keys(mergedStyle).forEach(key => {\n const value = mergedStyle[key];\n if (isFunction(value)) {\n computeStyle[key] = value(data, this._attributeContext, this.getDataView());\n } else {\n computeStyle[key] = value;\n }\n });\n if (!('stroke' in computeStyle)) {\n const themeColor = computeActualDataScheme(\n getDataScheme(\n this.model.getColorScheme(),\n this.model.modelType === 'series' ? this.model.getSpec?.() : undefined\n ),\n (this.model as unknown as ISeries).getDefaultColorDomain()\n );\n let colorScale = scale;\n let colorField = field;\n if ((!scale || !field) && this.model.modelType === 'series') {\n // 目前只有series有这个属性\n const { scale: globalColorScale, field: globalField } = (this.model as BaseSeries<any>).getColorAttribute();\n if (!scale) {\n // 获取全局的 colorScale\n colorScale = globalColorScale;\n }\n if (!colorField) {\n colorField = globalField;\n }\n computeStyle.stroke = colorScale?.scale(data[colorField]) || themeColor[0];\n }\n } else if (GradientType.includes(mergedStyle.stroke?.gradient)) {\n computeStyle.stroke = this._computeGradientAttr(mergedStyle.stroke)(data);\n }\n return computeStyle;\n };\n }\n\n protected _dataByGroup: GroupedData<Datum>;\n /**\n * 最新的数据map\n */\n protected _dataByKey: GroupedData<Datum>;\n /**\n * 上一次的数据map\n */\n protected _prevDataByKey: GroupedData<Datum>;\n protected _graphicMap: Map<string, IMarkGraphic> = new Map();\n protected _graphics: IMarkGraphic[] = [];\n /**\n * only need to clear elements after join and render\n * but `handleRenderEnd` will be call after every render\n */\n needClear?: boolean;\n\n protected _keyGetter: (datum: Datum) => string;\n protected _groupKeyGetter: (datum: Datum) => string;\n protected renderContext?: {\n parameters?: any;\n progressive?: ProgressiveContext;\n beforeTransformProgressive?: IProgressiveTransformResult;\n };\n protected _attrsByGroup?: Record<string, T>;\n\n protected _getDataByKey(data: Datum[]) {\n return groupData(data, (datum: Datum, index: number) => {\n return `${this._groupKeyGetter(datum)}_${this._keyGetter(datum) ?? index}`;\n });\n }\n\n protected _getCommonContext() {\n return {\n compiler: this.getCompiler(),\n markType: this.type as MarkTypeEnum,\n markId: this.id,\n modelId: this.model.id,\n markUserId: this._userId,\n modelUserId: this.model.userId\n };\n }\n\n prepareMorph(mark: IMark) {\n this._lastMark = mark;\n }\n\n reuse(mark: IMark) {\n if (this.type !== mark.type) {\n return;\n }\n this._product = mark.getProduct();\n this._graphics = mark.getGraphics();\n this._graphicMap = (mark as any)._graphicMap;\n\n this._graphicMap.forEach(g => {\n g.context = { ...g.context, ...this._getCommonContext() };\n });\n this._dataByKey = (mark as any)._dataByKey;\n this._prevDataByKey = (mark as any)._prevDataByKey;\n this.needClear = (mark as any).needClear;\n }\n\n private _parseProgressiveContext(data: Datum[]) {\n const enableProgressive =\n this._markConfig.progressiveStep > 0 &&\n this._markConfig.progressiveThreshold > 0 &&\n this._markConfig.progressiveStep < this._markConfig.progressiveThreshold;\n const large =\n this._markConfig.large && this._markConfig.largeThreshold > 0 && data.length >= this._markConfig.largeThreshold;\n\n if (enableProgressive) {\n const groupedData = this._dataByGroup;\n\n if (\n groupedData &&\n groupedData.keys &&\n groupedData.keys.some(key => groupedData.data.get(key).length > this._markConfig.progressiveThreshold)\n ) {\n return {\n large,\n progressive: {\n data,\n step: this._markConfig.progressiveStep,\n currentIndex: 0,\n totalStep: groupedData.keys.reduce((total, key) => {\n return Math.max(Math.ceil(groupedData.data.get(key).length / this._markConfig.progressiveStep), total);\n }, 1),\n groupedData: groupedData.data as Map<string, any[]>\n }\n };\n }\n\n return { large };\n }\n\n return {\n large\n };\n }\n\n getGraphics() {\n return this._graphics;\n }\n\n protected _createGraphic(attrs: any = {}): IGraphic {\n return Factory.createGraphicComponent(this.type, attrs);\n }\n\n protected _runGroupData(data: Datum[]) {\n this._keyGetter = isFunction(this.key)\n ? (this.key as (datum: Datum) => string)\n : isValid(this.key)\n ? (datum: Datum) => datum?.[this.key as string]\n : (datum: Datum) => datum?.[DEFAULT_DATA_KEY];\n this._groupKeyGetter = isValid(this._groupKey)\n ? (datum: Datum) => {\n return `${datum?.[this._groupKey]}`;\n }\n : () => 'key';\n\n this._dataByGroup = groupData(data, this._groupKeyGetter);\n }\n\n getAnimationState() {\n const graphicsAnimationStates = this._graphics.map(g => g.context.animationState);\n const animationState = graphicsAnimationStates.every(state => state === AnimationStateEnum.appear)\n ? AnimationStateEnum.appear\n : graphicsAnimationStates.every(state => state === AnimationStateEnum.disappear)\n ? AnimationStateEnum.disappear\n : graphicsAnimationStates[0];\n return animationState ?? AnimationStateEnum.none;\n }\n\n protected createAnimationStateList(type: string, animationConfig: Partial<MarkAnimationSpec>) {\n let config = (animationConfig as any)[type];\n if (config && Array.isArray(config)) {\n config = config.length === 1 ? config[0] : config;\n }\n // TODO 因为数据的覆盖特点,无动画的时候新的更新一定会覆盖前一次的旧值,所以默认都是后面的动画覆盖前面的动画\n // TODO 但是如果用户定义了一个动画数组,他的预期是动画不会覆盖,通过priority为INfinity来控制不覆盖\n if (Array.isArray(config)) {\n return config.map((item: any, index: number) => ({\n ...item,\n priority: item.priority ?? Infinity\n }));\n }\n return config\n ? {\n ...config,\n // 循环动画的优先级定为最高,不会被屏蔽掉\n priority: type === 'normal' ? config.priority ?? Infinity : config.priority\n }\n : config;\n }\n\n /**\n * 尝试执行morphing动画\n * @param graphics\n * @returns\n */\n protected tryRunMorphing(graphics: IMarkGraphic[]) {\n if (this._lastMark) {\n // 得设置入场图元的属性\n graphics.forEach(g => {\n if (g.context.animationState === 'appear' || g.context.animationState === 'enter') {\n g.setAttributes((g.getAttributes as any)(true));\n }\n });\n const res = runMorph([this._lastMark], [this as any], {});\n this._lastMark = null;\n return res;\n }\n return false;\n }\n\n protected _runStateAnimation(graphics: IMarkGraphic[]) {\n if (!this._animationConfig || graphics.length === 0) {\n return;\n }\n\n if (this.tryRunMorphing(graphics)) {\n return;\n }\n const animationConfig = this.getAnimationConfig();\n const useSequentialAnimation = this._markConfig.useSequentialAnimation ?? false;\n if (useSequentialAnimation && (this as any)._runSequentialAnimations) {\n (this as any)._runSequentialAnimations(graphics);\n return;\n }\n // 过滤出appear动画出来,appear动画是整体动画,可以放在全局,同时appear动画和normal动画是串行关系\n const isAppear = graphics.every(g => g.context.animationState === 'appear');\n // const appearConfig = (animationConfig as any).appear?.[0]; // TODO: animation: appear 数组\n const appearConfig = this.createAnimationStateList('appear', animationConfig);\n if (isAppear && this._product) {\n // TODO 一般appear都在最开始执行,所以这里不需要停掉normal动画\n // (this._product as IGroup).stopAnimationState('normal');\n const stateArray = appearConfig ? ['appear'] : [];\n const configArray = appearConfig\n ? [\n {\n name: 'appear',\n animation: appearConfig\n }\n ]\n : [];\n\n if ((animationConfig as any).normal) {\n stateArray.push('normal');\n const normal = this.createAnimationStateList('normal', animationConfig);\n const normalConfig = {\n name: 'normal',\n animation: normal\n };\n\n configArray.push(normalConfig);\n }\n this._product.applyAnimationState(stateArray, configArray);\n }\n\n // 判断是否需要走normal动画,enter动画执行完成后,需要跟一个normal动画\n let shouldRunNormal = false;\n // 处理除了appear以外的动画\n graphics.forEach(g => {\n const state = g.context.animationState;\n if (state === 'appear') {\n return;\n }\n const config = (animationConfig as any)[state] as any;\n if (config && config.length > 0) {\n const configList = config.map((item: any, index: number) => ({\n name: `${state}_${index}`,\n animation: item\n }));\n\n configList.forEach((item: any) => {\n item.animation.customParameters = g.context;\n });\n\n // configList.forEach((item: any) => {\n // item.animation.customParameters = g.context;\n // });\n const stateArray = [state];\n\n g.applyAnimationState(stateArray, [configList.length === 1 ? configList[0] : configList]);\n // configList.forEach((item: any) => {\n // item.animation.customParameters = null;\n // });\n }\n if (state === 'enter' && animationConfig.normal) {\n shouldRunNormal = true;\n }\n });\n\n if (shouldRunNormal && this._product && (animationConfig as any).normal?.length) {\n // 停止normal动画,并回复最初的属性\n (this._product as IGroup).stopAnimationState('normal', 'start');\n const normal = this.createAnimationStateList('normal', animationConfig);\n const normalConfig = {\n name: 'normal',\n animation: normal\n };\n (this._product as IGroup).applyAnimationState(['normal'], [normalConfig]);\n }\n }\n\n protected _setAnimationState(g: IMarkGraphic) {\n const callback =\n (this.type === MarkTypeEnum.component\n ? this.model.getAnimationStateCallback()\n : (this.model as ISeries).getRegion?.()?.getAnimationStateCallback()) ||\n ((g: IMarkGraphic) => {\n const diffState = g.context?.diffState;\n return diffState === AnimationStateEnum.exit\n ? AnimationStateEnum.exit\n : diffState === AnimationStateEnum.update\n ? AnimationStateEnum.update\n : AnimationStateEnum.appear;\n });\n const customizedState = callback(g);\n\n g.context.animationState = customizedState ?? g.context.diffState;\n\n // 复用exit的图元,需要设置属性为最初的属性\n if (g.context.animationState === DiffState.exit) {\n // 表示正在被复用,后续需要重设属性的\n g.context.reusing = true;\n // 停止所有动画,\n // TODO:属性可能回不去了(如果enter和exit不是一个动画),所以在encode阶段要获取finalAttribute,设置上去\n (g as any).animates && (g as any).animates.forEach((a: any) => a.stop());\n // force element to stop exit animation if it is reentered\n // todo animaiton\n // const animators = this.animate?.getElementAnimators(element, DiffState.exit);\n // animators && animators.forEach(animator => animator.stop('start'));\n }\n }\n\n protected _runJoin(data: Datum[]) {\n const newGroupedData = this._getDataByKey(data);\n const prevGroupedData = this._prevDataByKey;\n const allGraphics: IMarkGraphic[] = [];\n\n const enterGraphics = new Set<IMarkGraphic>(this._graphics.filter(g => g.context.diffState === DiffState.enter));\n\n const callback = (key: string, newData: Datum[], prevData: Datum[]) => {\n let g: IMarkGraphic;\n let diffState: DiffStateValues;\n\n if (isNil(newData)) {\n g = this._graphicMap.get(key);\n\n if (g) {\n diffState = DiffState.exit;\n }\n } else if (isNil(prevData)) {\n // enter\n if (this._graphicMap.has(key)) {\n g = this._graphicMap.get(key);\n } else {\n g = {} as IMarkGraphic; //\n }\n diffState = DiffState.enter;\n g.isExiting = false;\n\n this._graphicMap.set(key, g as IMarkGraphic);\n allGraphics.push(g as IMarkGraphic);\n } else {\n // update\n g = this._graphicMap.get(key);\n\n if (g) {\n diffState = DiffState.update;\n allGraphics.push(g);\n }\n }\n\n if (g) {\n enterGraphics.delete(g);\n g.context = {\n ...this._getCommonContext(),\n diffState,\n // 从旧context中继承\n reusing: g.context?.reusing,\n // 从旧context中继承\n originalFieldX: g.context?.originalFieldX,\n // 从旧context中继承\n originalFieldY: g.context?.originalFieldY,\n // 从旧context中继承\n fieldX: g.context?.fieldX,\n // 从旧context中继承\n fieldY: g.context?.fieldY,\n // TODO 如果newData为空,则使用旧的data,避免exit图元找不到data\n data: newData ?? g.context?.data,\n uniqueKey: key,\n key: newData ? this._keyGetter(newData[0]) : g.context?.key,\n groupKey: newData ? this._groupKeyGetter(newData[0]) : g.context?.groupKey,\n // TODO 用于判定这个图元是第几个,在OneByOne动画中控制顺序\n indexKey: '__VCHART_DEFAULT_DATA_INDEX',\n stateAnimateConfig: this.getAnimationConfig()?.state\n };\n this._setAnimationState(g);\n }\n return g;\n };\n\n if (prevGroupedData && newGroupedData) {\n const prevMap = new Map(prevGroupedData.data);\n const newKeys = newGroupedData.keys;\n\n newKeys.forEach(key => {\n callback(key, newGroupedData.data.get(key), prevMap.get(key));\n prevMap.delete(key);\n });\n\n prevGroupedData.keys.forEach(key => {\n if (prevMap.has(key)) {\n callback(key, null, prevMap.get(key));\n }\n });\n } else if (newGroupedData) {\n newGroupedData.keys.forEach(key => {\n // appear\n const g = callback(key, newGroupedData.data.get(key), null);\n if (g) {\n g.context.animationState = AnimationStateEnum.appear;\n // this._setAnimationState(g);\n }\n });\n } else if (prevGroupedData) {\n prevGroupedData.keys.forEach(key => {\n // disappear\n const g = callback(key, null, prevGroupedData.data.get(key));\n g.context.animationState = AnimationStateEnum.disappear;\n // this._setAnimationState(g);\n });\n }\n\n // Enter elements between dataflow start data and end data should be removed directly.\n enterGraphics.forEach(g => {\n this._graphicMap.delete(g.context.uniqueKey);\n\n if ((g as IMarkGraphic).parent) {\n (g as IMarkGraphic).parent.removeChild(g as IMarkGraphic);\n }\n\n (g as IMarkGraphic).release();\n });\n const graphicCount = allGraphics.length;\n allGraphics.forEach((g, index) => {\n g.context.graphicCount = graphicCount;\n g.context.graphicIndex = index;\n });\n this._dataByKey = newGroupedData;\n this._graphics = allGraphics;\n this.needClear = true;\n }\n\n _runEncoderOfGraphic(styles: Record<string, (datum: Datum) => any>, g: IMarkGraphic, attrs: any = {}) {\n return runEncoder(styles, g.context.data[0], attrs);\n }\n\n _runGroupEncoder(groupStyles: Record<string, (datum: Datum) => any>) {\n if (!this._dataByGroup) {\n return null;\n }\n\n const attrsByGroup: any = {};\n\n this._dataByGroup.keys.forEach(key => {\n attrsByGroup[key] = runEncoder(groupStyles, this._dataByGroup.data.get(key)[0]);\n });\n this._attrsByGroup = attrsByGroup;\n\n return attrsByGroup;\n }\n\n protected _transformGraphicAttributes(g: IMarkGraphic, attrs: any, groupAttrs?: any) {\n return {\n ...groupAttrs,\n ...attrs\n };\n }\n\n protected _separateNormalStyle(normalStyle: Partial<IAttrs<T>>) {\n const updateStyles = {};\n const groupStyles = {};\n\n Object.keys(normalStyle).forEach(key => {\n if (this._unCompileChannel[key]) {\n return;\n }\n\n if (this._option.noSeparateStyle || isStateAttrChangeable(key, normalStyle, this._groupKey)) {\n (updateStyles as any)[key] = normalStyle[key];\n } else {\n (groupStyles as any)[key] = normalStyle[key];\n }\n });\n\n return { updateStyles, groupStyles };\n }\n\n protected _getEncoderOfStyle = (stateName: string, style: Partial<IAttrs<T>>) => {\n if (style && stateName) {\n const validEncoder: Record<string, (datum: Datum) => any> = {};\n Object.keys(style).forEach(key => {\n if (this._unCompileChannel[key]) {\n return;\n }\n\n validEncoder[key] = this._computeAttribute(key, stateName);\n });\n\n return validEncoder;\n }\n\n return null;\n };\n\n protected _setGraphicFromMarkConfig = (g: IMarkGraphic) => {\n const { setCustomizedShape, graphicName } = this._markConfig;\n\n if (setCustomizedShape) {\n g.pathProxy = (attrs: Partial<IGraphicAttribute>) => {\n return setCustomizedShape(g.context.data, attrs, new CustomPath2D());\n };\n }\n\n if (graphicName) {\n if (isFunction(graphicName)) {\n g.name = (graphicName as (e: IMarkGraphic) => string)(g);\n } else {\n g.name = graphicName as string;\n }\n }\n };\n\n protected _setStateOfGraphic = (g: IMarkGraphic, hasAnimation?: boolean) => {\n g.clearStates();\n g.stateProxy = null;\n\n if (g.context.diffState === DiffState.enter || g.context.diffState === DiffState.update) {\n g.stateProxy = (stateName: string, nexStates: string[]) => {\n return this._runEncoderOfGraphic(this._encoderOfState?.[stateName], g);\n };\n\n g.context.states && g.useStates(g.context.states, hasAnimation);\n }\n };\n\n protected _addProgressiveGraphic(parent: IGroup, g: IMarkGraphic) {\n (parent as IGroup).incrementalAppendChild(g);\n }\n\n protected _runEncoder(graphics: IMarkGraphic[], noGroupEncode?: boolean) {\n const attrsByGroup = noGroupEncode ? null : this._runGroupEncoder(this._encoderOfState?.group);\n\n graphics.forEach((g, index) => {\n const attrs = this._runEncoderOfGraphic(this._encoderOfState?.update, g);\n\n // 配置的优先级高于encoder\n if (!isNil(this._markConfig.interactive)) {\n attrs.pickable = this._markConfig.interactive;\n }\n const finalAttrs = this._transformGraphicAttributes(g, attrs, attrsByGroup?.[g.context.groupKey]);\n\n g.context.finalAttrs = finalAttrs;\n });\n }\n\n protected _runApplyGraphic(graphics: IMarkGraphic[]) {\n const hasAnimation = this.hasAnimation();\n\n graphics.forEach((g, index) => {\n const finalAttrs = g.context.finalAttrs;\n\n const hasStateAnimation = this.hasAnimationByState(g.context.animationState);\n // 新创建的graphic\n if (!(g as any).setAttributes) {\n const mockGraphic = g;\n // TODO:如果要走入场、Enter动画,就不用设置值了,保存到diffAttrs中由入场动画自己去设置,因为入场动画可能会延迟执行,所以首帧不能直接设置属性\n // TODO 太麻烦了,会影响后续bounds等计算逻辑,还是首帧设置吧。。。\n g = this._createGraphic(finalAttrs) as IMarkGraphic;\n // g = this._createGraphic(finalAttrs) as IMarkGraphic;\n // 如果有动画,设置一下最终attribute\n if (hasAnimation) {\n g.setFinalAttributes?.(finalAttrs);\n }\n g.context = mockGraphic.context;\n g.context.diffAttrs = finalAttrs;\n\n const gIndex = this._graphics === graphics ? index : index + this._graphics.length - graphics.length;\n if (gIndex >= 0) {\n this._graphics[gIndex] = g;\n }\n\n if (this.renderContext?.progressive) {\n const groupIndex = this._dataByGroup ? this._dataByGroup.keys.indexOf(g.context.groupKey) : 0;\n const group = groupIndex >= 0 ? this._product.getChildAt(groupIndex) : null;\n if (group) {\n this._addProgressiveGraphic(group as IGroup, g);\n }\n } else {\n this._product.appendChild(g);\n this._graphicMap.set(g.context.uniqueKey, g);\n }\n } else {\n const diffAttrs = getDiffAttributesOfGraphic(g, finalAttrs);\n g.context.diffAttrs = diffAttrs;\n if (g.context.reusing) {\n // 表示正在被复用,需要重设属性的\n // TODO 理论上复用后只会走一次enter,所以这里lastAttrs不需要后续清除,这里需要硬拷贝(通过initAttributes重设属性也行)\n g.context.lastAttrs = g.attribute;\n g.initAttributes({});\n // 为了避免exit一些和enter不一样的属性,所以这里要重置属性\n // const finalAttrs = g.getFinalAttribute();\n // finalAttrs && g.initAttributes({ ...finalAttrs });\n // g.initAttributes(finalAttrs);\n g.context.reusing = false;\n } else if (!hasStateAnimation) {\n // 不是正在被复用的属性,也不需要走动画,那就设置属性\n hasAnimation ? g.setAttributesAndPreventAnimate(diffAttrs) : g.setAttributes(diffAttrs);\n }\n\n // 如果有动画,需要设置值\n if (hasAnimation) {\n g.setFinalAttributes(finalAttrs);\n }\n }\n\n this._setStateOfGraphic(g, hasStateAnimation);\n this._setGraphicFromMarkConfig(g);\n });\n }\n\n protected _updateEncoderByState() {\n const encoderOfState: Record<string, Record<string, (datum: Datum) => any>> = {};\n\n Object.keys(this.stateStyle).forEach(stateName => {\n if (stateName === STATE_VALUE_ENUM.STATE_NORMAL) {\n const { groupStyles, updateStyles } = this._separateNormalStyle(this.stateStyle[stateName]);\n\n encoderOfState.group = this._getEncoderOfStyle(stateName, groupStyles);\n encoderOfState.update = this._getEncoderOfStyle(stateName, updateStyles);\n } else {\n encoderOfState[stateName] = this._getEncoderOfStyle(stateName, this.stateStyle[stateName]);\n }\n });\n\n this._encoderOfState = encoderOfState;\n }\n\n protected _runState(graphics: IMarkGraphic[]) {\n graphics.forEach(g => {\n const prevInteractionStateValues = (g.currentStates ?? []).filter((sv: string) => {\n return !this.state.getStateInfo(sv);\n });\n const newStateValues = [...prevInteractionStateValues, ...this.state.checkState(g, g.context.data)];\n\n if (this._stateSort && newStateValues.length) {\n newStateValues.sort(this._stateSort);\n }\n // const prevStateValues = g.context.states;\n // const isStateChanged =\n // newStateValues.length !== prevStateValues.length ||\n // newStateValues.some((newState: string, index: number) => newState !== prevStateValues[index]);\n\n g.context.states = newStateValues;\n });\n }\n\n protected _getAttrsFromConfig(attrs: IGroupGraphicAttribute = {}): IGroupGraphicAttribute {\n const { zIndex, clip, clipPath, overflow } = this._markConfig;\n\n if (!isNil(zIndex)) {\n attrs.zIndex = zIndex;\n }\n\n if (!isNil(clip)) {\n attrs.clip = clip;\n }\n\n if (!isNil(clipPath)) {\n const paths = isArray(clipPath) ? clipPath : clipPath(this._graphics);\n\n if (paths && paths.length) {\n attrs.path = paths;\n } else {\n attrs.clip = false;\n attrs.path = paths;\n }\n }\n\n if (!isNil(overflow)) {\n attrs.overflow = overflow;\n }\n\n return attrs;\n }\n\n protected _updateAttrsOfGroup() {\n const attrs = this._getAttrsFromConfig();\n\n this._product?.setAttributes(attrs);\n\n if (this._markConfig.support3d && this._product) {\n this._product.setMode('3d');\n }\n }\n\n protected _runBeforeTransform(data: Datum[]) {\n const transforms = this._transform?.filter(transformSpec => {\n if (transformSpec.type) {\n const transform = Factory.getGrammarTransform(transformSpec.type);\n return transform && (!transform.runType || transform.runType === 'beforeJoin');\n }\n\n return false;\n });\n\n return this.runTransforms(transforms, data);\n }\n\n protected _runEncoderTransform(data: Datum[], isProgressive: boolean) {\n const transforms = this._transform?.filter(transformSpec => {\n if (transformSpec.type) {\n const transform = Factory.getGrammarTransform(transformSpec.type);\n return transform && transform.runType === 'afterEncode' && !!transform.canProgressive === isProgressive;\n }\n\n return false;\n });\n\n return this.runTransforms(transforms, data);\n }\n\n renderInner() {\n this._updateEncoderByState();\n\n const data = this._data?.getProduct() ?? [{}];\n\n const transformData = this._runBeforeTransform(data);\n let markData: Datum[];\n\n if ((transformData as any)?.progressive) {\n this.renderContext = {\n beforeTransformProgressive: (transformData as any).progressive as IProgressiveTransformResult\n };\n const p = (transformData as any).progressive;\n if (p.canAnimate && p.canAnimate() && p.unfinished()) {\n this._updateAttrsOfGroup();\n return;\n }\n markData = p.output();\n } else {\n markData = array(transformData);\n this._runGroupData(markData);\n this.renderContext = this._parseProgressiveContext(markData);\n }\n\n if (this.renderContext?.progressive) {\n this._graphicMap.clear();\n this._runProgressiveStep();\n } else {\n this._runJoin(markData);\n this._runState(this._graphics);\n this._runEncoder(this._graphics);\n this._runEncoderTransform(this._graphics, false);\n this._runApplyGraphic(this._graphics);\n }\n\n this._updateAttrsOfGroup();\n }\n\n render() {\n if (this.isCommited()) {\n if (\n this.getVisible() &&\n (!this._skipBeforeLayouted || this.getCompiler().getLayoutState() !== LayoutState.before)\n ) {\n log(`render mark: ${this.getProductId()}, type is ${this.type}`);\n this.renderInner();\n }\n\n this.uncommit();\n }\n }\n\n updateMarkState(key: string): void {\n if (!this._product) {\n return;\n }\n const stateInfo = this.state.getStateInfo(key);\n\n this._graphics.forEach(g => {\n if (this.state.checkOneState(g, g.context.data, stateInfo) === 'in') {\n g.addState(key, true, this.hasAnimationByState('state'));\n } else {\n g.removeState(key, this.hasAnimationByState('state'));\n }\n });\n }\n\n clearExitGraphics() {\n this._prevDataByKey = this._dataByKey;\n\n const doRemove = (g: IMarkGraphic, key: string) => {\n this._graphicMap.delete(key);\n if (g.parent) {\n g.parent.removeChild(g);\n }\n if (g.release) {\n g.release();\n }\n };\n this._graphicMap.forEach((g, key) => {\n if (g.context.diffState !== DiffState.exit || g.isExiting) {\n return;\n }\n // 避免重复执行退场动画\n if (g.context.animationState === DiffState.exit && this.hasAnimationByState('exit')) {\n g.isExiting = true;\n // 执行exit动画\n const animationConfig = this.getAnimationConfig();\n if ((animationConfig as any).exit && (animationConfig as any).exit.length) {\n const exitConfigList = (animationConfig as any).exit.map((item: any, index: number) => ({\n name: `exit_${index}`,\n animation: {\n ...item,\n customParameters: g.context\n }\n }));\n g.applyAnimationState(['exit'], [exitConfigList.length === 1 ? exitConfigList[0] : exitConfigList], () => {\n // 有可能又被复用了,所以这里需要判断,如果还是在exiting阶段的话才删除\n // TODO 这里如果频繁执行的话,可能会误判\n doRemove(g, key);\n });\n }\n } else {\n doRemove(g, key);\n }\n });\n }\n\n isProgressive() {\n return this.renderContext && (!!this.renderContext.progressive || !!this.renderContext.beforeTransformProgressive);\n }\n\n canAnimateAfterProgressive() {\n return (\n this.renderContext &&\n this.renderContext.beforeTransformProgressive &&\n this.renderContext.beforeTransformProgressive.canAnimate?.()\n );\n }\n\n isDoingProgressive() {\n return (\n this.renderContext &&\n ((this.renderContext.progressive &&\n this.renderContext.progressive.currentIndex < this.renderContext.progressive.totalStep) ||\n (this.renderContext.beforeTransformProgressive && this.renderContext.beforeTransformProgressive.unfinished()))\n );\n }\n\n clearProgressive() {\n if (this.renderContext && this.renderContext.progressive) {\n this._graphics = [];\n\n (this._product as any).children.forEach((group: IGroup) => {\n group.incrementalClearChild();\n });\n (this._product as any).removeAllChild();\n }\n\n if (this.renderContext && this.renderContext.beforeTransformProgressive) {\n this.renderContext.beforeTransformProgressive.release();\n }\n\n this.renderContext = null;\n }\n\n restartProgressive() {\n if (this.renderContext && this.renderContext.progressive) {\n this.renderContext.progressive.currentIndex = 0;\n }\n }\n private _runBeforeProgressive() {\n const transform = this.renderContext.beforeTransformProgressive;\n\n transform.progressiveRun();\n const output = transform.output();\n\n if (transform.canAnimate?.()) {\n if (transform.unfinished()) {\n return;\n }\n\n this._runGroupData(output);\n this._runJoin(output);\n this._runState(this._graphics);\n this._runEncoder(this._graphics);\n this._runApplyGraphic(this._graphics);\n }\n }\n\n protected _runProgressiveJoin(): {\n graphicsByGroup?: Record<string, IMarkGraphic[]>;\n graphics?: IMarkGraphic[];\n needUpdate?: boolean;\n } {\n const currentIndex = this.renderContext.progressive.currentIndex;\n\n const graphics: IMarkGraphic[] = [];\n const graphicsByGroup: Record<string, IMarkGraphic[]> = {};\n this._dataByGroup.keys.forEach(groupKey => {\n const data = this.renderContext.progressive.groupedData.get(groupKey as string);\n const groupStep = this.renderContext.progressive.step;\n const dataSlice = data.slice(currentIndex * groupStep, (currentIndex + 1) * groupStep);\n const group: IMarkGraphic[] = [];\n\n dataSlice.forEach((entry, i) => {\n const key = this._keyGetter(entry);\n const g = {\n context: {\n ...this._getCommonContext(),\n diffState: DiffState.enter,\n data: [entry],\n uniqueKey: `${groupKey}_${key ?? currentIndex * groupStep + i}`,\n key,\n groupKey: groupKey\n }\n };\n\n group.push(g as IMarkGraphic);\n graphics.push(g as IMarkGraphic);\n });\n\n graphicsByGroup[groupKey as string] = group;\n });\n\n return { graphicsByGroup, graphics, needUpdate: true };\n }\n\n protected _createIncrementalGraphics() {\n this._product.removeAllChild();\n\n this._dataByGroup.keys.forEach(key => {\n const graphicItem = createGroup({\n pickable: false,\n zIndex: this._markConfig.zIndex\n });\n graphicItem.incremental = this.renderContext.progressive.step;\n this._product.appendChild(graphicItem);\n });\n }\n\n protected _setCommonAttributesToTheme(g: IMarkGraphic) {\n if (this._attrsByGroup && g) {\n const parent = g.parent;\n\n if (parent && this._attrsByGroup?.[g.context?.groupKey]) {\n parent.setTheme({\n common: this._attrsByGroup[g.context?.groupKey] as any\n });\n }\n }\n }\n\n protected _runProgressiveEncoder(graphics: IMarkGraphic[]) {\n const progressiveIndex = this.renderContext.progressive.currentIndex;\n\n if (progressiveIndex === 0) {\n this._runEncoder(graphics);\n } else {\n this._runEncoder(graphics, true);\n }\n }\n\n protected _runProgressiveApplyGraphic(graphics: IMarkGraphic[]) {\n const progressiveIndex = this.renderContext.progressive.currentIndex;\n\n if (progressiveIndex === 0) {\n this._runApplyGraphic(graphics);\n this._setCommonAttributesToTheme(graphics[0]);\n } else {\n this._runApplyGraphic(graphics);\n }\n }\n\n protected _runProgressiveStep() {\n const { graphics, graphicsByGroup, needUpdate } = this._runProgressiveJoin();\n\n if (this.renderContext.progressive.currentIndex === 0) {\n this._createIncrementalGraphics();\n this._graphics = graphics;\n } else if (needUpdate) {\n graphics.forEach(g => {\n this._graphics.push(g);\n });\n }\n this._runState(graphics);\n\n Object.keys(graphicsByGroup).forEach(groupKey => {\n this._runProgressiveEncoder(graphicsByGroup[groupKey]);\n });\n this._runEncoderTransform(this._graphics, true);\n\n Object.keys(graphicsByGroup).forEach(groupKey => {\n this._runProgressiveApplyGraphic(graphicsByGroup[groupKey]);\n });\n\n this.renderContext.progressive.currentIndex += 1;\n }\n\n renderProgressive() {\n if (this.renderContext?.beforeTransformProgressive) {\n this._runBeforeProgressive();\n return;\n } else if (this.renderContext.progressive) {\n this._runProgressiveStep();\n }\n }\n\n hasAnimationByState(state: AnimationStateValues) {\n if (\n !state ||\n !this._animationConfig ||\n !(this._animationConfig as any)[state] ||\n this._disabledAnimationStates.includes(state)\n ) {\n return false;\n }\n const stateAnimationConfig = (this._animationConfig as any)[state];\n return (stateAnimationConfig as IAnimationConfig[]).length > 0 || isObject(stateAnimationConfig);\n }\n\n hasAnimation() {\n if (!this._animationConfig) {\n return false;\n }\n return Object.keys(this._animationConfig).length > 0;\n }\n\n runAnimation() {\n this._runStateAnimation(this.getGraphics());\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/mark/base/base-mark.ts"],"names":[],"mappings":"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","file":"base-mark.js","sourcesContent":["import { DiffState } from '../interface/enum';\nimport { type IStateInfo, type IModelMarkAttributeContext, STATE_VALUE_ENUM } from '../../compile/mark/interface';\nimport type { BaseSeries } from '../../series/base/base-series';\nimport type {\n Datum,\n IMarkSpec,\n ConvertToMarkStyleSpec,\n GradientStop,\n IVisual,\n IVisualScale,\n IVisualSpecStyle,\n ICommonSpec,\n FunctionType,\n ValueType,\n StringOrNumber,\n Maybe\n} from '../../typings';\nimport type { DataView } from '@visactor/vdataset';\nimport { mergeSpec } from '@visactor/vutils-extension';\nimport { Color } from '../../util/color';\nimport { createScaleWithSpec } from '../../util/scale';\nimport { MarkTypeEnum } from '../interface';\nimport type {\n IMarkRaw,\n IMarkStateStyle,\n IMarkStyle,\n IMark,\n IMarkOption,\n StyleConvert,\n VisualScaleType,\n MarkInputStyle,\n GroupedData,\n IAttrs,\n IMarkGraphic,\n DiffStateValues,\n ProgressiveContext,\n IProgressiveTransformResult,\n MarkType,\n AnimationStateValues\n} from '../interface';\nimport { GradientType, DEFAULT_GRADIENT_CONFIG } from '../../constant/gradient';\nimport { AttributeLevel } from '../../constant/attribute';\nimport { isValidScaleType } from '@visactor/vscale';\nimport { computeActualDataScheme, getDataScheme } from '../../theme/color-scheme/util';\nimport type { ISeries } from '../../series/interface';\nimport { MarkStateManager } from '../../compile/mark';\nimport type {\n ICompilableMark,\n IMarkCompileOption,\n IMarkConfig,\n IMarkStateManager,\n StateValueType\n} from '../../compile/mark/interface';\nimport { array, degreeToRadian, isArray, isBoolean, isFunction, isNil, isObject, isValid } from '@visactor/vutils';\nimport { curveTypeTransform, groupData, runEncoder } from '../utils/common';\nimport type { ICompilableInitOption } from '../../compile/interface';\nimport { LayoutState } from '../../compile/interface';\nimport type { IGroupGraphicAttribute, IGraphicAttribute, IGroup, IGraphic } from '@visactor/vrender-core';\nimport { createGroup, CustomPath2D } from '@visactor/vrender-core';\nimport { isStateAttrChangeable } from '../../compile/mark/util';\nimport { Factory } from '../../core/factory';\nimport { DEFAULT_DATA_KEY } from '../../constant/data';\nimport { GrammarItem } from '../../compile/grammar-item';\nimport { LayoutZIndex } from '../../constant/layout';\nimport type { IModel } from '../../model/interface';\nimport type { ICompilableData } from '../../compile/data/interface';\nimport type { IAnimationConfig } from '../../animation/interface';\nimport { AnimationStateEnum, type MarkAnimationSpec } from '../../animation/interface';\nimport { CompilableData } from '../../compile/data/compilable-data';\nimport { getDiffAttributesOfGraphic } from '../../util/mark';\nimport { log } from '../../util/debug';\nimport { morph as runMorph } from '../../compile/morph';\n\nexport type ExChannelCall = (\n key: string | number | symbol,\n datum: Datum,\n states: StateValueType,\n baseValue: unknown\n) => unknown;\n\nexport class BaseMark<T extends ICommonSpec> extends GrammarItem implements IMarkRaw<T> {\n /** 类型 */\n readonly type: MarkType = undefined as unknown as MarkType;\n\n /** name */\n readonly name: string = 'mark';\n\n /** key field */\n readonly key: ICompilableMark['key'];\n\n protected _markConfig: IMarkConfig = {\n zIndex: LayoutZIndex.Mark,\n /** morph动画关联关系配置 */\n morph: false\n };\n\n protected _isCommited?: boolean;\n\n commit(render?: boolean, recursion?: boolean) {\n if (recursion && this.getMarks().length > 0) {\n this.getMarks().forEach(m => m.commit(false, recursion));\n }\n\n this._isCommited = true;\n if (render) {\n this.getCompiler().renderNextTick();\n }\n }\n\n uncommit() {\n this._isCommited = false;\n }\n\n isCommited() {\n return this._isCommited;\n }\n\n getMarkConfig(): IMarkConfig {\n return this._markConfig;\n }\n setMarkConfig(config: IMarkConfig) {\n Object.keys(config).forEach(key => {\n (this._markConfig as any)[key] = (config as any)[key];\n });\n }\n\n /** 可见性 */\n protected _visible: boolean = true;\n getVisible() {\n return this._visible;\n }\n setVisible(visible: boolean) {\n this._visible = visible;\n }\n\n /**\n * 用户设置的 id\n */\n protected _userId: StringOrNumber;\n getUserId() {\n return this._userId;\n }\n setUserId(userId: StringOrNumber) {\n if (isValid(userId)) {\n this._userId = userId;\n }\n }\n\n /** parent model */\n readonly model: IModel;\n\n /** 数据(可以没有) */\n protected _data: ICompilableData;\n getDataView(): DataView | undefined {\n return this._data?.getDataView();\n }\n setDataView(d?: DataView) {\n if (isNil(this._data)) {\n this.initMarkData(this._option);\n }\n this._data.setDataView(d);\n }\n getData() {\n return this._data;\n }\n setData(d?: ICompilableData) {\n this._data = d;\n if (d) {\n d.addRelatedMark(this);\n }\n }\n\n /** 默认的stateStyle */\n stateStyle: IMarkStateStyle<T> = {};\n\n /** 状态管理器 */\n state: IMarkStateManager;\n\n protected _unCompileChannel: { [key in string]: boolean } = {};\n\n hasState(state: string) {\n return state in this.state.getStateMap();\n }\n getState(state: string) {\n return this.state.getStateMap()[state];\n }\n\n protected _animationConfig: Partial<MarkAnimationSpec>;\n getAnimationConfig() {\n return this._animationConfig;\n }\n\n setAnimationConfig(config: Partial<MarkAnimationSpec>) {\n // group mark 动画默认只挂到自己\n const defaultPrams = this.type === 'group' ? { selfOnly: true } : {};\n const formatAnimationCfg = (cfg: IAnimationConfig) => {\n const options = (cfg as any)!.options ?? {};\n\n return {\n ...defaultPrams,\n ...cfg,\n options: (datum: any, graphic: IMarkGraphic, customParams: any) => {\n const _options = typeof options === 'function' ? options(datum, graphic, customParams) : options;\n\n if (graphic && graphic.context && graphic.context.compiler && isValid(graphic.context.modelId)) {\n const model = graphic.context.compiler.getChart()?.getModelById(graphic.context.modelId);\n\n return {\n ..._options,\n layoutRect: (model as any)?.getLayoutRect?.()\n };\n }\n\n return {\n ..._options\n };\n }\n };\n };\n\n // 封装options,批量添加一些默认参数\n const animationConfig: Partial<MarkAnimationSpec> = {};\n\n Object.keys(config).forEach(key => {\n const value = (config as any)[key];\n if (isArray(value)) {\n (animationConfig as any)[key] = value.map(formatAnimationCfg);\n } else if (isValid(value)) {\n (animationConfig as any)[key] = formatAnimationCfg(value);\n }\n });\n this._animationConfig = animationConfig;\n }\n\n protected _disabledAnimationStates?: string[] = [];\n\n disableAnimationByState(state: string | string[]) {\n const states = array(state);\n this._disabledAnimationStates = [...new Set([...this._disabledAnimationStates, ...states])];\n }\n\n enableAnimationByState(state: string | string[]) {\n const states = array(state);\n this._disabledAnimationStates = this._disabledAnimationStates.filter(s => !states.includes(s));\n }\n\n /** 布局标记 */\n private _skipBeforeLayouted = false;\n\n setSkipBeforeLayouted(skip: boolean) {\n this._skipBeforeLayouted = skip;\n }\n protected _groupKey?: string;\n setGroupKey(groupKey: string) {\n this._groupKey = groupKey;\n }\n\n protected _stateSort?: (stateA: string, stateB: string) => number;\n\n protected declare _product: Maybe<IGroup>;\n getProduct() {\n return this._product;\n }\n\n // 保存上一次的mark,用于morph的时候获取上次的图元\n protected declare _lastMark?: IMark;\n\n /** 初始化 mark data */\n protected initMarkData(option: ICompilableInitOption) {\n this._data = new CompilableData(option);\n\n this._data.addRelatedMark(this);\n }\n\n protected _compileProduct(option?: IMarkCompileOption) {\n this.commit();\n this._context = option?.context;\n const product = this.getProduct();\n // 处理 visible 为 false 的情况\n if (!this._visible) {\n if (isValid(product)) {\n this.removeProduct();\n }\n return;\n } else if (isValid(product)) {\n if (option.group && product.parent !== option.group) {\n option.group.appendChild(product);\n }\n } else {\n const compiler = this.getCompiler();\n if (!compiler.isInited) {\n return;\n }\n this._initProduct(option?.group);\n }\n\n if (isNil(this._product)) {\n return;\n }\n this.compileData();\n this.compileState();\n this.compileEncode();\n // this.compileContext(option?.context);\n // this.compileTransform();\n }\n\n /** 创建语法元素对象 */\n protected _initProduct(group?: IGroup) {\n const stage = this.getStage();\n\n if (!stage) {\n return;\n }\n\n // 声明语法元素\n const id = this.getProductId();\n\n this._product = createGroup(\n this.type !== MarkTypeEnum.group\n ? {\n pickable: false,\n zIndex: this._markConfig.zIndex,\n overflow: this._markConfig.overflow\n }\n : {}\n );\n // todo 为了和之前的版本兼容,这里暂时设置成name\n this._product.name = id;\n // 为了从graphic上能索引到mark\n this._product.mark = this;\n\n (group ?? this.getCompiler()?.getRootGroup()).appendChild(this._product);\n\n // if (this.name && this._product) {\n // this._product.name = this.name;\n // }\n this._compiledProductId = id;\n }\n\n generateProductId() {\n if (this._userId) {\n return `${this._userId}`;\n }\n return `${this.name}_${this.id}`;\n }\n\n layout(layout: () => void) {\n // todo\n }\n\n compileData() {\n if (isNil(this._data)) {\n return;\n }\n this._data.compile();\n\n // 绑定数据\n // const dataProduct = this._data.getProduct();\n // if (isValid(this._product) && isValid(dataProduct)) {\n // // this._product.join(dataProduct as IData, this.key, undefined, this.getGroupKey());\n // }\n }\n\n // protected _separateStyle() {\n // const { [STATE_VALUE_ENUM.STATE_NORMAL]: normalStyle } = this.stateStyle;\n\n // const enterStyles: Record<string, MarkFunctionType<any>> = this._option.noSeparateStyle ? null : {};\n // const updateStyles: Record<string, MarkFunctionType<any>> = {};\n // Object.keys(normalStyle).forEach(key => {\n // if (this._unCompileChannel[key]) {\n // return;\n // }\n\n // if (this._option.noSeparateStyle || isStateAttrChangeable(key, normalStyle, this.getGroupKey())) {\n // updateStyles[key] = {\n // callback: this._computeAttribute(key, 'normal'),\n // dependency: [this.stateKeyToSignalName('markUpdateRank')]\n // };\n // } else {\n // enterStyles[key] = this._computeAttribute(key, 'normal');\n // }\n // });\n // return { enterStyles, updateStyles };\n // }\n\n compileEncode() {\n // const { [STATE_VALUE_ENUM.STATE_NORMAL]: normalStyle, ...temp } = this.stateStyle;\n // const { enterStyles, updateStyles } = this._separateStyle();\n // const encoders: any = {\n // update: updateStyles,\n // group: enterStyles\n // };\n // Object.keys(temp).forEach(state => {\n // const styles: Record<string, MarkFunctionType<any>> = {};\n // Object.keys(temp[state]).forEach(key => {\n // if (this._unCompileChannel[key]) {\n // return;\n // }\n // styles[key] = {\n // callback: this._computeAttribute(key, state),\n // dependency: [this.stateKeyToSignalName('markUpdateRank')]\n // };\n // });\n // encoders[state] = styles;\n // });\n // // 在布局完成前不进行encode\n // if (this._skipBeforeLayouted) {\n // }\n }\n\n compileState() {\n // this.state.compileState(this, this._stateSort);\n }\n\n compileAnimation() {\n // if (this._animationConfig) {\n // let stateSignal: any;\n // if (this.type === 'component') {\n // // 组件有自己的动画状态\n // stateSignal = (this.model as IComponent).animate?.getAnimationStateSignalName();\n // } else {\n // const region = (this.model as ISeries).getRegion?.();\n // stateSignal = region?.animate?.getAnimationStateSignalName();\n // }\n // this._product.animation(this._animationConfig);\n // this._product.animationState({\n // callback: (datum: Datum, element: IElement, parameters: Record<string, any>) => {\n // return parameters[stateSignal]?.callback(datum, element);\n // },\n // dependency: stateSignal\n // });\n // if (this._animationConfig.normal) {\n // if (!this._animationConfig.appear) {\n // this._event.on(VGRAMMAR_HOOK_EVENT.AFTER_DO_RENDER, () => {\n // this.runAnimationByState(AnimationStateEnum.normal);\n // });\n // } else {\n // this._event.on(VGRAMMAR_HOOK_EVENT.ANIMATION_END, ({ event }) => {\n // if (event.mark === this.getProduct() && event.animationState === AnimationStateEnum.appear) {\n // this.runAnimationByState(AnimationStateEnum.normal);\n // }\n // });\n // }\n // }\n // }\n }\n\n _context: any;\n\n compileContext(extraContext?: any) {\n // const config: IMarkConfig = {\n // ...this._markConfig,\n // context: {\n // }\n // };\n\n this._context = {\n markId: this.id,\n modelId: this.model.id,\n markUserId: this._userId,\n modelUserId: this.model.userId,\n ...extraContext\n };\n }\n\n getContext() {\n return this._context;\n }\n\n protected compileTransform() {\n // if (this._transform?.length) {\n // this.getProduct().transform(this._transform);\n // }\n }\n\n updateState(newState: Record<string, unknown>, noRender?: boolean) {\n this.commit();\n\n return this.state.updateState(newState, noRender);\n }\n\n getMarks(): IMark[] {\n return [];\n }\n\n runAnimationByState(state?: string) {\n // return this.getProduct()?.animate?.runAnimationByState(state);\n }\n\n stopAnimationByState(state?: string) {\n // return this.getProduct()?.animate?.stopAnimationByState(state);\n }\n\n pauseAnimationByState(state?: string) {\n // return this.getProduct()?.animate?.pauseAnimationByState(state);\n }\n\n resumeAnimationByState(state?: string) {\n // return this.getProduct()?.animate?.resumeAnimationByState(state);\n }\n\n removeProduct() {\n if (this._product && this._product.parent) {\n this._product.parent.removeChild(this._product);\n }\n this._product = null;\n this._compiledProductId = null;\n }\n release() {\n // if (this._product && this._product.parent) {\n // this._product.parent.removeChild(this._product);\n // }\n\n this.state.release();\n super.release();\n this._lastMark = null;\n }\n\n protected _simpleStyle: T;\n\n setSimpleStyle(s: T) {\n this._simpleStyle = s;\n }\n\n getSimpleStyle(): T {\n return this._simpleStyle;\n }\n\n protected declare _option: IMarkOption;\n\n protected _attributeContext: IModelMarkAttributeContext;\n\n protected _encoderOfState: Record<string, Record<string, (datum: Datum) => any>>;\n\n /** by _unCompileChannel, some channel need add default channel to make sure update available */\n _extensionChannel: {\n [key: string | number | symbol]: string[];\n } = {};\n /** same as _extensionChannel. when compute channel, add extension channel effect */\n _computeExChannel: {\n [key: string | number | symbol]: ExChannelCall;\n } = {};\n\n constructor(name: string, option: IMarkOption) {\n super(option);\n this.name = name;\n this.model = option.model;\n this.key = option.key;\n this.state = new MarkStateManager(option, this as unknown as IMark) as unknown as IMarkStateManager;\n // 这里的上下文多数情况下与 mark 是什么是没有关系的,与mark的使用者,也就是series,component有的逻辑有关。\n this._attributeContext = option.attributeContext;\n option.map?.set(this.id, this as unknown as IMark);\n }\n\n created(): void {\n this._initStyle();\n }\n\n /**\n * 外部调用,根据 spec 初始化 style(如果由 IModel 派生类调用,请使用 IModel.initMarkStyleWithSpec)\n * @param spec\n * @param key\n * @returns\n */\n initStyleWithSpec(spec: IMarkSpec<T>) {\n if (!spec) {\n return;\n }\n\n if (isValid(spec.id)) {\n this._userId = spec.id;\n }\n\n // interactive\n if (isBoolean(spec.interactive)) {\n this._markConfig.interactive = spec.interactive;\n }\n // zIndex\n if (isValid(spec.zIndex)) {\n this._markConfig.zIndex = spec.zIndex;\n }\n // visible\n if (isBoolean(spec.visible)) {\n this.setVisible(spec.visible);\n }\n\n this._markConfig.setCustomizedShape = spec.customShape;\n\n this._stateSort = spec.stateSort;\n\n // style\n this._initSpecStyle(spec);\n }\n\n protected _transformStyleValue<T>(\n styleConverter: StyleConvert<T>,\n transform: (value: ValueType<T>) => ValueType<T>\n ): StyleConvert<any> {\n if ((styleConverter as VisualScaleType).scale) {\n const scale = (styleConverter as VisualScaleType).scale;\n const range = scale.range();\n scale.range(range.map(transform));\n return styleConverter as StyleConvert<T>;\n } else if (typeof styleConverter === 'function') {\n return ((...args) => {\n return transform((styleConverter as FunctionType<number>)(...args) as ValueType<T>);\n }) as StyleConvert<T>;\n }\n return transform(styleConverter as ValueType<T>);\n }\n\n convertAngleToRadian(styleConverter: StyleConvert<number>) {\n // 用户传入的角度配置,需要做一层转换\n return this._transformStyleValue(styleConverter, degreeToRadian);\n }\n\n isUserLevel(level: number) {\n return [\n AttributeLevel.User_Mark,\n AttributeLevel.User_Series,\n AttributeLevel.User_Chart,\n AttributeLevel.User_SeriesStyle\n ].includes(level);\n }\n\n /**\n * 由外部series调用,设置markStyle的接口(如果由 IModel 派生类调用,请使用 IModel.setMarkStyle)\n * @param style\n * @param level\n * @param state\n */\n setStyle<U extends keyof T>(\n style: Partial<IMarkStyle<T>>,\n state: StateValueType = 'normal',\n level: number = 0\n ): void {\n if (isNil(style)) {\n return;\n }\n\n if (this.stateStyle[state] === undefined) {\n this.stateStyle[state] = {};\n }\n\n const isUserLevel = this.isUserLevel(level);\n\n Object.keys(style).forEach((attr: string) => {\n let attrStyle = style[attr] as MarkInputStyle<T[U]>;\n if (isNil(attrStyle)) {\n return;\n }\n\n attrStyle = this._filterAttribute(attr as any, attrStyle, state, level, isUserLevel);\n\n this.setAttribute(attr as any, attrStyle, state, level);\n });\n }\n\n getStyle(key: string, state: StateValueType = 'normal'): any {\n return this.stateStyle[state][key]?.style;\n }\n\n /** 过滤单个 attribute */\n protected _filterAttribute<U extends keyof T>(\n attr: U,\n style: MarkInputStyle<T[U]>,\n state: StateValueType,\n level: number,\n isUserLevel: boolean\n ): StyleConvert<T[U]> {\n let newStyle = this._styleConvert(style);\n if (isUserLevel) {\n switch (attr) {\n case 'angle':\n newStyle = this.convertAngleToRadian(newStyle);\n break;\n case 'innerPadding':\n case 'outerPadding':\n // VRender 的 padding 定义基于 centent-box 盒模型,默认正方向是向外扩,与 VChart 不一致。这里将 padding 符号取反\n newStyle = this._transformStyleValue(newStyle, (value: number) => -value);\n break;\n case 'curveType':\n newStyle = this._transformStyleValue(newStyle, (value: string) =>\n curveTypeTransform(value, (this._option.model as any).direction)\n );\n break;\n }\n }\n return newStyle;\n }\n\n /**\n * TODO: 没有外部调用\n * 设置mark样式所参考的图元\n */\n setReferer<U extends keyof T>(mark: IMarkRaw<T>, styleKey?: U, state?: StateValueType) {\n if (!mark) {\n return;\n }\n if (styleKey && state) {\n const style = this.stateStyle[state] ?? { [styleKey]: {} };\n this.stateStyle[state][styleKey] = {\n ...(style[styleKey] as unknown as any),\n ...{ referer: mark }\n };\n return;\n }\n\n Object.entries(this.stateStyle).forEach(([state, style]) => {\n Object.entries(style).forEach(([styleKey, style]) => {\n this.stateStyle[state][styleKey].referer = mark;\n });\n });\n }\n\n setPostProcess<U extends keyof T>(key: U, postProcessFunc: any, state: StateValueType = 'normal') {\n if (this.stateStyle[state]?.[key]) {\n this.stateStyle[state][key].postProcess = postProcessFunc;\n }\n }\n\n getAttribute<U extends keyof T>(key: U, datum: Datum, state: StateValueType = 'normal') {\n return this._computeAttribute(key, state)(datum);\n }\n\n getAttributesOfState(datum: Datum, state: StateValueType = 'normal') {\n const style = this.stateStyle[state];\n\n if (style) {\n const res: any = {};\n Object.keys(style).forEach(k => {\n if (!this._unCompileChannel[k]) {\n res[k] = this._computeAttribute(k, state)(datum);\n }\n });\n return res;\n }\n }\n\n setAttribute<U extends keyof T>(\n attr: U,\n style: MarkInputStyle<T[U]>,\n state: StateValueType = 'normal',\n level: number = 0\n ) {\n if (this.stateStyle[state] === undefined) {\n this.stateStyle[state] = {};\n }\n\n if (this.stateStyle[state][attr] === undefined) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this.stateStyle[state][attr] = {\n level,\n style,\n referer: undefined\n };\n }\n const attrLevel = this.stateStyle[state][attr]?.level;\n if (isValid(attrLevel) && attrLevel <= level) {\n mergeSpec(this.stateStyle[state][attr], { style, level });\n }\n\n // some attr has extension channel in VChart to make some effect\n if (state !== 'normal') {\n if (attr in this._extensionChannel) {\n this._extensionChannel[attr].forEach(key => {\n if (this.stateStyle[state][key] === undefined) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this.stateStyle[state][key as keyof T] = this.stateStyle.normal[key];\n }\n });\n }\n }\n }\n\n /**\n * 与 vgrammar 默认值一致的样式可以不设置默认值或设置为undefined, 减少encode属性\n */\n protected _getDefaultStyle() {\n return {\n visible: true,\n // mark的层级应该在mark层 不在encode属性层\n // zIndex: LayoutZIndex.Mark,\n x: 0,\n y: 0\n } as IMarkStyle<T>;\n }\n\n // /**\n // * 获取该 mark 不支持的图形属性,由子类覆写\n // * @returns\n // */\n // protected getIgnoreAttributes(): string[] {\n // return [];\n // }\n\n protected _styleConvert<U extends keyof T>(style?: MarkInputStyle<T[U]>): StyleConvert<T[U]> | undefined {\n if (!style) {\n return style as undefined;\n }\n // visual spec 转换为 scale 类型的mark style\n if (isValidScaleType((style as IVisualSpecStyle<unknown, T[U]>).type) || (style as IVisualScale).scale) {\n // const _style = style as IVisual<T[U]>;\n const scale = createScaleWithSpec(style as IVisual<T[U]>, {\n globalScale: this._option.globalScale,\n seriesId: this._option.seriesId\n });\n if (scale) {\n return {\n scale,\n field: (style as IVisual<T[U]>).field,\n changeDomain: (style as IVisualScale).changeDomain\n };\n }\n }\n return style as StyleConvert<T[U]>;\n }\n\n protected _computeAttribute<U extends keyof T>(key: U, state: StateValueType) {\n let stateStyle = this.stateStyle[state]?.[key];\n if (!stateStyle) {\n stateStyle = this.stateStyle.normal[key];\n }\n const baseValueFunctor = this._computeStateAttribute(stateStyle, key, state);\n const hasPostProcess = isFunction(stateStyle?.postProcess);\n const hasExCompute = key in this._computeExChannel;\n\n if (hasPostProcess && hasExCompute) {\n const exCompute = this._computeExChannel[key];\n return (datum: Datum) => {\n let baseValue = baseValueFunctor(datum);\n\n baseValue = stateStyle.postProcess(baseValue, datum, this._attributeContext, this.getDataView());\n\n return exCompute(key, datum, state, baseValue);\n };\n } else if (hasPostProcess) {\n return (datum: Datum) => {\n return stateStyle.postProcess(baseValueFunctor(datum), datum, this._attributeContext, this.getDataView());\n };\n } else if (hasExCompute) {\n const exCompute = this._computeExChannel[key];\n return (datum: Datum) => {\n return exCompute(key, datum, state, baseValueFunctor(datum));\n };\n }\n return baseValueFunctor;\n }\n\n protected _computeStateAttribute<U extends keyof T>(stateStyle: any, key: U, state: StateValueType) {\n if (!stateStyle) {\n return (datum: Datum) => undefined as any;\n }\n if (stateStyle.referer) {\n return stateStyle.referer._computeAttribute(key, state);\n }\n if (!stateStyle.style) {\n return (datum: Datum) => stateStyle.style;\n }\n\n if (typeof stateStyle.style === 'function') {\n return (datum: Datum) => stateStyle.style(datum, this._attributeContext, { mark: this }, this.getDataView());\n }\n\n if (GradientType.includes(stateStyle.style.gradient)) {\n // 渐变色处理,支持各个属性回调\n return this._computeGradientAttr(stateStyle.style);\n }\n\n if (['outerBorder', 'innerBorder'].includes(key as string)) {\n // 内外描边处理,支持各个属性回调\n return this._computeBorderAttr(stateStyle.style);\n }\n\n if (isValidScaleType(stateStyle.style.scale?.type)) {\n return (datum: Datum) => {\n let data = datum;\n if (this.model.modelType === 'series' && (this.model as unknown as ISeries).getMarkData) {\n data = (this.model as unknown as ISeries).getMarkData(datum);\n }\n\n return stateStyle.style.scale.scale(data[stateStyle.style.field]);\n };\n }\n return (datum: Datum) => {\n return stateStyle.style;\n };\n }\n\n private _initStyle(): void {\n const defaultStyle = this._getDefaultStyle();\n this.setStyle(defaultStyle, 'normal', 0);\n }\n\n private _initSpecStyle(spec: IMarkSpec<T>) {\n // style\n if (spec.style) {\n this.setStyle(spec.style, 'normal', AttributeLevel.User_Mark);\n }\n const state = spec.state;\n if (state) {\n Object.keys(state).forEach(key => {\n const stateTemp = state[key];\n if ('style' in stateTemp) {\n const style = stateTemp.style;\n let stateInfo: IStateInfo = { stateValue: key };\n if ('level' in stateTemp) {\n stateInfo.level = stateTemp.level as number;\n }\n if ('filter' in stateTemp) {\n if (isFunction(stateTemp.filter)) {\n stateInfo = {\n filter: stateTemp.filter as (datum: any, options: Record<string, any>) => boolean,\n ...stateInfo\n };\n } else {\n stateInfo = { ...stateTemp.filter, ...stateInfo };\n }\n }\n this.state.addStateInfo(stateInfo);\n this.setStyle(style as ConvertToMarkStyleSpec<T>, key, AttributeLevel.User_Mark);\n } else {\n this.setStyle(stateTemp, key, AttributeLevel.User_Mark);\n }\n });\n }\n }\n\n private _computeGradientAttr(gradientStyle: any) {\n const { gradient, scale, field, ...rest } = gradientStyle;\n\n let colorScale = scale;\n let colorField = field;\n if ((!scale || !field) && this.model.modelType === 'series') {\n // 目前只有series有这个属性\n const { scale: globalColorScale, field: globalField } = (this.model as BaseSeries<any>).getColorAttribute();\n if (!scale) {\n // 获取全局的 colorScale\n colorScale = globalColorScale;\n }\n if (!colorField) {\n colorField = globalField;\n }\n }\n\n const themeColor = computeActualDataScheme(\n getDataScheme(\n this.model.getColorScheme(),\n this.model.modelType === 'series' ? this.model.getSpec?.() : undefined\n ),\n (this.model as unknown as ISeries).getDefaultColorDomain()\n );\n // 默认配置处理\n const mergedStyle = {\n ...(DEFAULT_GRADIENT_CONFIG as any)[gradient],\n ...rest\n };\n return (data: Datum) => {\n const computeStyle: any = {};\n const markData = this.getDataView();\n Object.keys(mergedStyle).forEach(key => {\n const value = mergedStyle[key];\n if (key === 'stops') {\n computeStyle.stops = value.map((stop: GradientStop) => {\n const { opacity, color, offset } = stop;\n let computeColor = color ?? colorScale?.scale(data[colorField]);\n if (isFunction(color)) {\n computeColor = color(data, this._attributeContext, markData);\n }\n\n if (isValid(opacity)) {\n computeColor = Color.SetOpacity(computeColor as string, opacity);\n }\n\n return {\n offset: isFunction(offset) ? offset(data, this._attributeContext, markData) : offset,\n color: computeColor || themeColor[0]\n };\n });\n } else if (isFunction(value)) {\n computeStyle[key] = value(data, this._attributeContext, markData);\n } else {\n computeStyle[key] = value;\n }\n });\n\n computeStyle.gradient = gradient;\n\n return computeStyle;\n };\n }\n\n private _computeBorderAttr(borderStyle: any) {\n const { scale, field, ...mergedStyle } = borderStyle;\n\n return (data: Datum) => {\n const computeStyle: any = {};\n\n Object.keys(mergedStyle).forEach(key => {\n const value = mergedStyle[key];\n if (isFunction(value)) {\n computeStyle[key] = value(data, this._attributeContext, this.getDataView());\n } else {\n computeStyle[key] = value;\n }\n });\n if (!('stroke' in computeStyle)) {\n const themeColor = computeActualDataScheme(\n getDataScheme(\n this.model.getColorScheme(),\n this.model.modelType === 'series' ? this.model.getSpec?.() : undefined\n ),\n (this.model as unknown as ISeries).getDefaultColorDomain()\n );\n let colorScale = scale;\n let colorField = field;\n if ((!scale || !field) && this.model.modelType === 'series') {\n // 目前只有series有这个属性\n const { scale: globalColorScale, field: globalField } = (this.model as BaseSeries<any>).getColorAttribute();\n if (!scale) {\n // 获取全局的 colorScale\n colorScale = globalColorScale;\n }\n if (!colorField) {\n colorField = globalField;\n }\n computeStyle.stroke = colorScale?.scale(data[colorField]) || themeColor[0];\n }\n } else if (GradientType.includes(mergedStyle.stroke?.gradient)) {\n computeStyle.stroke = this._computeGradientAttr(mergedStyle.stroke)(data);\n }\n return computeStyle;\n };\n }\n\n protected _dataByGroup: GroupedData<Datum>;\n /**\n * 最新的数据map\n */\n protected _dataByKey: GroupedData<Datum>;\n /**\n * 上一次的数据map\n */\n protected _prevDataByKey: GroupedData<Datum>;\n protected _graphicMap: Map<string, IMarkGraphic> = new Map();\n protected _graphics: IMarkGraphic[] = [];\n /**\n * only need to clear elements after join and render\n * but `handleRenderEnd` will be call after every render\n */\n needClear?: boolean;\n\n protected _keyGetter: (datum: Datum) => string;\n protected _groupKeyGetter: (datum: Datum) => string;\n protected renderContext?: {\n parameters?: any;\n progressive?: ProgressiveContext;\n beforeTransformProgressive?: IProgressiveTransformResult;\n };\n protected _attrsByGroup?: Record<string, T>;\n\n protected _getDataByKey(data: Datum[]) {\n return groupData(data, (datum: Datum, index: number) => {\n return `${this._groupKeyGetter(datum)}_${this._keyGetter(datum) ?? index}`;\n });\n }\n\n protected _getCommonContext() {\n return {\n compiler: this.getCompiler(),\n markType: this.type as MarkTypeEnum,\n markId: this.id,\n modelId: this.model.id,\n markUserId: this._userId,\n modelUserId: this.model.userId\n };\n }\n\n prepareMorph(mark: IMark) {\n this._lastMark = mark;\n }\n\n reuse(mark: IMark) {\n if (this.type !== mark.type) {\n return;\n }\n this._product = mark.getProduct();\n this._graphics = mark.getGraphics();\n this._graphicMap = (mark as any)._graphicMap;\n\n this._graphicMap.forEach(g => {\n g.context = { ...g.context, ...this._getCommonContext() };\n });\n this._dataByKey = (mark as any)._dataByKey;\n this._prevDataByKey = (mark as any)._prevDataByKey;\n this.needClear = (mark as any).needClear;\n }\n\n private _parseProgressiveContext(data: Datum[]) {\n const enableProgressive =\n this._markConfig.progressiveStep > 0 &&\n this._markConfig.progressiveThreshold > 0 &&\n this._markConfig.progressiveStep < this._markConfig.progressiveThreshold;\n const large =\n this._markConfig.large && this._markConfig.largeThreshold > 0 && data.length >= this._markConfig.largeThreshold;\n\n if (enableProgressive) {\n const groupedData = this._dataByGroup;\n\n if (\n groupedData &&\n groupedData.keys &&\n groupedData.keys.some(key => groupedData.data.get(key).length > this._markConfig.progressiveThreshold)\n ) {\n return {\n large,\n progressive: {\n data,\n step: this._markConfig.progressiveStep,\n currentIndex: 0,\n totalStep: groupedData.keys.reduce((total, key) => {\n return Math.max(Math.ceil(groupedData.data.get(key).length / this._markConfig.progressiveStep), total);\n }, 1),\n groupedData: groupedData.data as Map<string, any[]>\n }\n };\n }\n\n return { large };\n }\n\n return {\n large\n };\n }\n\n getGraphics() {\n return this._graphics;\n }\n\n protected _createGraphic(attrs: any = {}): IGraphic {\n return Factory.createGraphicComponent(this.type, attrs);\n }\n\n protected _runGroupData(data: Datum[]) {\n this._keyGetter = isFunction(this.key)\n ? (this.key as (datum: Datum) => string)\n : isValid(this.key)\n ? (datum: Datum) => datum?.[this.key as string]\n : (datum: Datum) => datum?.[DEFAULT_DATA_KEY];\n this._groupKeyGetter = isValid(this._groupKey)\n ? (datum: Datum) => {\n return `${datum?.[this._groupKey]}`;\n }\n : () => 'key';\n\n this._dataByGroup = groupData(data, this._groupKeyGetter);\n }\n\n getAnimationState() {\n const graphicsAnimationStates = this._graphics.map(g => g.context.animationState);\n const animationState = graphicsAnimationStates.every(state => state === AnimationStateEnum.appear)\n ? AnimationStateEnum.appear\n : graphicsAnimationStates.every(state => state === AnimationStateEnum.disappear)\n ? AnimationStateEnum.disappear\n : graphicsAnimationStates[0];\n return animationState ?? AnimationStateEnum.none;\n }\n\n protected createAnimationStateList(type: string, animationConfig: Partial<MarkAnimationSpec>) {\n let config = (animationConfig as any)[type];\n if (config && Array.isArray(config)) {\n config = config.length === 1 ? config[0] : config;\n }\n // TODO 因为数据的覆盖特点,无动画的时候新的更新一定会覆盖前一次的旧值,所以默认都是后面的动画覆盖前面的动画\n // TODO 但是如果用户定义了一个动画数组,他的预期是动画不会覆盖,通过priority为INfinity来控制不覆盖\n if (Array.isArray(config)) {\n return config.map((item: any, index: number) => ({\n ...item,\n priority: item.priority ?? Infinity\n }));\n }\n return config\n ? {\n ...config,\n // 循环动画的优先级定为最高,不会被屏蔽掉\n priority: type === 'normal' ? config.priority ?? Infinity : config.priority\n }\n : config;\n }\n\n /**\n * 尝试执行morphing动画\n * @param graphics\n * @returns\n */\n protected tryRunMorphing(graphics: IMarkGraphic[]) {\n if (this._lastMark) {\n // 得设置入场图元的属性\n graphics.forEach(g => {\n if (g.context.animationState === 'appear' || g.context.animationState === 'enter') {\n g.setAttributes((g.getAttributes as any)(true));\n }\n });\n const res = runMorph([this._lastMark], [this as any], {});\n this._lastMark = null;\n return res;\n }\n return false;\n }\n\n protected _runStateAnimation(graphics: IMarkGraphic[]) {\n if (!this._animationConfig || graphics.length === 0) {\n return;\n }\n\n if (this.tryRunMorphing(graphics)) {\n return;\n }\n const animationConfig = this.getAnimationConfig();\n const useSequentialAnimation = this._markConfig.useSequentialAnimation ?? false;\n if (useSequentialAnimation && (this as any)._runSequentialAnimations) {\n (this as any)._runSequentialAnimations(graphics);\n return;\n }\n // 过滤出appear动画出来,appear动画是整体动画,可以放在全局,同时appear动画和normal动画是串行关系\n const isAppear = graphics.every(g => g.context.animationState === 'appear');\n // const appearConfig = (animationConfig as any).appear?.[0]; // TODO: animation: appear 数组\n const appearConfig = this.createAnimationStateList('appear', animationConfig);\n if (isAppear && this._product) {\n // TODO 一般appear都在最开始执行,所以这里不需要停掉normal动画\n // (this._product as IGroup).stopAnimationState('normal');\n const stateArray = appearConfig ? ['appear'] : [];\n const configArray = appearConfig\n ? [\n {\n name: 'appear',\n animation: appearConfig\n }\n ]\n : [];\n\n if ((animationConfig as any).normal) {\n stateArray.push('normal');\n const normal = this.createAnimationStateList('normal', animationConfig);\n const normalConfig = {\n name: 'normal',\n animation: normal\n };\n\n configArray.push(normalConfig);\n }\n this._product.applyAnimationState(stateArray, configArray);\n }\n\n // 判断是否需要走normal动画,enter动画执行完成后,需要跟一个normal动画\n let shouldRunNormal = false;\n // 处理除了appear以外的动画\n graphics.forEach(g => {\n const state = g.context.animationState;\n if (state === 'appear') {\n return;\n }\n const config = (animationConfig as any)[state] as any;\n if (config && config.length > 0) {\n const configList = config.map((item: any, index: number) => ({\n name: `${state}_${index}`,\n animation: item\n }));\n\n configList.forEach((item: any) => {\n item.animation.customParameters = g.context;\n });\n\n // configList.forEach((item: any) => {\n // item.animation.customParameters = g.context;\n // });\n const stateArray = [state];\n\n g.applyAnimationState(stateArray, [configList.length === 1 ? configList[0] : configList]);\n // configList.forEach((item: any) => {\n // item.animation.customParameters = null;\n // });\n }\n if (state === 'enter' && animationConfig.normal) {\n shouldRunNormal = true;\n }\n });\n\n if (shouldRunNormal && this._product && (animationConfig as any).normal?.length) {\n // 停止normal动画,并回复最初的属性\n (this._product as IGroup).stopAnimationState('normal', 'start');\n const normal = this.createAnimationStateList('normal', animationConfig);\n const normalConfig = {\n name: 'normal',\n animation: normal\n };\n (this._product as IGroup).applyAnimationState(['normal'], [normalConfig]);\n }\n }\n\n protected _setAnimationState(g: IMarkGraphic) {\n const callback =\n (this.type === MarkTypeEnum.component\n ? this.model.getAnimationStateCallback()\n : (this.model as ISeries).getRegion?.()?.getAnimationStateCallback()) ||\n ((g: IMarkGraphic) => {\n const diffState = g.context?.diffState;\n return diffState === AnimationStateEnum.exit\n ? AnimationStateEnum.exit\n : diffState === AnimationStateEnum.update\n ? AnimationStateEnum.update\n : AnimationStateEnum.appear;\n });\n const customizedState = callback(g);\n\n g.context.animationState = customizedState ?? g.context.diffState;\n\n // 复用exit的图元,需要设置属性为最初的属性\n if (g.context.animationState === DiffState.exit) {\n // 表示正在被复用,后续需要重设属性的\n g.context.reusing = true;\n // 停止所有动画,\n // TODO:属性可能回不去了(如果enter和exit不是一个动画),所以在encode阶段要获取finalAttribute,设置上去\n (g as any).animates && (g as any).animates.forEach((a: any) => a.stop());\n // force element to stop exit animation if it is reentered\n // todo animaiton\n // const animators = this.animate?.getElementAnimators(element, DiffState.exit);\n // animators && animators.forEach(animator => animator.stop('start'));\n }\n }\n\n protected _runJoin(data: Datum[]) {\n const newGroupedData = this._getDataByKey(data);\n const prevGroupedData = this._prevDataByKey;\n const allGraphics: IMarkGraphic[] = [];\n\n const enterGraphics = new Set<IMarkGraphic>(this._graphics.filter(g => g.context.diffState === DiffState.enter));\n\n const callback = (key: string, newData: Datum[], prevData: Datum[]) => {\n let g: IMarkGraphic;\n let diffState: DiffStateValues;\n\n if (isNil(newData)) {\n g = this._graphicMap.get(key);\n\n if (g) {\n diffState = DiffState.exit;\n }\n } else if (isNil(prevData)) {\n // enter\n if (this._graphicMap.has(key)) {\n g = this._graphicMap.get(key);\n } else {\n g = {} as IMarkGraphic; //\n }\n diffState = DiffState.enter;\n g.isExiting = false;\n\n this._graphicMap.set(key, g as IMarkGraphic);\n allGraphics.push(g as IMarkGraphic);\n } else {\n // update\n g = this._graphicMap.get(key);\n\n if (g) {\n diffState = DiffState.update;\n allGraphics.push(g);\n }\n }\n\n if (g) {\n enterGraphics.delete(g);\n g.context = {\n ...this._getCommonContext(),\n diffState,\n // 从旧context中继承\n reusing: g.context?.reusing,\n // 从旧context中继承\n originalFieldX: g.context?.originalFieldX,\n // 从旧context中继承\n originalFieldY: g.context?.originalFieldY,\n // 从旧context中继承\n fieldX: g.context?.fieldX,\n // 从旧context中继承\n fieldY: g.context?.fieldY,\n // TODO 如果newData为空,则使用旧的data,避免exit图元找不到data\n data: newData ?? g.context?.data,\n uniqueKey: key,\n key: newData ? this._keyGetter(newData[0]) : g.context?.key,\n groupKey: newData ? this._groupKeyGetter(newData[0]) : g.context?.groupKey,\n // TODO 用于判定这个图元是第几个,在OneByOne动画中控制顺序\n indexKey: '__VCHART_DEFAULT_DATA_INDEX',\n stateAnimateConfig: this.getAnimationConfig()?.state\n };\n this._setAnimationState(g);\n }\n return g;\n };\n\n if (prevGroupedData && newGroupedData) {\n const prevMap = new Map(prevGroupedData.data);\n const newKeys = newGroupedData.keys;\n\n newKeys.forEach(key => {\n callback(key, newGroupedData.data.get(key), prevMap.get(key));\n prevMap.delete(key);\n });\n\n prevGroupedData.keys.forEach(key => {\n if (prevMap.has(key)) {\n callback(key, null, prevMap.get(key));\n }\n });\n } else if (newGroupedData) {\n newGroupedData.keys.forEach(key => {\n // appear\n const g = callback(key, newGroupedData.data.get(key), null);\n if (g) {\n g.context.animationState = AnimationStateEnum.appear;\n // this._setAnimationState(g);\n }\n });\n } else if (prevGroupedData) {\n prevGroupedData.keys.forEach(key => {\n // disappear\n const g = callback(key, null, prevGroupedData.data.get(key));\n g.context.animationState = AnimationStateEnum.disappear;\n // this._setAnimationState(g);\n });\n }\n\n // Enter elements between dataflow start data and end data should be removed directly.\n enterGraphics.forEach(g => {\n this._graphicMap.delete(g.context.uniqueKey);\n\n if ((g as IMarkGraphic).parent) {\n (g as IMarkGraphic).parent.removeChild(g as IMarkGraphic);\n }\n\n (g as IMarkGraphic).release();\n });\n const graphicCount = allGraphics.length;\n allGraphics.forEach((g, index) => {\n g.context.graphicCount = graphicCount;\n g.context.graphicIndex = index;\n g.stateSort = this._stateSort;\n });\n this._dataByKey = newGroupedData;\n this._graphics = allGraphics;\n this.needClear = true;\n }\n\n _runEncoderOfGraphic(styles: Record<string, (datum: Datum) => any>, g: IMarkGraphic, attrs: any = {}) {\n return runEncoder(styles, g.context.data[0], attrs);\n }\n\n _runGroupEncoder(groupStyles: Record<string, (datum: Datum) => any>) {\n if (!this._dataByGroup) {\n return null;\n }\n\n const attrsByGroup: any = {};\n\n this._dataByGroup.keys.forEach(key => {\n attrsByGroup[key] = runEncoder(groupStyles, this._dataByGroup.data.get(key)[0]);\n });\n this._attrsByGroup = attrsByGroup;\n\n return attrsByGroup;\n }\n\n protected _transformGraphicAttributes(g: IMarkGraphic, attrs: any, groupAttrs?: any) {\n return {\n ...groupAttrs,\n ...attrs\n };\n }\n\n protected _separateNormalStyle(normalStyle: Partial<IAttrs<T>>) {\n const updateStyles = {};\n const groupStyles = {};\n\n Object.keys(normalStyle).forEach(key => {\n if (this._unCompileChannel[key]) {\n return;\n }\n\n if (this._option.noSeparateStyle || isStateAttrChangeable(key, normalStyle, this._groupKey)) {\n (updateStyles as any)[key] = normalStyle[key];\n } else {\n (groupStyles as any)[key] = normalStyle[key];\n }\n });\n\n return { updateStyles, groupStyles };\n }\n\n protected _getEncoderOfStyle = (stateName: string, style: Partial<IAttrs<T>>) => {\n if (style && stateName) {\n const validEncoder: Record<string, (datum: Datum) => any> = {};\n Object.keys(style).forEach(key => {\n if (this._unCompileChannel[key]) {\n return;\n }\n\n validEncoder[key] = this._computeAttribute(key, stateName);\n });\n\n return validEncoder;\n }\n\n return null;\n };\n\n protected _setGraphicFromMarkConfig = (g: IMarkGraphic) => {\n const { setCustomizedShape, graphicName } = this._markConfig;\n\n if (setCustomizedShape) {\n g.pathProxy = (attrs: Partial<IGraphicAttribute>) => {\n return setCustomizedShape(g.context.data, attrs, new CustomPath2D());\n };\n }\n\n if (graphicName) {\n if (isFunction(graphicName)) {\n g.name = (graphicName as (e: IMarkGraphic) => string)(g);\n } else {\n g.name = graphicName as string;\n }\n }\n };\n\n protected _setStateOfGraphic = (g: IMarkGraphic, hasAnimation?: boolean) => {\n g.clearStates();\n g.stateProxy = null;\n\n if (g.context.diffState === DiffState.enter || g.context.diffState === DiffState.update) {\n g.stateProxy = (stateName: string, nexStates: string[]) => {\n return this._runEncoderOfGraphic(this._encoderOfState?.[stateName], g);\n };\n\n g.context.states && g.useStates(g.context.states, hasAnimation);\n }\n };\n\n protected _addProgressiveGraphic(parent: IGroup, g: IMarkGraphic) {\n (parent as IGroup).incrementalAppendChild(g);\n }\n\n protected _runEncoder(graphics: IMarkGraphic[], noGroupEncode?: boolean) {\n const attrsByGroup = noGroupEncode ? null : this._runGroupEncoder(this._encoderOfState?.group);\n graphics.forEach((g, index) => {\n let attrs = this._runEncoderOfGraphic(this._encoderOfState?.update, g);\n // 此时需要将最终的正确的样式设置给graphic,这样后续的动画目标属性才会正确,否则会动画样式只有默认状态的样式\n g.currentStates?.forEach((_state: string) => {\n const stateAttr = this._runEncoderOfGraphic(this._encoderOfState?.[_state], g);\n attrs = {\n ...attrs,\n ...stateAttr\n };\n });\n\n // 配置的优先级高于encoder\n if (!isNil(this._markConfig.interactive)) {\n attrs.pickable = this._markConfig.interactive;\n }\n const finalAttrs = this._transformGraphicAttributes(g, attrs, attrsByGroup?.[g.context.groupKey]);\n\n g.context.finalAttrs = finalAttrs;\n });\n }\n\n protected _runApplyGraphic(graphics: IMarkGraphic[]) {\n const hasAnimation = this.hasAnimation();\n\n graphics.forEach((g, index) => {\n const finalAttrs = g.context.finalAttrs;\n\n const hasStateAnimation = this.hasAnimationByState(g.context.animationState);\n // 新创建的graphic\n if (!(g as any).setAttributes) {\n const mockGraphic = g;\n // TODO:如果要走入场、Enter动画,就不用设置值了,保存到diffAttrs中由入场动画自己去设置,因为入场动画可能会延迟执行,所以首帧不能直接设置属性\n // TODO 太麻烦了,会影响后续bounds等计算逻辑,还是首帧设置吧。。。\n g = this._createGraphic(finalAttrs) as IMarkGraphic;\n // g = this._createGraphic(finalAttrs) as IMarkGraphic;\n // 如果有动画,设置一下最终attribute\n if (hasAnimation) {\n g.setFinalAttributes?.(finalAttrs);\n }\n g.context = mockGraphic.context;\n g.context.diffAttrs = finalAttrs;\n g.stateSort = this._stateSort;\n\n const gIndex = this._graphics === graphics ? index : index + this._graphics.length - graphics.length;\n if (gIndex >= 0) {\n this._graphics[gIndex] = g;\n }\n\n if (this.renderContext?.progressive) {\n const groupIndex = this._dataByGroup ? this._dataByGroup.keys.indexOf(g.context.groupKey) : 0;\n const group = groupIndex >= 0 ? this._product.getChildAt(groupIndex) : null;\n if (group) {\n this._addProgressiveGraphic(group as IGroup, g);\n }\n } else {\n this._product.appendChild(g);\n this._graphicMap.set(g.context.uniqueKey, g);\n }\n } else {\n const diffAttrs = getDiffAttributesOfGraphic(g, finalAttrs);\n g.context.diffAttrs = diffAttrs;\n if (g.context.reusing) {\n // 表示正在被复用,需要重设属性的\n // TODO 理论上复用后只会走一次enter,所以这里lastAttrs不需要后续清除,这里需要硬拷贝(通过initAttributes重设属性也行)\n g.context.lastAttrs = g.attribute;\n g.initAttributes({});\n // 为了避免exit一些和enter不一样的属性,所以这里要重置属性\n // const finalAttrs = g.getFinalAttribute();\n // finalAttrs && g.initAttributes({ ...finalAttrs });\n // g.initAttributes(finalAttrs);\n g.context.reusing = false;\n } else if (!hasStateAnimation) {\n // 不是正在被复用的属性,也不需要走动画,那就设置属性\n hasAnimation ? g.setAttributesAndPreventAnimate(diffAttrs) : g.setAttributes(diffAttrs);\n }\n\n // 如果有动画,需要设置值\n if (hasAnimation) {\n g.setFinalAttributes(finalAttrs);\n }\n }\n\n this._setStateOfGraphic(g, hasStateAnimation);\n this._setGraphicFromMarkConfig(g);\n });\n }\n\n protected _updateEncoderByState() {\n const encoderOfState: Record<string, Record<string, (datum: Datum) => any>> = {};\n\n Object.keys(this.stateStyle).forEach(stateName => {\n if (stateName === STATE_VALUE_ENUM.STATE_NORMAL) {\n const { groupStyles, updateStyles } = this._separateNormalStyle(this.stateStyle[stateName]);\n\n encoderOfState.group = this._getEncoderOfStyle(stateName, groupStyles);\n encoderOfState.update = this._getEncoderOfStyle(stateName, updateStyles);\n } else {\n encoderOfState[stateName] = this._getEncoderOfStyle(stateName, this.stateStyle[stateName]);\n }\n });\n\n this._encoderOfState = encoderOfState;\n }\n\n protected _runState(graphics: IMarkGraphic[]) {\n graphics.forEach(g => {\n const prevInteractionStateValues = (g.currentStates ?? []).filter((sv: string) => {\n return !this.state.getStateInfo(sv);\n });\n const newStateValues = [...prevInteractionStateValues, ...this.state.checkState(g, g.context.data)];\n\n if (this._stateSort && newStateValues.length) {\n newStateValues.sort(this._stateSort);\n }\n // const prevStateValues = g.context.states;\n // const isStateChanged =\n // newStateValues.length !== prevStateValues.length ||\n // newStateValues.some((newState: string, index: number) => newState !== prevStateValues[index]);\n\n g.context.states = newStateValues;\n });\n }\n\n protected _getAttrsFromConfig(attrs: IGroupGraphicAttribute = {}): IGroupGraphicAttribute {\n const { zIndex, clip, clipPath, overflow } = this._markConfig;\n\n if (!isNil(zIndex)) {\n attrs.zIndex = zIndex;\n }\n\n if (!isNil(clip)) {\n attrs.clip = clip;\n }\n\n if (!isNil(clipPath)) {\n const paths = isArray(clipPath) ? clipPath : clipPath(this._graphics);\n\n if (paths && paths.length) {\n attrs.path = paths;\n } else {\n attrs.clip = false;\n attrs.path = paths;\n }\n }\n\n if (!isNil(overflow)) {\n attrs.overflow = overflow;\n }\n\n return attrs;\n }\n\n protected _updateAttrsOfGroup() {\n const attrs = this._getAttrsFromConfig();\n\n this._product?.setAttributes(attrs);\n\n if (this._markConfig.support3d && this._product) {\n this._product.setMode('3d');\n }\n }\n\n protected _runBeforeTransform(data: Datum[]) {\n const transforms = this._transform?.filter(transformSpec => {\n if (transformSpec.type) {\n const transform = Factory.getGrammarTransform(transformSpec.type);\n return transform && (!transform.runType || transform.runType === 'beforeJoin');\n }\n\n return false;\n });\n\n return this.runTransforms(transforms, data);\n }\n\n protected _runEncoderTransform(data: Datum[], isProgressive: boolean) {\n const transforms = this._transform?.filter(transformSpec => {\n if (transformSpec.type) {\n const transform = Factory.getGrammarTransform(transformSpec.type);\n return transform && transform.runType === 'afterEncode' && !!transform.canProgressive === isProgressive;\n }\n\n return false;\n });\n\n return this.runTransforms(transforms, data);\n }\n\n renderInner() {\n this._updateEncoderByState();\n\n const data = this._data?.getProduct() ?? [{}];\n\n const transformData = this._runBeforeTransform(data);\n let markData: Datum[];\n\n if ((transformData as any)?.progressive) {\n this.renderContext = {\n beforeTransformProgressive: (transformData as any).progressive as IProgressiveTransformResult\n };\n const p = (transformData as any).progressive;\n if (p.canAnimate && p.canAnimate() && p.unfinished()) {\n this._updateAttrsOfGroup();\n return;\n }\n markData = p.output();\n } else {\n markData = array(transformData);\n this._runGroupData(markData);\n this.renderContext = this._parseProgressiveContext(markData);\n }\n\n if (this.renderContext?.progressive) {\n this._graphicMap.clear();\n this._runProgressiveStep();\n } else {\n this._runJoin(markData);\n this._runState(this._graphics);\n this._runEncoder(this._graphics);\n this._runEncoderTransform(this._graphics, false);\n this._runApplyGraphic(this._graphics);\n }\n\n this._updateAttrsOfGroup();\n }\n\n render() {\n if (this.isCommited()) {\n if (\n this.getVisible() &&\n (!this._skipBeforeLayouted || this.getCompiler().getLayoutState() !== LayoutState.before)\n ) {\n log(`render mark: ${this.getProductId()}, type is ${this.type}`);\n this.renderInner();\n }\n\n this.uncommit();\n }\n }\n\n updateMarkState(key: string): void {\n if (!this._product) {\n return;\n }\n const stateInfo = this.state.getStateInfo(key);\n\n this._graphics.forEach(g => {\n if (this.state.checkOneState(g, g.context.data, stateInfo) === 'in') {\n g.addState(key, true, this.hasAnimationByState('state'));\n } else {\n g.removeState(key, this.hasAnimationByState('state'));\n }\n });\n }\n\n clearExitGraphics() {\n this._prevDataByKey = this._dataByKey;\n\n const doRemove = (g: IMarkGraphic, key: string) => {\n this._graphicMap.delete(key);\n if (g.parent) {\n g.parent.removeChild(g);\n }\n if (g.release) {\n g.release();\n }\n };\n this._graphicMap.forEach((g, key) => {\n if (g.context.diffState !== DiffState.exit || g.isExiting) {\n return;\n }\n // 避免重复执行退场动画\n if (g.context.animationState === DiffState.exit && this.hasAnimationByState('exit')) {\n g.isExiting = true;\n // 执行exit动画\n const animationConfig = this.getAnimationConfig();\n if ((animationConfig as any).exit && (animationConfig as any).exit.length) {\n const exitConfigList = (animationConfig as any).exit.map((item: any, index: number) => ({\n name: `exit_${index}`,\n animation: {\n ...item,\n customParameters: g.context\n }\n }));\n g.applyAnimationState(['exit'], [exitConfigList.length === 1 ? exitConfigList[0] : exitConfigList], () => {\n // 有可能又被复用了,所以这里需要判断,如果还是在exiting阶段的话才删除\n // TODO 这里如果频繁执行的话,可能会误判\n doRemove(g, key);\n });\n }\n } else {\n doRemove(g, key);\n }\n });\n }\n\n isProgressive() {\n return this.renderContext && (!!this.renderContext.progressive || !!this.renderContext.beforeTransformProgressive);\n }\n\n canAnimateAfterProgressive() {\n return (\n this.renderContext &&\n this.renderContext.beforeTransformProgressive &&\n this.renderContext.beforeTransformProgressive.canAnimate?.()\n );\n }\n\n isDoingProgressive() {\n return (\n this.renderContext &&\n ((this.renderContext.progressive &&\n this.renderContext.progressive.currentIndex < this.renderContext.progressive.totalStep) ||\n (this.renderContext.beforeTransformProgressive && this.renderContext.beforeTransformProgressive.unfinished()))\n );\n }\n\n clearProgressive() {\n if (this.renderContext && this.renderContext.progressive) {\n this._graphics = [];\n\n (this._product as any).children.forEach((group: IGroup) => {\n group.incrementalClearChild();\n });\n (this._product as any).removeAllChild();\n }\n\n if (this.renderContext && this.renderContext.beforeTransformProgressive) {\n this.renderContext.beforeTransformProgressive.release();\n }\n\n this.renderContext = null;\n }\n\n restartProgressive() {\n if (this.renderContext && this.renderContext.progressive) {\n this.renderContext.progressive.currentIndex = 0;\n }\n }\n private _runBeforeProgressive() {\n const transform = this.renderContext.beforeTransformProgressive;\n\n transform.progressiveRun();\n const output = transform.output();\n\n if (transform.canAnimate?.()) {\n if (transform.unfinished()) {\n return;\n }\n\n this._runGroupData(output);\n this._runJoin(output);\n this._runState(this._graphics);\n this._runEncoder(this._graphics);\n this._runApplyGraphic(this._graphics);\n }\n }\n\n protected _runProgressiveJoin(): {\n graphicsByGroup?: Record<string, IMarkGraphic[]>;\n graphics?: IMarkGraphic[];\n needUpdate?: boolean;\n } {\n const currentIndex = this.renderContext.progressive.currentIndex;\n\n const graphics: IMarkGraphic[] = [];\n const graphicsByGroup: Record<string, IMarkGraphic[]> = {};\n this._dataByGroup.keys.forEach(groupKey => {\n const data = this.renderContext.progressive.groupedData.get(groupKey as string);\n const groupStep = this.renderContext.progressive.step;\n const dataSlice = data.slice(currentIndex * groupStep, (currentIndex + 1) * groupStep);\n const group: IMarkGraphic[] = [];\n\n dataSlice.forEach((entry, i) => {\n const key = this._keyGetter(entry);\n const g = {\n context: {\n ...this._getCommonContext(),\n diffState: DiffState.enter,\n data: [entry],\n uniqueKey: `${groupKey}_${key ?? currentIndex * groupStep + i}`,\n key,\n groupKey: groupKey\n }\n };\n\n group.push(g as IMarkGraphic);\n graphics.push(g as IMarkGraphic);\n });\n\n graphicsByGroup[groupKey as string] = group;\n });\n\n return { graphicsByGroup, graphics, needUpdate: true };\n }\n\n protected _createIncrementalGraphics() {\n this._product.removeAllChild();\n\n this._dataByGroup.keys.forEach(key => {\n const graphicItem = createGroup({\n pickable: false,\n zIndex: this._markConfig.zIndex\n });\n graphicItem.incremental = this.renderContext.progressive.step;\n this._product.appendChild(graphicItem);\n });\n }\n\n protected _setCommonAttributesToTheme(g: IMarkGraphic) {\n if (this._attrsByGroup && g) {\n const parent = g.parent;\n\n if (parent && this._attrsByGroup?.[g.context?.groupKey]) {\n parent.setTheme({\n common: this._attrsByGroup[g.context?.groupKey] as any\n });\n }\n }\n }\n\n protected _runProgressiveEncoder(graphics: IMarkGraphic[]) {\n const progressiveIndex = this.renderContext.progressive.currentIndex;\n\n if (progressiveIndex === 0) {\n this._runEncoder(graphics);\n } else {\n this._runEncoder(graphics, true);\n }\n }\n\n protected _runProgressiveApplyGraphic(graphics: IMarkGraphic[]) {\n const progressiveIndex = this.renderContext.progressive.currentIndex;\n\n if (progressiveIndex === 0) {\n this._runApplyGraphic(graphics);\n this._setCommonAttributesToTheme(graphics[0]);\n } else {\n this._runApplyGraphic(graphics);\n }\n }\n\n protected _runProgressiveStep() {\n const { graphics, graphicsByGroup, needUpdate } = this._runProgressiveJoin();\n\n if (this.renderContext.progressive.currentIndex === 0) {\n this._createIncrementalGraphics();\n this._graphics = graphics;\n } else if (needUpdate) {\n graphics.forEach(g => {\n this._graphics.push(g);\n });\n }\n this._runState(graphics);\n\n Object.keys(graphicsByGroup).forEach(groupKey => {\n this._runProgressiveEncoder(graphicsByGroup[groupKey]);\n });\n this._runEncoderTransform(this._graphics, true);\n\n Object.keys(graphicsByGroup).forEach(groupKey => {\n this._runProgressiveApplyGraphic(graphicsByGroup[groupKey]);\n });\n\n this.renderContext.progressive.currentIndex += 1;\n }\n\n renderProgressive() {\n if (this.renderContext?.beforeTransformProgressive) {\n this._runBeforeProgressive();\n return;\n } else if (this.renderContext.progressive) {\n this._runProgressiveStep();\n }\n }\n\n hasAnimationByState(state: AnimationStateValues) {\n if (\n !state ||\n !this._animationConfig ||\n !(this._animationConfig as any)[state] ||\n this._disabledAnimationStates.includes(state)\n ) {\n return false;\n }\n const stateAnimationConfig = (this._animationConfig as any)[state];\n return (stateAnimationConfig as IAnimationConfig[]).length > 0 || isObject(stateAnimationConfig);\n }\n\n hasAnimation() {\n if (!this._animationConfig) {\n return false;\n }\n return Object.keys(this._animationConfig).length > 0;\n }\n\n runAnimation() {\n this._runStateAnimation(this.getGraphics());\n }\n}\n"]}
|
|
@@ -33,7 +33,6 @@ export declare class Compiler implements ICompiler {
|
|
|
33
33
|
protected _height: number;
|
|
34
34
|
protected _container: IRenderContainer;
|
|
35
35
|
protected _option: IRenderOption;
|
|
36
|
-
getOption(): IRenderOption;
|
|
37
36
|
private _released;
|
|
38
37
|
private _layoutState?;
|
|
39
38
|
private _compileChart;
|
package/esm/compile/compiler.js
CHANGED
|
@@ -29,9 +29,6 @@ export class Compiler {
|
|
|
29
29
|
getRootGroup() {
|
|
30
30
|
return this._rootGroup;
|
|
31
31
|
}
|
|
32
|
-
getOption() {
|
|
33
|
-
return this._option;
|
|
34
|
-
}
|
|
35
32
|
constructor(container, option) {
|
|
36
33
|
this._count = 0, this._rootMarks = [], this._viewListeners = new Map, this._windowListeners = new Map,
|
|
37
34
|
this._canvasListeners = new Map, this.isInited = !1, this._released = !1, this._compileChart = null,
|