@antv/x6
Version:
JavaScript diagramming library that uses SVG and HTML for rendering
116 lines (115 loc) • 4.09 kB
TypeScript
import type { Dom, KeyValue } from '../../common';
import type { PointLike } from '../../geometry';
import type { Cell, Edge, LabelPositionOptions, TerminalData, TerminalType } from '../../model';
import type { CellView } from '../cell';
import type { CellViewHighlightOptions, CellViewMouseDeltaEventArgs, CellViewOptions, CellViewPositionEventArgs } from '../cell/type';
import type { EdgeView } from '.';
export interface EdgeViewOptions extends CellViewOptions {
}
export interface EdgeViewMouseEventArgs<E> {
e: E;
edge: Edge;
cell: Edge;
view: EdgeView;
}
export interface EdgeViewPositionEventArgs<E> extends EdgeViewMouseEventArgs<E>, CellViewPositionEventArgs {
}
export interface EdgeViewEventArgs {
'edge:click': EdgeViewPositionEventArgs<Dom.ClickEvent>;
'edge:dblclick': EdgeViewPositionEventArgs<Dom.DoubleClickEvent>;
'edge:contextmenu': EdgeViewPositionEventArgs<Dom.ContextMenuEvent>;
'edge:mousedown': EdgeViewPositionEventArgs<Dom.MouseDownEvent>;
'edge:mousemove': EdgeViewPositionEventArgs<Dom.MouseMoveEvent>;
'edge:mouseup': EdgeViewPositionEventArgs<Dom.MouseUpEvent>;
'edge:mouseover': EdgeViewMouseEventArgs<Dom.MouseOverEvent>;
'edge:mouseout': EdgeViewMouseEventArgs<Dom.MouseOutEvent>;
'edge:mouseenter': EdgeViewMouseEventArgs<Dom.MouseEnterEvent>;
'edge:mouseleave': EdgeViewMouseEventArgs<Dom.MouseLeaveEvent>;
'edge:mousewheel': EdgeViewPositionEventArgs<Dom.EventObject> & CellViewMouseDeltaEventArgs;
'edge:customevent': EdgeViewPositionEventArgs<Dom.MouseDownEvent> & {
name: string;
};
'edge:unhandled:mousedown': EdgeViewPositionEventArgs<Dom.MouseDownEvent>;
'edge:connected': {
e: Dom.MouseUpEvent;
edge: Edge;
view: EdgeView;
isNew: boolean;
type: TerminalType;
previousCell?: Cell | null;
previousView?: CellView | null;
previousPort?: string | null;
previousPoint?: PointLike | null;
previousMagnet?: Element | null;
currentCell?: Cell | null;
currentView?: CellView | null;
currentPort?: string | null;
currentPoint?: PointLike | null;
currentMagnet?: Element | null;
};
'edge:highlight': {
magnet: Element;
view: EdgeView;
edge: Edge;
cell: Edge;
options: CellViewHighlightOptions;
};
'edge:unhighlight': EdgeViewEventArgs['edge:highlight'];
'edge:move': EdgeViewPositionEventArgs<Dom.MouseMoveEvent>;
'edge:moving': EdgeViewPositionEventArgs<Dom.MouseMoveEvent>;
'edge:moved': EdgeViewPositionEventArgs<Dom.MouseUpEvent>;
}
export type MousemoveEventData = {};
export interface EventDataEdgeDragging {
action: 'drag-edge';
moving: boolean;
x: number;
y: number;
}
export type EventDataValidateConnectionArgs = [
CellView | null | undefined,
// source view
Element | null | undefined,
// source magnet
CellView | null | undefined,
// target view
Element | null | undefined,
TerminalType,
EdgeView
];
export interface EventDataArrowheadDragging {
action: 'drag-arrowhead';
x: number;
y: number;
isNewEdge: boolean;
terminalType: TerminalType;
fallbackAction: 'remove' | 'revert';
initialMagnet: Element | null;
initialTerminal: TerminalData;
getValidateConnectionArgs: (cellView: CellView, magnet: Element | null) => EventDataValidateConnectionArgs;
zIndex?: number | null;
pointerEvents?: string | null;
/**
* Current event target.
*/
currentTarget?: Element;
/**
* Current view under pointer.
*/
currentView?: CellView | null;
/**
* Current magnet under pointer.
*/
currentMagnet?: Element | null;
closestView?: CellView | null;
closestMagnet?: Element | null;
marked?: KeyValue<Element[]> | null;
options?: KeyValue;
}
export interface EventDataLabelDragging {
action: 'drag-label';
index: number;
positionAngle: number;
positionArgs?: LabelPositionOptions | null;
stopPropagation: true;
}