es-drager
Version:
A draggable, resizable, rotatable component based on vue3
61 lines (60 loc) • 2.04 kB
TypeScript
import { DragData } from './drager';
export type MouseTouchEvent = MouseEvent | TouchEvent;
/**
* 统一处理拖拽事件
* @param onMousemove 鼠标移动处理函数
*/
export declare function setupMove(onMousemove: (e: MouseTouchEvent) => void, onMouseupCb?: (e: MouseTouchEvent) => void): void;
export declare function getXY(e: MouseTouchEvent): {
clientX: number;
clientY: number;
};
export declare const withUnit: (val?: number | string) => string;
export declare const resizableMap: {
n: string;
s: string;
e: string;
w: string;
ne: string;
nw: string;
se: string;
sw: string;
};
export declare const cursorDirectionArray: string[];
export declare const getCursor: (rotateAngle: number, d: string) => string;
export declare const getDotList: (angle?: number, resizeList?: string[]) => any[];
export declare const degToRadian: (deg: number) => number;
export declare const getLength: (x: number, y: number) => number;
export declare const getNewStyle: (type: string, rect: any, deltaW: number, deltaH: number, ratio: number | undefined, minWidth: number, minHeight: number) => {
position: {
centerX: any;
centerY: any;
};
size: {
width: number;
height: number;
};
};
export declare const centerToTL: ({ centerX, centerY, width, height, angle }: any) => DragData;
export declare const formatData: (data: DragData, centerX: number, centerY: number) => {
width: number;
height: number;
left: number;
top: number;
};
/**
* @param diff 移动的距离
* @param grid 网格大小
*/
export declare function calcGrid(diff: number, grid: number): number;
/**
* 检查两个元素是否发生碰撞
* @param element1 拖拽元素
* @param element2 碰撞对象
* @returns
*/
export declare function checkCollision(element1: Element, element2: Element, scaleRatio: number): boolean;
/**
* 获取缩放后得Rect
*/
export declare const getBoundingClientRectByScale: (el: HTMLElement | Element, scaleRatio: number) => DOMRect;