@antv/f6-plugin
Version:
F6 plugin
93 lines (92 loc) • 2.4 kB
TypeScript
import { ShapeStyle } from '@antv/f6-core';
import Base, { IPluginBaseConfig } from '../base';
interface SnapLineConfig extends IPluginBaseConfig {
line?: ShapeStyle;
itemAlignType?: boolean | 'horizontal' | 'vertical' | 'center';
}
export default class SnapLine extends Base {
constructor(props?: SnapLineConfig);
getDefaultCfgs(): {
line: {
stroke: string;
lineWidth: number;
};
/**
* item align type
* @type {String|True|False}
*/
itemAlignType: string;
/**
* tolerance to item force align
* @type {String|True|False}
*/
tolerance: number;
horizontalLines: {};
verticalLines: {};
alignLines: any[];
};
init(): void;
getEvents(): {
'node:dragstart': string;
'node:drag': string;
'node:dragend': string;
};
onDragStart(): void;
onDrag(e: any): void;
onDragEnd(): void;
/**
* 每次开始拖动之前,计算出所有节点在水平和垂直方向上,左中右三条中线,并缓存起来
*
* @param {object} item Node节点
* @memberof AlignLine
*/
initBoxLine(): void;
/**
* 显示AlignLine
*
* @param {object} point 起始点
* @param {object} bbox BBox
* @returns
* @memberof AlignLine
*/
show(point: any, bbox: any): any;
/**
* 拖动拖出中添加辅助线
*
* @param {object} point 起始点
* @param {object} bbox 代理形状的bbox
* @param {object} originPoint 原始点,同point
* @memberof AlignLine
*/
private itemAlign;
/**
* 根据配置项添加辅助线
*
* @param {object} cfg
* @memberof AlignLine
*/
private addAlignLine;
/**
* 获取点到线的距离
*
* @param {array} line [x1, y1, x2, y2] 线的四个点
* @param {object} point 点的x和y坐标点 {x, y}
* @returns
* @memberof AlignLine
*/
private getLineDisObject;
getContainer(): HTMLDivElement;
/**
* 拖动过程中,清楚上次绘制的线
*
* @memberof AlignLine
*/
clearAlignLine(): void;
/**
* 拖动结束时候,情况缓存的节点的辅助线,同时删除绘制的线
*
* @memberof AlignLine
*/
destory(): void;
}
export {};