@visactor/vchart 2.0.0-alpha.2 → 2.0.0-alpha.3
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 +199 -106
- package/build/index.js +199 -106
- package/build/index.min.js +2 -2
- package/build/tsconfig.tsbuildinfo +1 -1
- package/cjs/animation/utils.d.ts +2 -2
- package/cjs/chart/mosaic/mosaic-transformer.js +1 -1
- package/cjs/chart/mosaic/mosaic-transformer.js.map +1 -1
- package/cjs/chart/mosaic/mosaic.js.map +1 -1
- package/cjs/chart/util.js +1 -2
- package/cjs/component/data-zoom/util.js +7 -7
- package/cjs/component/data-zoom/util.js.map +1 -1
- package/cjs/component/tooltip/tooltip.js +5 -7
- package/cjs/component/tooltip/tooltip.js.map +1 -1
- package/cjs/component/util.js +2 -1
- package/cjs/core/expression-function.js +1 -1
- package/cjs/core/factory.js +1 -1
- package/cjs/core/index.d.ts +1 -1
- package/cjs/core/index.js +2 -2
- package/cjs/core/index.js.map +1 -1
- package/cjs/core/instance-manager.js +1 -1
- package/cjs/core/interface.js +1 -1
- package/cjs/core/vchart.js +1 -1
- package/cjs/core/vchart.js.map +1 -1
- package/cjs/data/initialize.js +1 -1
- package/cjs/data/register.js +1 -1
- package/cjs/env/env.js +1 -1
- package/cjs/env/index.js +1 -1
- package/cjs/event/bubble.js +1 -1
- package/cjs/mark/base/base-mark.d.ts +1 -1
- package/cjs/mark/base/base-mark.js +5 -4
- package/cjs/mark/base/base-mark.js.map +1 -1
- package/cjs/mark/component.d.ts +0 -1
- package/cjs/mark/component.js +1 -5
- package/cjs/mark/component.js.map +1 -1
- package/cjs/mark/group.js +2 -2
- package/cjs/mark/group.js.map +1 -1
- package/cjs/mark/interface/common.d.ts +1 -0
- package/cjs/mark/interface/common.js.map +1 -1
- package/cjs/mark/interface/mark.d.ts +0 -1
- package/cjs/mark/interface/mark.js.map +1 -1
- package/cjs/plugin/components/tooltip-handler/dom-tooltip-handler.d.ts +1 -0
- package/cjs/plugin/components/tooltip-handler/dom-tooltip-handler.js +3 -0
- package/cjs/plugin/components/tooltip-handler/dom-tooltip-handler.js.map +1 -1
- package/cjs/series/mosaic/interface.d.ts +1 -0
- package/cjs/series/mosaic/interface.js.map +1 -1
- package/cjs/series/mosaic/mosaic.d.ts +2 -0
- package/cjs/series/mosaic/mosaic.js +5 -2
- package/cjs/series/mosaic/mosaic.js.map +1 -1
- package/cjs/typings/tooltip/handler.d.ts +1 -0
- package/cjs/typings/tooltip/handler.js.map +1 -1
- package/cjs/util/data.js +7 -3
- package/cjs/util/data.js.map +1 -1
- package/esm/animation/utils.d.ts +2 -2
- package/esm/chart/mosaic/mosaic-transformer.js +1 -1
- package/esm/chart/mosaic/mosaic-transformer.js.map +1 -1
- package/esm/chart/mosaic/mosaic.js.map +1 -1
- package/esm/chart/util.js +1 -2
- package/esm/component/data-zoom/util.js +7 -6
- package/esm/component/data-zoom/util.js.map +1 -1
- package/esm/component/tooltip/tooltip.js +5 -7
- package/esm/component/tooltip/tooltip.js.map +1 -1
- package/esm/component/util.js +2 -1
- package/esm/core/expression-function.js +1 -1
- package/esm/core/factory.js +1 -1
- package/esm/core/index.d.ts +1 -1
- package/esm/core/index.js +2 -2
- package/esm/core/index.js.map +1 -1
- package/esm/core/instance-manager.js +1 -1
- package/esm/core/interface.js +1 -1
- package/esm/core/vchart.js +1 -1
- package/esm/core/vchart.js.map +1 -1
- package/esm/data/initialize.js +1 -1
- package/esm/data/register.js +1 -1
- package/esm/env/env.js +1 -1
- package/esm/env/index.js +1 -1
- package/esm/event/bubble.js +1 -1
- package/esm/mark/base/base-mark.d.ts +1 -1
- package/esm/mark/base/base-mark.js +4 -4
- package/esm/mark/base/base-mark.js.map +1 -1
- package/esm/mark/component.d.ts +0 -1
- package/esm/mark/component.js +0 -6
- package/esm/mark/component.js.map +1 -1
- package/esm/mark/group.js +1 -3
- package/esm/mark/group.js.map +1 -1
- package/esm/mark/interface/common.d.ts +1 -0
- package/esm/mark/interface/common.js.map +1 -1
- package/esm/mark/interface/mark.d.ts +0 -1
- package/esm/mark/interface/mark.js.map +1 -1
- package/esm/plugin/components/tooltip-handler/dom-tooltip-handler.d.ts +1 -0
- package/esm/plugin/components/tooltip-handler/dom-tooltip-handler.js +3 -0
- package/esm/plugin/components/tooltip-handler/dom-tooltip-handler.js.map +1 -1
- package/esm/series/mosaic/interface.d.ts +1 -0
- package/esm/series/mosaic/interface.js.map +1 -1
- package/esm/series/mosaic/mosaic.d.ts +2 -0
- package/esm/series/mosaic/mosaic.js +5 -2
- package/esm/series/mosaic/mosaic.js.map +1 -1
- package/esm/typings/tooltip/handler.d.ts +1 -0
- package/esm/typings/tooltip/handler.js.map +1 -1
- package/esm/util/data.js +6 -3
- package/esm/util/data.js.map +1 -1
- package/package.json +8 -8
|
@@ -698,9 +698,9 @@ class BaseMark extends grammar_item_1.GrammarItem {
|
|
|
698
698
|
}));
|
|
699
699
|
return this.runTransforms(transforms, data);
|
|
700
700
|
}
|
|
701
|
-
|
|
701
|
+
renderInner() {
|
|
702
702
|
var _a, _b, _c;
|
|
703
|
-
|
|
703
|
+
this._updateEncoderByState();
|
|
704
704
|
const data = null !== (_b = null === (_a = this._data) || void 0 === _a ? void 0 : _a.getProduct()) && void 0 !== _b ? _b : [ {} ], transformData = this._runBeforeTransform(data);
|
|
705
705
|
let markData;
|
|
706
706
|
if (null == transformData ? void 0 : transformData.progressive) {
|
|
@@ -718,8 +718,9 @@ class BaseMark extends grammar_item_1.GrammarItem {
|
|
|
718
718
|
this._runApplyGraphic(this._graphics)), this._updateAttrsOfGroup();
|
|
719
719
|
}
|
|
720
720
|
render() {
|
|
721
|
-
this.
|
|
722
|
-
this.
|
|
721
|
+
this.isCommited() && (!this.getVisible() || this._skipBeforeLayouted && this.getCompiler().getLayoutState() === interface_2.LayoutState.before || ((0,
|
|
722
|
+
util_3.log)(`render mark: ${this.getProductId()}, type is ${this.type}`), this.renderInner()),
|
|
723
|
+
this.uncommit());
|
|
723
724
|
}
|
|
724
725
|
updateMarkState(key) {
|
|
725
726
|
if (!this._product) return;
|
|
@@ -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, has, 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 { log } from '../../util';\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 setAnimationConfig(config: Partial<MarkAnimationSpec>) {\n // 封装options,批量添加一些默认参数\n const animationConfig = { ...config };\n Object.keys(animationConfig).forEach(key => {\n const value = (animationConfig as any)[key];\n if (isArray(value)) {\n value.forEach(item => {\n const options = item!.options ?? {};\n item.options = (...args: any[]) => {\n const _options = typeof options === 'function' ? options(...args) : options;\n return {\n ..._options,\n layoutRect: (this.model as any).getLayoutRect?.()\n };\n };\n });\n }\n // if (isNil(animationConfig[key])) {\n // animationConfig[key] = {};\n // }\n });\n this._animationConfig = animationConfig;\n }\n\n /** 布局标记 */\n private _skipBeforeLayouted = false;\n\n setSkipBeforeLayouted(skip: boolean) {\n this._skipBeforeLayouted = skip;\n }\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 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 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 // 可以同类型进行morphing\n // if (this.type === mark.type) {\n // return;\n // }\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 }\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 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 config = config.map((item: any, index: number) => ({\n ...item,\n priority: item.priority ?? Infinity\n }));\n }\n return 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 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 if (state === 'enter' && animationConfig.normal) {\n shouldRunNormal = true;\n }\n g.applyAnimationState(stateArray, [configList.length === 1 ? configList[0] : configList]);\n // configList.forEach((item: any) => {\n // item.animation.customParameters = null;\n // });\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 _runJoin(data: Datum[]) {\n const newGroupedData = this._getDataByKey(data);\n const prevGroupedData = this._prevDataByKey;\n const newGraphics: 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 // 复用exit的图元,需要设置属性为最初的属性\n if (g.context?.diffState === 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 this._graphicMap.set(key, g as IMarkGraphic);\n newGraphics.push(g as IMarkGraphic);\n } else {\n // update\n g = this._graphicMap.get(key);\n\n if (g) {\n diffState = DiffState.update;\n newGraphics.push(g as IMarkGraphic);\n }\n }\n\n if (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 animationState: diffState,\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 enterGraphics.delete(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 }\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 });\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 = newGraphics.length;\n newGraphics.forEach((g, index) => {\n g.context.graphicCount = graphicCount;\n g.context.graphicIndex = index;\n });\n this._dataByKey = newGroupedData;\n this._graphics = newGraphics;\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) => {\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);\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 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(hasStateAnimation ? {} : finalAttrs) as IMarkGraphic;\n // g = this._createGraphic(finalAttrs) as IMarkGraphic;\n // 如果有动画,设置一下最终attribute\n if (hasAnimation) {\n g.setFinalAttribute(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 // diff一下,获取差异的属性\n const prevAttrs: Record<string, any> = g.getAttributes(true);\n const diffAttrs: Record<string, any> = {};\n Object.keys(finalAttrs).forEach(key => {\n if (prevAttrs[key] !== finalAttrs[key]) {\n diffAttrs[key] = finalAttrs[key];\n }\n });\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.setFinalAttribute(finalAttrs);\n }\n }\n\n this._setStateOfGraphic(g);\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 protected _runMainTasks() {\n if (\n !this.getVisible() ||\n (this._skipBeforeLayouted && this.getCompiler().getLayoutState() === LayoutState.before)\n ) {\n return;\n }\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 // this._runStateAnimation(this._graphics);\n }\n\n this._updateAttrsOfGroup();\n }\n\n render() {\n if (this._isCommited) {\n this._updateEncoderByState();\n log(`render mark: ${this.getProductId()}, type is ${this.type}`);\n this._runMainTasks();\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 // 避免重复执行退场动画\n if (g.context.diffState === DiffState.exit && !g.isExiting) {\n if (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\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 updateAnimationState(callback: (graphic: IMarkGraphic) => AnimationStateValues) {\n if (this._graphics && this._graphics.length) {\n this._graphics.forEach(g => {\n g.context.animationState = callback(g);\n });\n }\n }\n\n hasAnimationByState(state: keyof MarkAnimationSpec) {\n if (!state || !this._animationConfig || !this._animationConfig[state]) {\n return false;\n }\n const stateAnimationConfig = this._animationConfig[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._graphics);\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, has, 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 { log } from '../../util';\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 setAnimationConfig(config: Partial<MarkAnimationSpec>) {\n // 封装options,批量添加一些默认参数\n const animationConfig = { ...config };\n Object.keys(animationConfig).forEach(key => {\n const value = (animationConfig as any)[key];\n if (isArray(value)) {\n value.forEach(item => {\n const options = item!.options ?? {};\n item.options = (...args: any[]) => {\n const _options = typeof options === 'function' ? options(...args) : options;\n return {\n ..._options,\n layoutRect: (this.model as any).getLayoutRect?.()\n };\n };\n });\n }\n // if (isNil(animationConfig[key])) {\n // animationConfig[key] = {};\n // }\n });\n this._animationConfig = animationConfig;\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 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 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 // 可以同类型进行morphing\n // if (this.type === mark.type) {\n // return;\n // }\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 }\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 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 config = config.map((item: any, index: number) => ({\n ...item,\n priority: item.priority ?? Infinity\n }));\n }\n return 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 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 if (state === 'enter' && animationConfig.normal) {\n shouldRunNormal = true;\n }\n g.applyAnimationState(stateArray, [configList.length === 1 ? configList[0] : configList]);\n // configList.forEach((item: any) => {\n // item.animation.customParameters = null;\n // });\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 _runJoin(data: Datum[]) {\n const newGroupedData = this._getDataByKey(data);\n const prevGroupedData = this._prevDataByKey;\n const newGraphics: 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 // 复用exit的图元,需要设置属性为最初的属性\n if (g.context?.diffState === 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 this._graphicMap.set(key, g as IMarkGraphic);\n newGraphics.push(g as IMarkGraphic);\n } else {\n // update\n g = this._graphicMap.get(key);\n\n if (g) {\n diffState = DiffState.update;\n newGraphics.push(g as IMarkGraphic);\n }\n }\n\n if (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 animationState: diffState,\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 enterGraphics.delete(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 }\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 });\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 = newGraphics.length;\n newGraphics.forEach((g, index) => {\n g.context.graphicCount = graphicCount;\n g.context.graphicIndex = index;\n });\n this._dataByKey = newGroupedData;\n this._graphics = newGraphics;\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) => {\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);\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 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(hasStateAnimation ? {} : finalAttrs) as IMarkGraphic;\n // g = this._createGraphic(finalAttrs) as IMarkGraphic;\n // 如果有动画,设置一下最终attribute\n if (hasAnimation) {\n g.setFinalAttribute(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 // diff一下,获取差异的属性\n const prevAttrs: Record<string, any> = g.getAttributes(true);\n const diffAttrs: Record<string, any> = {};\n Object.keys(finalAttrs).forEach(key => {\n if (prevAttrs[key] !== finalAttrs[key]) {\n diffAttrs[key] = finalAttrs[key];\n }\n });\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.setFinalAttribute(finalAttrs);\n }\n }\n\n this._setStateOfGraphic(g);\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 // this._runStateAnimation(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\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 // 避免重复执行退场动画\n if (g.context.diffState === DiffState.exit && !g.isExiting) {\n if (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\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 updateAnimationState(callback: (graphic: IMarkGraphic) => AnimationStateValues) {\n if (this._graphics && this._graphics.length) {\n this._graphics.forEach(g => {\n g.context.animationState = callback(g);\n });\n }\n }\n\n hasAnimationByState(state: keyof MarkAnimationSpec) {\n if (!state || !this._animationConfig || !this._animationConfig[state]) {\n return false;\n }\n const stateAnimationConfig = this._animationConfig[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._graphics);\n }\n}\n"]}
|
package/cjs/mark/component.d.ts
CHANGED
|
@@ -17,7 +17,6 @@ export declare class ComponentMark extends BaseMark<ICommonSpec> implements ICom
|
|
|
17
17
|
protected _attributesTransform: (attrs: any) => any;
|
|
18
18
|
setAttributeTransform(t: (attrs: any) => any): void;
|
|
19
19
|
renderInner(): void;
|
|
20
|
-
render(): void;
|
|
21
20
|
release(): void;
|
|
22
21
|
}
|
|
23
22
|
export declare const registerComponentMark: () => void;
|
package/cjs/mark/component.js
CHANGED
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: !0
|
|
5
5
|
}), exports.registerComponentMark = exports.ComponentMark = void 0;
|
|
6
6
|
|
|
7
|
-
const factory_1 = require("./../core/factory"), base_mark_1 = require("./base/base-mark"), vutils_1 = require("@visactor/vutils"), event_1 = require("../constant/event")
|
|
7
|
+
const factory_1 = require("./../core/factory"), base_mark_1 = require("./base/base-mark"), vutils_1 = require("@visactor/vutils"), event_1 = require("../constant/event");
|
|
8
8
|
|
|
9
9
|
class ComponentMark extends base_mark_1.BaseMark {
|
|
10
10
|
constructor(name, option) {
|
|
@@ -48,10 +48,6 @@ class ComponentMark extends base_mark_1.BaseMark {
|
|
|
48
48
|
model: this.model
|
|
49
49
|
});
|
|
50
50
|
}
|
|
51
|
-
render() {
|
|
52
|
-
this._isCommited && ((0, debug_1.log)(`render mark: ${this.getProductId()}, type is ${this.type}`),
|
|
53
|
-
this.renderInner(), this.uncommit());
|
|
54
|
-
}
|
|
55
51
|
release() {
|
|
56
52
|
super.release(), this.removeProduct();
|
|
57
53
|
}
|