import { createElement as h, Component } from 'preact/compat';
import LogicFlow from '../../LogicFlow';
import { GraphModel, BaseEdgeModel } from '../../model';
import ArrowInfo = LogicFlow.ArrowInfo;
import Point = LogicFlow.Point;
type IProps = {
model: BaseEdgeModel;
graphModel: GraphModel;
};
export type IEdgeState = {
hover: boolean;
};
export declare abstract class BaseEdge
extends Component
{
static isObserved: boolean;
static extendsKey?: string;
mouseUpDrag?: boolean;
startTime?: number;
contextMenuTime?: number;
clickTimer?: number;
longPressTimer?: number;
textRef: import("preact").RefObject;
constructor();
/**
* 不支持重写,请使用getEdge
*/
getShape(): h.JSX.Element;
/**
* @deprecated 请使用model.getTextStyle
*/
getTextStyle(): void;
/**
* @overridable 可重写,自定义边文本DOM
*/
getText(): h.JSX.Element | null;
/**
* @deprecated
*/
getArrowInfo(): ArrowInfo;
getLastTwoPoints(): [Point, Point];
/**
* @deprecated 请使用model.getArrowStyle
*/
getArrowStyle(): null;
/**
* 定义边的箭头,不支持重写。请使用getStartArrow和getEndArrow
*/
private getArrow;
/**
* Private helper method to generate arrow path based on type and parameters
*/
private getArrowPath;
/**
* @overridable 可重写,自定义边起点箭头形状。
* @example
* getStartArrow() {
* const { model } = this.props;
* const { stroke, strokeWidth, offset, verticalLength } = model.getArrowStyle();
* return (
* h('path', {
* d: ''
* })
* )
* }
*/
getStartArrow(): h.JSX.Element | null;
/**
* @overridable 可重写,自定义边终点箭头形状。
* @example
* getEndArrow() {
* const { model } = this.props;
* const { stroke, strokeWidth, offset, verticalLength } = model.getArrowStyle();
* return (
* h('path', {
* d: ''
* })
* )
* }
*/
getEndArrow(): h.JSX.Element | null;
/**
* @overridable 可重写,自定义调整边连接节点形状。在开启了adjustEdgeStartAndEnd的时候,会显示调整点。
* @param x 调整点x坐标
* @param y 调整点y坐标
* @param model
* @example
* getAdjustPointShape(x, y) {
* const { model } = this.props;
* const style = model.getAdjustPointStyle();
* return (
* h('circle', {
* ...style,
* x,
* y
* })
* )
* }
*/
getAdjustPointShape(x: number, y: number, model: BaseEdgeModel): h.JSX.Element | null;
/**
* 不支持重写。请使用getAdjustPointShape
*/
private getAdjustPoints;
/**
* @deprecated
*/
getAnimation(): void;
/**
* @overridable 可重写,在完全自定义边的时候,可以重写此方法,来自定义边的选区。
*/
getAppendWidth(): h.JSX.Element;
/**
* 不建议重写,此方法为扩大边选区,方便用户点击选中边。
* 如果需要自定义边选区,请使用getAppendWidth。
*/
getAppend(): h.JSX.Element;
/**
* 不支持重写,如果想要基于hover状态设置不同的样式,请在model中使用isHovered属性。
*/
handleHover: (hovered: boolean, ev: MouseEvent) => void;
/**
* 不支持重写,如果想要基于hover状态设置不同的样式,请在model中使用isHovered属性。
*/
setHoverOn: (ev: MouseEvent) => void;
/**
* 不支持重写,如果想要基于hover状态设置不同的样式,请在model中使用isHovered属性。
*/
setHoverOff: (ev: MouseEvent) => void;
/**
* 不支持重写,如果想要基于contextmenu事件做处理,请监听edge:contextmenu事件。
*/
handleContextMenu: (ev: MouseEvent) => void;
/**
* 不支持重写
*/
handleMouseDown: (e: PointerEvent) => void;
handleMouseUp: () => void;
/**
* 不支持重写
*/
handleClick: (e: MouseEvent) => void;
handleFocus: () => void;
handleBlur: () => void;
/**
* @overridable 支持重写, 此方法为获取边的形状,如果需要自定义边的形状,请重写此方法。
* @example https://docs.logic-flow.cn/docs/#/zh/guide/basic/edge?id=%e5%9f%ba%e4%ba%8e-react-%e7%bb%84%e4%bb%b6%e8%87%aa%e5%ae%9a%e4%b9%89%e8%be%b9
*/
getEdge(): h.JSX.Element | null;
/**
* @overridable 支持重写, 此方法为边在被选中时将其置顶,如果不需要此功能,可以重写此方法。
*/
toFront(): void;
/**
* 不建议重写,如果要自定义边的形状,请重写getEdge方法。
*/
render(): h.JSX.Element;
}
export default BaseEdge;