/** * Copyright (c) 2019-present Houfeng * @author Houfeng */ import React from "react"; import { PureComponent } from "../Component"; import { IStageContext } from "../Stage/IStageContext"; import { IRect, IMouseInfo, IPoint } from "vector-helper"; import { ITouchEvent } from "mota-touch"; /** * 图形基类 * 所有 Shape、Handler 都继承于此类 */ export declare class Graph

extends PureComponent { /** * 上下文对象类型(React 的 contextType API) */ static contextType: React.Context; /** * 下文文件对象类型(TypeScript 类型声明) */ context: IStageContext; /** * 当前 Graph 对应的原生元素 */ element: Element; /** * 设定当前 Graph 的 element */ setElement: (element: Element) => void; /** * 当前 Graph 的模型实例 */ model: any; /** * 获取当前 Stage 模型实例 */ get stage(): import("..").StageModel; /** * 获取当前的 scene 模型实例 */ get scene(): import("..").SceneModel; /** * 当前 selection 实例 */ get selection(): import("..").Selection; /** * 撤销&重做管理器 */ get commandManager(): import("..").CommandManager; /** * 当时上文是否为 readonly (通常用于缩略图和播放时) */ get readOnly(): boolean; /** * 将一个鼠标坐标转换为相对于 stage 的位置坐标 * @param event 鼠标事件对象 */ protected mouseToPoint(event: IMouseInfo): IPoint; /** * 获取原生事件对象上的 path 属性 */ protected getNativeEventPath(event: any): any; /** * 检查鼠标是否在 Handler (控制手柄) 上 * @param event 鼠标事件对象 */ protected inHandler(event: React.MouseEvent | ITouchEvent): boolean; /** * 检查鼠标是否在指定元素上 * @param event 事件对象 * @param element 目标元素(少略时为当前 Graph 对应的 element) */ protected inElement(event: React.MouseEvent | ITouchEvent, element?: Element): boolean; /** * 检查鼠标是否在设计器的控件区域(工具条、侧面板等) * @param event 事件对象 */ protected inControl(event: React.MouseEvent | ITouchEvent): boolean; /** * 检查鼠标是否在舞台所在的工作空间 * @param event 事件对象 */ protected inSpace(event: React.MouseEvent | ITouchEvent): boolean; /** * 检查鼠标是否在指定的区域 * @param event 事件对象 * @param rect 目标 Rect (默认为当前 Graph) */ protected inRect(event: React.MouseEvent | ITouchEvent, rect?: IRect): boolean; /** * 检查鼠标是否在任意活动状态的 Shape 上 * @param event 事件对象 */ protected inActives(event: React.MouseEvent | ITouchEvent): boolean; /** * 检查鼠标是否在任意选中状态的 Shape 上 * @param event 事件对象 */ protected inSelecteds(event: React.MouseEvent | ITouchEvent): boolean; /** * 检查鼠标是否在正在编辑的 Shape 上 * @param event 事件对象 */ protected inEditing(event: React.MouseEvent | ITouchEvent): boolean; }