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