@logicflow/core
Version:
LogicFlow, help you quickly create flowcharts
107 lines (106 loc) • 3.48 kB
TypeScript
import { createElement as h, Component } from 'preact/compat';
import LogicFlow from '../LogicFlow';
import { IDragParams, StepDrag } from '../util';
import { BaseNodeModel, GraphModel } from '../model';
import NodeData = LogicFlow.NodeData;
import VectorData = LogicFlow.VectorData;
import ResizeNodeData = ResizeControl.ResizeNodeData;
import ResizeInfo = ResizeControl.ResizeInfo;
import ControlItemProps = ResizeControl.ControlItemProps;
export declare enum ResizeControlIndex {
LEFT_TOP = 0,
RIGHT_TOP = 1,
RIGHT_BOTTOM = 2,
LEFT_BOTTOM = 3
}
export type IResizeControlProps = {
model: BaseNodeModel;
graphModel: GraphModel;
} & ControlItemProps;
export type IResizeControlState = {
startX: number;
startY: number;
endX: number;
endY: number;
dragging: boolean;
};
export declare class ResizeControl extends Component<IResizeControlProps, IResizeControlState> {
readonly index: ResizeControlIndex;
readonly nodeModel: BaseNodeModel;
readonly graphModel: GraphModel;
readonly dragHandler: StepDrag;
private isShiftPressed;
constructor(props: IResizeControlProps);
bindKeyboardEvents: () => void;
handleKeyDown: (event: KeyboardEvent) => void;
handleKeyUp: (event: KeyboardEvent) => void;
componentWillUnmount(): void;
updateEdgePointByAnchors: () => void;
triggerResizeEvent: (preNodeData: ResizeNodeData, curNodeData: ResizeNodeData, deltaX: any, deltaY: any, index: any, nodeModel: BaseNodeModel) => void;
/**
* 计算 Control 拖动后,节点的高度信息
* @param index
* @param resizeInfo
* @param pct
* @param freezeWidth
* @param freezeHeight
*/
recalcResizeInfo: (index: ResizeControlIndex, resizeInfo: ResizeInfo, pct?: number, freezeWidth?: boolean, freezeHeight?: boolean) => ResizeInfo;
resizeNode: ({ deltaX, deltaY }: VectorData) => void;
onDragStart: () => void;
onDragging: ({ deltaX, deltaY }: IDragParams) => void;
onDragEnd: () => void;
render(): h.JSX.Element;
}
interface IResizeControlGroupProps {
style: LogicFlow.CommonTheme;
model: BaseNodeModel;
graphModel: GraphModel;
}
export declare class ResizeControlGroup extends Component<IResizeControlGroupProps> {
constructor();
getResizeControl(): h.JSX.Element[];
getResizeOutline(): h.JSX.Element;
render(): h.JSX.Element;
}
export declare namespace ResizeControl {
type RectShapeResizeProps = {
width: number;
height: number;
};
type PolygonShapeResizerProps = {
rx: number;
ry: number;
};
type ResizeProps = RectShapeResizeProps | PolygonShapeResizerProps;
type ResizeInfo = {
width: number;
height: number;
deltaX: number;
deltaY: number;
PCTResizeInfo?: PCTResizeParams;
};
type ResizeNodeData = NodeData & Partial<ResizeProps>;
type Direction = 'nw' | 'n' | 'ne' | 'e' | 'se' | 's' | 'sw' | 'w';
type ControlItemProps = {
index: ResizeControlIndex;
direction: Direction;
x: number;
y: number;
};
type PCTResizeParams = {
ResizePCT: {
widthPCT: number;
heightPCT: number;
};
ResizeBasis: {
basisWidth: number;
basisHeight: number;
};
ScaleLimit: {
maxScaleLimit: number;
minScaleLimit: number;
};
};
}
export default ResizeControlGroup;