1 | import Base from '../../base';
|
2 | import { BBox, IGroup, IShape } from '../../dependents';
|
3 | import { AnimateOption, Datum, ShapeFactory, ShapeInfo } from '../../interface';
|
4 | import Geometry from '../base';
|
5 |
|
6 | interface ElementCfg {
|
7 |
|
8 | shapeFactory: ShapeFactory;
|
9 |
|
10 | container: IGroup;
|
11 |
|
12 | elementIndex?: number;
|
13 |
|
14 | offscreenGroup?: IGroup;
|
15 |
|
16 | visible?: boolean;
|
17 | }
|
18 |
|
19 |
|
20 |
|
21 |
|
22 | export default class Element extends Base {
|
23 |
|
24 | shapeFactory: ShapeFactory;
|
25 |
|
26 | container: IGroup;
|
27 |
|
28 | elementIndex: number;
|
29 |
|
30 | shape: IShape | IGroup;
|
31 |
|
32 | animate: AnimateOption | boolean;
|
33 |
|
34 | geometry: Geometry;
|
35 |
|
36 | labelShape: IGroup[];
|
37 |
|
38 | private shapeType;
|
39 |
|
40 | private model;
|
41 |
|
42 | private data;
|
43 | private states;
|
44 | private statesStyle;
|
45 | private offscreenGroup;
|
46 | constructor(cfg: ElementCfg);
|
47 | /**
|
48 | * 绘制图形。
|
49 | * @param model 绘制数据。
|
50 | * @param isUpdate 可选,是否是更新发生后的绘制。
|
51 | */
|
52 | draw(model: ShapeInfo, isUpdate?: boolean): void;
|
53 | /**
|
54 | * 更新图形。
|
55 | * @param model 更新的绘制数据。
|
56 | */
|
57 | update(model: ShapeInfo): void;
|
58 | /**
|
59 | * 销毁 element 实例。
|
60 | */
|
61 | destroy(): void;
|
62 | /**
|
63 | * 显示或者隐藏 element。
|
64 | * @param visible 是否可见。
|
65 | */
|
66 | changeVisible(visible: boolean): void;
|
67 | /**
|
68 | * 设置 Element 的状态。
|
69 | *
|
70 | * 目前 Element 开放三种状态:
|
71 | * 1. active
|
72 | * 2. selected
|
73 | * 3. inactive
|
74 | *
|
75 | * 这三种状态相互独立,可以进行叠加。
|
76 | *
|
77 | * 这三种状态的样式可在 [[Theme]] 主题中或者通过 `geometry.state()` 接口进行配置。
|
78 | *
|
79 | * ```ts
|
80 | * // 激活 active 状态
|
81 | * setState('active', true);
|
82 | * ```
|
83 | *
|
84 | * @param stateName 状态名
|
85 | * @param stateStatus 是否开启状态
|
86 | */
|
87 | setState(stateName: string, stateStatus: boolean): void;
|
88 | /**
|
89 | * 清空状量态,恢复至初始状态。
|
90 | */
|
91 | clearStates(): void;
|
92 | /**
|
93 | * 查询当前 Element 上是否已设置 `stateName` 对应的状态。
|
94 | * @param stateName 状态名称。
|
95 | * @returns true 表示存在,false 表示不存在。
|
96 | */
|
97 | hasState(stateName: string): boolean;
|
98 | /**
|
99 | * 获取当前 Element 上所有的状态。
|
100 | * @returns 当前 Element 上所有的状态数组。
|
101 | */
|
102 | getStates(): string[];
|
103 | /**
|
104 | * 获取 Element 对应的原始数据。
|
105 | * @returns 原始数据。
|
106 | */
|
107 | getData(): Datum;
|
108 | /**
|
109 | * 获取 Element 对应的图形绘制数据。
|
110 | * @returns 图形绘制数据。
|
111 | */
|
112 | getModel(): ShapeInfo;
|
113 | /**
|
114 | * 返回 Element 元素整体的 bbox,包含文本及文本连线(有的话)。
|
115 | * @returns 整体包围盒。
|
116 | */
|
117 | getBBox(): BBox;
|
118 | private getStatesStyle;
|
119 | private getStateStyle;
|
120 | private getAnimateCfg;
|
121 | private drawShape;
|
122 | private getOffscreenGroup;
|
123 | private setShapeInfo;
|
124 | private syncShapeStyle;
|
125 | private getShapeType;
|
126 | }
|
127 | export {};
|