Files
lan-manager/web/node_modules/@antv/g-base/esm/interfaces.d.ts
openclaw 0a5f6a8047 Initial commit: Lan-manager project code
- Go backend (server/)
- Frontend (web/, server/static/)
- Database and deployment files
- Scripts and docs

Co-Authored-By: 狸花猫/Claude-Qwen3.6-Plus 🐾
2026-04-20 00:52:58 +08:00

529 lines
15 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { ShapeCfg, GroupCfg, ClipCfg, Renderer, Point, ChangeType, AnimateCfg, ElementAttrs, OnFrame, ShapeBase, BBox, ElementFilterFn, Cursor, LooseObject } from './types';
import GraphEvent from './event/graph-event';
export interface ICtor<T> {
new (cfg: any): T;
}
/**
* @interface IObservable
* 可以绑定事件的接口
*/
export interface IObservable {
/**
* 绑定事件
* @param eventName 事件名
* @param callback 回调函数
*/
on(eventName: string, callback: Function): any;
/**
* 移除事件
*/
off(): any;
/**
* 移除事件
* @param eventName 事件名
*/
off(eventName: string): any;
/**
* 移除事件
* @param eventName 事件名
* @param callback 回调函数
*/
off(eventName: string, callback: Function): any;
/**
* 触发事件, trigger 的别名函数
* @param eventName 事件名称
* @param eventObject 参数
*/
emit(eventName: string, eventObject: object): any;
getEvents(): any;
}
/**
* @interface IBase
* 所有图形类公共的接口,提供 get,set 方法
*/
export interface IBase extends IObservable {
cfg: LooseObject;
/**
* 获取属性值
* @param {string} name 属性名
* @return {any} 属性值
*/
get(name: string): any;
/**
* 设置属性值
* @param {string} name 属性名称
* @param {any} value 属性值
*/
set(name: string, value: any): any;
/**
* 是否销毁
* @type {boolean}
*/
destroyed: boolean;
/**
* 销毁对象
*/
destroy(): any;
}
/**
* @interface
* 图形元素的基类
*/
export interface IElement extends IBase {
/**
* 获取父元素
* @return {IContainer} 父元素一般是 Group 或者是 Canvas
*/
getParent(): IContainer;
/**
* 获取所属的 Canvas
* @return {ICanvas} Canvas 对象
*/
getCanvas(): ICanvas;
/**
* 获取 Shape 的基类
* @return {IShape} Shape 的基类,用作工厂方法来获取类实例
*/
getShapeBase(): ShapeBase;
/**
* 获取 Group 的基类,用于添加默认的 Group
* @return {IGroup} group 类型
*/
getGroupBase(): ICtor<IGroup>;
/**
* 当引擎画布变化时,可以调用这个方法,告知 canvas 图形属性发生了改变
* 这个方法一般不要直接调用,在实现 element 的继承类时可以复写
* @param {ChangeType} changeType 改变的类型
*/
onCanvasChange(changeType: ChangeType): any;
/**
* 是否是分组
* @return {boolean} 是否是分组
*/
isGroup(): boolean;
/**
* 从父元素中移除
* @param {boolean} destroy 是否同时销毁
*/
remove(destroy?: boolean): any;
/**
* 获取全量的图形属性
*/
attr(): any;
/**
* 获取图形属性
* @param {string} name 图形属性名
* @returns 图形属性值
*/
attr(name: string): any;
/**
* 设置图形属性
* @param {string} name 图形属性名
* @param {any} value 图形属性值
*/
attr(name: string, value: any): any;
/**
* 设置图形属性
* @param {object} attrs 图形属性配置项,键值对方式
*/
attr(attrs: object): any;
/**
* 获取包围盒,这个包围盒是相对于图形元素自己,不会计算 matrix
* @returns {BBox} 包围盒
*/
getBBox(): any;
/**
* 获取图形元素相对画布的包围盒,会计算从顶层到当前的 matrix
* @returns {BBox} 包围盒
*/
getCanvasBBox(): BBox;
/**
* 复制对象
*/
clone(): IElement;
/**
* 显示
*/
show(): any;
/**
* 隐藏
*/
hide(): any;
/**
* 设置 zIndex
*/
setZIndex(zIndex: number): any;
/**
* 最前面
*/
toFront(): any;
/**
* 最后面
*/
toBack(): any;
/**
* 清除掉所有平移、旋转和缩放
*/
resetMatrix(): any;
/**
* 获取 transform 后的矩阵
* @return {number[]} 矩阵
*/
getMatrix(): number[];
/**
* 设置 transform 的矩阵
* @param {number[]} m 应用到图形元素的矩阵
*/
setMatrix(m: number[]): any;
/**
* 将向量应用设置的矩阵
* @param {number[]} v 向量
*/
applyToMatrix(v: number[]): any;
/**
* 根据设置的矩阵,将向量转换相对于图形/分组的位置
* @param {number[]} v 向量
*/
invertFromMatrix(v: number[]): any;
/**
* 是否处于动画暂停状态
* @return {boolean} 是否处于动画暂停状态
*/
isAnimatePaused(): any;
/**
* 执行动画
* @param {ElementAttrs} toAttrs 动画最终状态
* @param {number} duration 动画执行时间
* @param {string} easing 动画缓动效果
* @param {function} callback 动画执行后的回调
* @param {number} delay 动画延迟时间
*/
animate(toAttrs: ElementAttrs, duration: number, easing?: string, callback?: Function, delay?: number): any;
/**
* 执行动画
* @param {OnFrame} onFrame 自定义帧动画函数
* @param {number} duration 动画执行时间
* @param {string} easing 动画缓动效果
* @param {function} callback 动画执行后的回调
* @param {number} delay 动画延迟时间
*/
animate(onFrame: OnFrame, duration: number, easing?: string, callback?: Function, delay?: number): any;
/**
* 执行动画
* @param {ElementAttrs} toAttrs 动画最终状态
* @param {AnimateCfg} cfg 动画配置
*/
animate(toAttrs: any, cfg: AnimateCfg): any;
/**
* 执行动画
* @param {OnFrame} onFrame 自定义帧动画函数
* @param {AnimateCfg} cfg 动画配置
*/
animate(onFrame: any, cfg: AnimateCfg): any;
/**
* 停止图形的动画
* @param {boolean} toEnd 是否到动画的最终状态
*/
stopAnimate(toEnd?: boolean): any;
/**
* 暂停图形的动画
*/
pauseAnimate(): any;
/**
* 恢复暂停的动画
*/
resumeAnimate(): any;
/**
* 设置 clip ,会在内部转换成对应的图形
* @param {ClipCfg} clipCfg 配置项
*/
setClip(clipCfg: ClipCfg): any;
/**
* 获取 clip clip 对象是一个 Shape
* @returns {IShape} clip 的 Shape
*/
getClip(): IShape;
/**
* 指定的点是否被裁剪掉
* @param {number} refX 相对于图形的坐标 x
* @param {number} refY 相对于图形的坐标 Y
* @return {boolean} 是否被裁剪
*/
isClipped(refX: number, refY: number): boolean;
/**
* 触发委托事件
* @param {string} type 事件类型
* @param {GraphEvent} eventObj 事件对象
*/
emitDelegation(type: string, eventObj: GraphEvent): void;
/**
* 移动元素
* @param {number} translateX x 轴方向的移动距离
* @param {number} translateY y 轴方向的移动距离
* @return {IElement} 元素
*/
translate(translateX: number, translateY?: number): IElement;
/**
* 移动元素到目标位置
* @param {number} targetX 目标位置的 x 轴坐标
* @param {number} targetY 目标位置的 y 轴坐标
* @return {IElement} 元素
*/
move(targetX: number, targetY: number): IElement;
/**
* 移动元素到目标位置,等价于 move 方法。由于 moveTo 的语义性更强,因此在文档中推荐使用 moveTo 方法
* @param {number} targetX 目标位置的 x 轴坐标
* @param {number} targetY 目标位置的 y 轴坐标
* @return {IElement} 元素
*/
moveTo(targetX: number, targetY: number): IElement;
/**
* 缩放元素
* @param {number} ratio 各个方向的缩放比例
* @return {IElement} 元素
*/
scale(ratio: number): IElement;
/**
* 缩放元素
* @param {number} ratioX x 方向的缩放比例
* @param {number} ratioY y 方向的缩放比例
* @return {IElement} 元素
*/
scale(ratioX: number, ratioY: number): IElement;
/**
* 以画布左上角 (0, 0) 为中心旋转元素
* @param {number} radian 旋转角度(弧度值)
* @return {IElement} 元素
*/
rotate(radian: number): IElement;
/**
* 以起始点为中心旋转元素
* @param {number} radian 旋转角度(弧度值)
* @return {IElement} 元素
*/
rotateAtStart(rotate: number): IElement;
/**
* 以任意点 (x, y) 为中心旋转元素
* @param {number} radian 旋转角度(弧度值)
* @return {IElement} 元素
*/
rotateAtPoint(x: number, y: number, rotate: number): IElement;
}
export interface IContainer extends IElement {
/**
* 添加图形
* @param {ShapeCfg} cfg 图形配置项
* @returns 添加的图形对象
*/
addShape(cfg: ShapeCfg): IShape;
/**
* 添加图形
* @param {string} type 图形类型
* @param {ShapeCfg} cfg 图形配置项
* @returns 添加的图形对象
*/
addShape(type: string, cfg: ShapeCfg): IShape;
/**
* 容器是否是 Canvas 画布
*/
isCanvas(): any;
/**
* 添加图形分组,增加一个默认的 Group
* @returns 添加的图形分组
*/
addGroup(): IGroup;
/**
* 添加图形分组,并设置配置项
* @param {GroupCfg} cfg 图形分组的配置项
* @returns 添加的图形分组
*/
addGroup(cfg: GroupCfg): IGroup;
/**
* 添加图形分组,指定类型
* @param {IGroup} classConstructor 图形分组的构造函数
* @param {GroupCfg} cfg 图形分组配置项
* @returns 添加的图形分组
*/
addGroup(classConstructor: IGroup, cfg: GroupCfg): IGroup;
/**
* 根据 x,y 获取对应的图形
* @param {number} x x 坐标
* @param {number} y y 坐标
* @param {Event} 浏览器事件对象
* @returns 添加的图形分组
*/
getShape(x: number, y: number, ev: Event): IShape;
/**
* 添加图形元素,已经在外面构造好的类
* @param {IElement} element 图形元素(图形或者分组)
*/
add(element: IElement): any;
/**
* 获取父元素
* @return {IContainer} 父元素一般是 Group 或者是 Canvas
*/
getParent(): IContainer;
/**
* 获取所有的子元素
* @return {IElement[]} 子元素的集合
*/
getChildren(): IElement[];
/**
* 子元素按照 zIndex 进行排序
*/
sort(): any;
/**
* 清理所有的子元素
*/
clear(): any;
/**
* 获取第一个子元素
* @return {IElement} 第一个元素
*/
getFirst(): IElement;
/**
* 获取最后一个子元素
* @return {IElement} 元素
*/
getLast(): IElement;
/**
* 根据索引获取子元素
* @return {IElement} 第一个元素
*/
getChildByIndex(index: number): IElement;
/**
* 子元素的数量
* @return {number} 子元素数量
*/
getCount(): number;
/**
* 是否包含对应元素
* @param {IElement} element 元素
* @return {boolean}
*/
contain(element: IElement): boolean;
/**
* 移除对应子元素
* @param {IElement} element 子元素
* @param {boolean} destroy 是否销毁子元素,默认为 true
*/
removeChild(element: IElement, destroy?: boolean): any;
/**
* 查找所有匹配的元素
* @param {ElementFilterFn} fn 匹配函数
* @return {IElement[]} 元素数组
*/
findAll(fn: ElementFilterFn): IElement[];
/**
* 查找元素,找到第一个返回
* @param {ElementFilterFn} fn 匹配函数
* @return {IElement|null} 元素,可以为空
*/
find(fn: ElementFilterFn): IElement;
/**
* 根据 ID 查找元素
* @param {string} id 元素 id
* @return {IElement | null} 元素
*/
findById(id: string): IElement;
/**
* 该方法即将废弃,不建议使用
* 根据 className 查找元素
* TODO: 该方法暂时只给 G6 3.3 以后的版本使用,待 G6 中的 findByClassName 方法移除后G 也需要同步移除
* @param {string} className 元素 className
* @return {IElement | null} 元素
*/
findByClassName(className: string): IElement;
/**
* 根据 name 查找元素列表
* @param {string} name 元素名称
* @return {IElement[]} 元素
* 是否是实体分组,即对应实际的渲染元素
* @return {boolean} 是否是实体分组
*/
findAllByName(name: string): IElement[];
}
export interface IGroup extends IElement, IContainer {
/**
* 是否是实体分组,即对应实际的渲染元素
* @return {boolean} 是否是实体分组
*/
isEntityGroup(): boolean;
}
export interface IShape extends IElement {
/**
* 图形拾取
* @param {number} x x 坐标
* @param {number} y y 坐标
* @returns 是否已被拾取
*/
isHit(x: number, y: number): boolean;
/**
* 是否用于 clip, 默认为 false
* @return {boolean} 图形是否用于 clip
*/
isClipShape(): boolean;
}
/**
* @interface ICanvas
* 画布,图形的容器
*/
export interface ICanvas extends IContainer {
/**
* 获取当前的渲染引擎
* @return {Renderer} 返回当前的渲染引擎
*/
getRenderer(): Renderer;
/**
* 为了兼容持续向上查找 parent
* @return {IContainer} 返回元素的父容器,在 canvas 中始终是 null
*/
getParent(): IContainer;
/**
* 获取画布的 cursor 样式
* @return {Cursor}
*/
getCursor(): Cursor;
/**
* 设置画布的 cursor 样式
* @param {Cursor} cursor cursor 样式
*/
setCursor(cursor: Cursor): any;
/**
* 改变画布大小
* @param {number} width 宽度
* @param {number} height 高度
*/
changeSize(width: number, height: number): any;
/**
* 根据事件对象获取画布坐标
* @param {Event} ev 事件对象
* @return {object} 画布坐标
*/
getPointByEvent(ev: Event): Point;
/**
* 根据事件对象获取窗口坐标
* @param {Event} ev 事件对象
* @return {object} 窗口坐标
*/
getClientByEvent(ev: Event): Point;
/**
* 将窗口坐标转变成画布坐标
* @param {number} clientX 窗口 x 坐标
* @param {number} clientY 窗口 y 坐标
* @return {object} 画布坐标
*/
getPointByClient(clientX: number, clientY: number): Point;
/**
* 将 canvas 坐标转换成窗口坐标
* @param {number} x canvas 上的 x 坐标
* @param {number} y canvas 上的 y 坐标
* @returns {object} 窗口坐标
*/
getClientByPoint(x: number, y: number): Point;
/**
* 绘制
*/
draw(): any;
}