UNPKG

27.6 kBSource Map (JSON)View Raw
1{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/geometry/element/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { deepMix, each, get, isArray, isEmpty, isEqual, isFunction, isString } from '@antv/util';\n// 暂未发包\n// @ts-ignore\nimport { propagationDelegate } from '@antv/component';\nimport { doAnimate } from '../../animate';\nimport Base from '../../base';\nimport { BBox, IGroup, IShape } from '../../dependents';\nimport { AnimateOption, Datum, ShapeFactory, ShapeInfo, StateCfg } from '../../interface';\nimport { getReplaceAttrs } from '../../util/graphics';\nimport Geometry from '../base';\nimport { GEOMETRY_LIFE_CIRCLE } from '../../constant';\nimport { BACKGROUND_SHAPE } from '../shape/constant';\n\n/** Element 构造函数传入参数类型 */\ninterface ElementCfg {\n /** 用于创建各种 shape 的工厂对象 */\n shapeFactory: ShapeFactory;\n /** shape 容器 */\n container: IGroup;\n /** element 的索引 */\n elementIndex?: number;\n /** 虚拟 group,用户可以不传入 */\n offscreenGroup?: IGroup;\n /** 是否可见 */\n visible?: boolean;\n}\n\n/**\n * Element 图形元素。\n * 定义:在 G2 中,我们会将数据通过图形语法映射成不同的图形,比如点图,数据集中的每条数据会对应一个点,柱状图每条数据对应一个柱子,线图则是一组数据对应一条折线,Element 即一条/一组数据对应的图形元素,它代表一条数据或者一个数据集,在图形层面,它可以是单个 Shape 也可以是多个 Shape,我们称之为图形元素。\n */\nexport default class Element extends Base {\n /** 用于创建各种 shape 的工厂对象 */\n public shapeFactory: ShapeFactory;\n /** shape 容器 */\n public container: IGroup;\n /** element 索引 */\n public elementIndex: number;\n /** 最后创建的图形对象 */\n public shape: IShape | IGroup;\n /** shape 的动画配置 */\n public animate: AnimateOption | boolean;\n\n // 非构造函数属性,需要外部赋值\n /** element 对应的 Geometry 实例 */\n public geometry: Geometry;\n /** 保存 shape 对应的 label */\n public labelShape: IGroup[] = [];\n\n /** 绘制的 shape 类型 */\n private shapeType: string;\n\n /** shape 绘制需要的数据 */\n private model: ShapeInfo;\n /** 原始数据 */\n private data: Datum;\n // 存储当前开启的状态\n private states: string[] = [];\n private statesStyle;\n // 虚拟 Group\n private offscreenGroup: IGroup;\n\n constructor(cfg: ElementCfg) {\n super(cfg);\n\n const { shapeFactory, container, offscreenGroup, elementIndex, visible = true } = cfg;\n this.shapeFactory = shapeFactory;\n this.container = container;\n this.offscreenGroup = offscreenGroup;\n this.visible = visible;\n this.elementIndex = elementIndex;\n }\n\n /**\n * 绘制图形。\n * @param model 绘制数据。\n * @param isUpdate 可选,是否是更新发生后的绘制。\n */\n public draw(model: ShapeInfo, isUpdate: boolean = false) {\n this.model = model;\n this.data = model.data; // 存储原始数据\n this.shapeType = this.getShapeType(model);\n\n // 绘制图形\n this.drawShape(model, isUpdate);\n\n if (this.visible === false) {\n // 用户在初始化的时候声明 visible: false\n this.changeVisible(false);\n }\n }\n\n /**\n * 更新图形。\n * @param model 更新的绘制数据。\n */\n public update(model: ShapeInfo) {\n const { shapeFactory, shape } = this;\n if (!shape) {\n return;\n }\n\n // 更新数据\n this.model = model;\n this.data = model.data;\n this.shapeType = this.getShapeType(model);\n\n // step 1: 更新 shape 携带的信息\n this.setShapeInfo(shape, model);\n\n // step 2: 使用虚拟 Group 重新绘制 shape,然后更新当前 shape\n const offscreenGroup = this.getOffscreenGroup();\n const newShape = shapeFactory.drawShape(this.shapeType, model, offscreenGroup);\n // @ts-ignore\n newShape.cfg.data = this.data;\n // @ts-ignore\n newShape.cfg.origin = model;\n // label 需要使用\n newShape.cfg.element = this;\n\n // step 3: 同步 shape 样式\n this.syncShapeStyle(shape, newShape, this.getStates(), this.getAnimateCfg('update'));\n }\n\n /**\n * 销毁 element 实例。\n */\n public destroy() {\n const { shapeFactory, shape } = this;\n\n if (shape) {\n const animateCfg = this.getAnimateCfg('leave');\n if (animateCfg) {\n // 指定了动画配置则执行销毁动画\n doAnimate(shape, animateCfg, {\n coordinate: shapeFactory.coordinate,\n toAttrs: {\n ...shape.attr(),\n },\n });\n } else {\n // 否则直接销毁\n shape.remove(true);\n }\n }\n\n // reset\n this.states = [];\n this.shapeFactory = undefined;\n this.container = undefined;\n this.shape = undefined;\n this.animate = undefined;\n this.geometry = undefined;\n this.labelShape = [];\n this.model = undefined;\n this.data = undefined;\n this.offscreenGroup = undefined;\n this.statesStyle = undefined;\n\n super.destroy();\n }\n\n /**\n * 显示或者隐藏 element。\n * @param visible 是否可见。\n */\n public changeVisible(visible: boolean) {\n super.changeVisible(visible);\n\n if (visible) {\n if (this.shape) {\n this.shape.show();\n }\n if (this.labelShape) {\n this.labelShape.forEach((label: IGroup) => {\n label.show();\n });\n }\n } else {\n if (this.shape) {\n this.shape.hide();\n }\n if (this.labelShape) {\n this.labelShape.forEach((label: IGroup) => {\n label.hide();\n });\n }\n }\n }\n\n /**\n * 设置 Element 的状态。\n *\n * 目前 Element 开放三种状态:\n * 1. active\n * 2. selected\n * 3. inactive\n *\n * 这三种状态相互独立,可以进行叠加。\n *\n * 这三种状态的样式可在 [[Theme]] 主题中或者通过 `geometry.state()` 接口进行配置。\n *\n * ```ts\n * // 激活 active 状态\n * setState('active', true);\n * ```\n *\n * @param stateName 状态名\n * @param stateStatus 是否开启状态\n */\n public setState(stateName: string, stateStatus: boolean) {\n const { states, shapeFactory, model, shape, shapeType } = this;\n\n const index = states.indexOf(stateName);\n if (stateStatus) {\n // 开启状态\n if (index > -1) {\n // 该状态已经开启,则返回\n return;\n }\n states.push(stateName);\n if (stateName === 'active' || stateName === 'selected') {\n shape?.toFront();\n }\n } else {\n if (index === -1) {\n // 关闭状态,但是状态未设置过\n return;\n }\n states.splice(index, 1);\n if (stateName === 'active' || stateName === 'selected') {\n const { sortZIndex, zIndexReversed } = this.geometry;\n const idx = zIndexReversed ? this.geometry.elements.length - this.elementIndex : this.elementIndex;\n sortZIndex ? shape.setZIndex(idx) : shape.set('zIndex', idx);\n }\n }\n\n // 使用虚拟 group 重新绘制 shape,然后对这个 shape 应用状态样式后,更新当前 shape。\n const offscreenShape = shapeFactory.drawShape(shapeType, model, this.getOffscreenGroup());\n if (states.length) {\n // 应用当前状态\n this.syncShapeStyle(shape, offscreenShape, states, null);\n } else {\n // 如果没有状态,则需要恢复至原始状态\n this.syncShapeStyle(shape, offscreenShape, ['reset'], null);\n }\n\n offscreenShape.remove(true); // 销毁,减少内存占用\n\n const eventObject = {\n state: stateName,\n stateStatus,\n element: this,\n target: this.container,\n };\n this.container.emit('statechange', eventObject);\n // @ts-ignore\n propagationDelegate(this.shape, 'statechange', eventObject);\n }\n\n /**\n * 清空状量态,恢复至初始状态。\n */\n public clearStates() {\n const states = this.states;\n\n each(states, (state) => {\n this.setState(state, false);\n });\n\n this.states = [];\n }\n\n /**\n * 查询当前 Element 上是否已设置 `stateName` 对应的状态。\n * @param stateName 状态名称。\n * @returns true 表示存在,false 表示不存在。\n */\n public hasState(stateName: string): boolean {\n return this.states.includes(stateName);\n }\n\n /**\n * 获取当前 Element 上所有的状态。\n * @returns 当前 Element 上所有的状态数组。\n */\n public getStates(): string[] {\n return this.states;\n }\n\n /**\n * 获取 Element 对应的原始数据。\n * @returns 原始数据。\n */\n public getData(): Datum {\n return this.data;\n }\n\n /**\n * 获取 Element 对应的图形绘制数据。\n * @returns 图形绘制数据。\n */\n public getModel(): ShapeInfo {\n return this.model;\n }\n\n /**\n * 返回 Element 元素整体的 bbox,包含文本及文本连线(有的话)。\n * @returns 整体包围盒。\n */\n public getBBox(): BBox {\n const { shape, labelShape } = this;\n let bbox = {\n x: 0,\n y: 0,\n minX: 0,\n minY: 0,\n maxX: 0,\n maxY: 0,\n width: 0,\n height: 0,\n };\n if (shape) {\n bbox = shape.getCanvasBBox();\n }\n if (labelShape) {\n labelShape.forEach((label: IGroup) => {\n const labelBBox = label.getCanvasBBox();\n bbox.x = Math.min(labelBBox.x, bbox.x);\n bbox.y = Math.min(labelBBox.y, bbox.y);\n bbox.minX = Math.min(labelBBox.minX, bbox.minX);\n bbox.minY = Math.min(labelBBox.minY, bbox.minY);\n bbox.maxX = Math.max(labelBBox.maxX, bbox.maxX);\n bbox.maxY = Math.max(labelBBox.maxY, bbox.maxY);\n });\n }\n\n bbox.width = bbox.maxX - bbox.minX;\n bbox.height = bbox.maxY - bbox.minY;\n\n return bbox;\n }\n\n private getStatesStyle() {\n if (!this.statesStyle) {\n const { shapeType, geometry, shapeFactory } = this;\n const stateOption = geometry.stateOption;\n const defaultShapeType = shapeFactory.defaultShapeType;\n const stateTheme = shapeFactory.theme[shapeType] || shapeFactory.theme[defaultShapeType];\n this.statesStyle = deepMix({}, stateTheme, stateOption);\n }\n\n return this.statesStyle;\n }\n\n // 从主题中获取对应状态量的样式\n private getStateStyle(stateName: string, shapeKey?: string): StateCfg {\n const statesStyle = this.getStatesStyle();\n const stateCfg = get(statesStyle, [stateName, 'style'], {});\n const shapeStyle = stateCfg[shapeKey] || stateCfg;\n if (isFunction(shapeStyle)) {\n return shapeStyle(this);\n }\n\n return shapeStyle;\n }\n\n // 获取动画配置\n private getAnimateCfg(animateType: string) {\n const animate = this.animate;\n if (animate) {\n const cfg = animate[animateType];\n\n if (cfg) {\n // 增加动画的回调函数,如果外部传入了,则先执行外部,然后发射 geometry 的 animate 事件\n return {\n ...cfg,\n callback: () => {\n isFunction(cfg.callback) && cfg.callback();\n this.geometry?.emit(GEOMETRY_LIFE_CIRCLE.AFTER_DRAW_ANIMATE);\n },\n };\n }\n return cfg;\n }\n\n return null;\n }\n\n // 绘制图形\n private drawShape(model: ShapeInfo, isUpdate: boolean = false) {\n const { shapeFactory, container, shapeType } = this;\n\n // 自定义 shape 有可能返回空 shape\n this.shape = shapeFactory.drawShape(shapeType, model, container);\n\n if (this.shape) {\n this.setShapeInfo(this.shape, model); // 存储绘图数据\n // @ts-ignore\n const name = this.shape.cfg.name;\n // 附加 element 的 name, name 现在支持数组了,很好用了\n if (!name) {\n // 这个地方如果用户添加了 name, 则附加 name ,否则就添加自己的 name\n // @ts-ignore\n this.shape.cfg.name = ['element', this.shapeFactory.geometryType];\n } else if (isString(name)) {\n // @ts-ignore\n this.shape.cfg.name = ['element', name];\n }\n // 执行入场动画\n const animateType = isUpdate ? 'enter' : 'appear';\n const animateCfg = this.getAnimateCfg(animateType);\n if (animateCfg) {\n // 开始执行动画的生命周期\n this.geometry?.emit(GEOMETRY_LIFE_CIRCLE.BEFORE_DRAW_ANIMATE);\n\n doAnimate(this.shape, animateCfg, {\n coordinate: shapeFactory.coordinate,\n toAttrs: {\n ...this.shape.attr(),\n },\n });\n }\n }\n }\n\n // 获取虚拟 Group\n private getOffscreenGroup() {\n if (!this.offscreenGroup) {\n const GroupCtor = this.container.getGroupBase(); // 获取分组的构造函数\n this.offscreenGroup = new GroupCtor({});\n }\n\n return this.offscreenGroup;\n }\n\n // 设置 shape 上需要携带的信息\n private setShapeInfo(shape: IShape | IGroup, data: ShapeInfo) {\n // @ts-ignore\n shape.cfg.origin = data;\n // @ts-ignore\n shape.cfg.element = this;\n if (shape.isGroup()) {\n const children = shape.get('children');\n children.forEach((child) => {\n this.setShapeInfo(child, data);\n });\n }\n }\n\n // 更新当前 shape 的样式\n private syncShapeStyle(\n sourceShape: IGroup | IShape,\n targetShape: IGroup | IShape,\n states: string[] = [],\n animateCfg,\n index: number = 0\n ) {\n if (!sourceShape || !targetShape) {\n return;\n }\n // 所有的 shape 都需要同步 clip\n const clip = sourceShape.get('clipShape');\n const newClip = targetShape.get('clipShape');\n\n this.syncShapeStyle(clip, newClip, states, animateCfg);\n\n if (sourceShape.isGroup()) {\n const children = sourceShape.get('children');\n const newChildren = targetShape.get('children');\n for (let i = 0; i < children.length; i++) {\n this.syncShapeStyle(children[i], newChildren[i], states, animateCfg, index + i);\n }\n } else {\n if (!isEmpty(states) && !isEqual(states, ['reset'])) {\n let name = sourceShape.get('name');\n if (isArray(name)) {\n // 会附加 element 的 name\n name = name[1];\n }\n\n each(states, (state) => {\n // background shape 不进行状态样式设置\n if (targetShape.get('name') !== BACKGROUND_SHAPE) {\n const style = this.getStateStyle(state, name || index); // 如果用户没有设置 name,则默认根据索引值\n targetShape.attr(style);\n }\n });\n }\n const newAttrs = getReplaceAttrs(sourceShape as IShape, targetShape as IShape);\n\n if (this.animate) {\n if (animateCfg) {\n this.geometry?.emit(GEOMETRY_LIFE_CIRCLE.BEFORE_DRAW_ANIMATE);\n // 需要进行动画\n doAnimate(sourceShape, animateCfg, {\n coordinate: this.shapeFactory.coordinate,\n toAttrs: newAttrs,\n shapeModel: this.model,\n });\n } else if (!isEmpty(states)) {\n sourceShape.stopAnimate();\n sourceShape.animate(newAttrs, {\n duration: 300,\n });\n } else {\n sourceShape.attr(newAttrs);\n }\n } else {\n sourceShape.attr(newAttrs);\n }\n }\n }\n\n private getShapeType(model: ShapeInfo) {\n const shape = get(model, 'shape');\n return isArray(shape) ? shape[0] : shape;\n }\n}\n"]}
\No newline at end of file